HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2008
0315
Tommybuttonによるジャンプを無効にしたいっす7解決


Tommy

リンク

2008/3/15(Sat) 18:00:57|NO.14278

いつもありがとうございます.
また,質問させてください.

button文で表示されるボタンの機能を
ある条件下でオフにして,できれば文字の色も
変更したいと考えてます.あとボタンをクリック
しても反応ないようにしたいと思ってます.

プログラムを作成してみたのですが,
うまく反応してくれませんでした.
buttonの背景の画像を表示させる方法も
ありますが,たくさんのbotton文をobjsizeで
幅があるため,簡単にbutton文が使えればと
思って質問しました.

<例>

width 50,50
input a
button "入力", *AA
STOP

*AA
cls
mes "結果"
color 0,0,255
if a=1 : button"次へ",*AA
color 0,0,0
button"次へ",*BB

STOP
*BB
cls
width 50,50
mes "OK"
STOP

上記では,buttonの文字色はそのままで,
クリックもできてしまいます.
ご助言お願いします.m(__)m



この記事に返信する


HT

リンク

2008/3/15(Sat) 18:56:30|NO.14280

clrobj



f

リンク

2008/3/15(Sat) 19:16:43|NO.14282

gosubにして、不使用時は即returnすれば良いんでね。



Tommy

リンク

2008/3/15(Sat) 22:05:49|NO.14287

HTさん,fさん,回答ありがとうございました.
gosub使用する方法は,簡単で便利ですね.
あと,clrobjは,こんないい機能があったとは.
勉強になりました.

ボタンの無効化は,gosubでできそうですが,ボタンを
表示した状態にして,文字の色を変更したいと考えてます.
使用者に,他の条件では「ボタンがあって押せるんだよ」
と伝えたいためです.
ボタン内の文字色は,変更できないのでしょうか?

<改善例>
width 50,100
input a
button "入力", *AA
STOP

*AA
cls
mes "結果"
color 0,0,255
pos 0,20
if a=1 : color 255,255,255 : button gosub "Yes",*AA1
button gosub "Yes",*BB
pos 0,45 : button"No",*BB

STOP

*AA1
return

*BB
cls
width 50,50
mes "End"
STOP



a

リンク

2008/3/15(Sat) 23:18:02|NO.14292

WinAPIのEnableWindow使うのはどうですか?

#include "user32.as" button gosub "aaaaa", *btn1 : oi_btn1 = stat button gosub "無効化", *btn2 button gosub "有効化", *btn3 stop *btn1 dialog "aaaaa" return *btn2 EnableWindow objinfo_hwnd(oi_btn1), 0 return *btn3 EnableWindow objinfo_hwnd(oi_btn1), 1 return



osakana

リンク

2008/3/16(Sun) 03:37:45|NO.14301

HSPとは別に導入しないといけませんが
llmod3 というモジュールを使うと簡単ですよ。
llmod3配布元:http://www.s-software.net/

#include "llmod3.hsp" #include "obj.hsp" button "切り替え", *BTN button "対象ボタン", *@f id = stat stop *BTN objgray id, -1 objgray id, stat = 0 stop *@
ちなみにAPIを使う場合、
IsWindowEnabled で 有効/無効 の状態を
取得する事ができます。

#uselib "user32.dll" #func EnableWindow "EnableWindow" sptr,sptr #cfunc IsWindowEnabled "IsWindowEnabled" sptr button "切り替え", *BTN button "対象ボタン", *@f hbtn = objinfo(stat,2) stop *BTN EnableWindow hbtn, IsWindowEnabled(hbtn) = 0 stop *@



Tommy

リンク

2008/3/16(Sun) 19:20:39|NO.14324

aさん,ありがとうございました.(^○^)
要望してた内容でした.なんとか組み込めそうです.

付属のヘルプでEnableWindowを探してみたのですが,
情報がなく,正確な定義がつかめていないような気がします.
もし,定義が記載されているものがあれば,紹介して頂きたく
お願いします.

<a=1のときは,*ENDに進めない場合の例>
a=1
button "文章", *END : ボタン名(?) = stat
if a=1 : EnableWindow objinfo_hwnd(ボタン名), 0 ←(0=オフ,1=オン)



a

リンク

2008/3/16(Sun) 20:33:56|NO.14328

EnableWindow は、Winodws APIなので、附属のヘルプには載ってないです。
http://yokohama.cool.ne.jp/chokuto/urawaza/api/EnableWindow.html
http://msdn.microsoft.com/library/ja/jpwinui/html/_win32_enablewindow.asp?frame=true

それと・・・
button命令を行うと、statに、今作ったボタンのオブジェクトIDが代入されます。
そして、objinfo_hwndマクロやobjinfo命令で、オブジェクトIDから、オブジェクトのウインドウハンドルが得られます。



ONION software Copyright 1997-2021(c) All rights reserved.