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


HSPTV!掲示板


未解決 解決 停止 削除要請

2015
1002
ポチ変数の状態で画像ボタンを変えるにはどうしたら良いでしょうか?5解決


ポチ

リンク

2015/10/2(Fri) 11:22:10|NO.72081

変数の状態で画像ボタンを変えるにはどうしたら良いでしょうか?
下のスクリプトで"Reflesh"ボタンを押さずに変数を監視してボタンの画像を自動的に変えたいのですが・・・
上手く行きません。
ご助言をお願い致します。

x=0 buffer 1,60,20 color 255,0,0 boxf color 125,0,0 boxf 20,0,40,20 color 195,0,0 boxf 40,0,60,20 buffer 2,60,20 color 0,0,255 boxf color 0,0,125 boxf 20,0,40,20 color 0,0,195 boxf 40,0,60,20 buffer 3,180,30 color 255,255,255 boxf color 105,105,105 boxf 60,0,120,30 color 195,195,195 boxf 120,0,180,30 gsel 0 cls objsize 20,20 chkbox "",x *start if x=0{ objsize 20,20 pos 0,20 objimage 1,0,0,20,0,40,0 button gosub "",*open1 id=stat } if x=1{ objsize 20,20 pos 0,20 objimage 2,0,0,20,0,40,0 button gosub "",*open2 id=stat } pos 0,40 objsize 60,30 objimage 3,0,0,60,0,180,0 button "Reflesh",*reflesh stop *reflesh clrobj id goto *start *open1 wait 200 return *open2 wait 200 return



この記事に返信する


沢渡

リンク

2015/10/2(Fri) 11:56:14|NO.72082

こんな感じで無限ループを作り、チェックボックスの内容を調べるようにしてみました。


x=0 buffer 1,60,20 color 255,0,0 boxf color 125,0,0 boxf 20,0,40,20 color 195,0,0 boxf 40,0,60,20 buffer 2,60,20 color 0,0,255 boxf color 0,0,125 boxf 20,0,40,20 color 0,0,195 boxf 40,0,60,20 gsel 0 cls objsize 20,20 chkbox "",x x0=x objsize 20,20 gosub *set_button repeat if x0!=x : clrobj id : gosub *set_button await 1000/30 //秒間30回もチェックしなくても大丈夫かも loop *set_button if x=0{ objimage 1,0,0,20,0,40,0 pos 0,20 button gosub "",*open1 id=stat } if x=1{ objimage 2,0,0,20,0,40,0 pos 0,20 button gosub "",*open2 id=stat } x0=x return *open1 color 255,255,255 : boxf : color 0,0,0 pos 0,40 : mes "赤ボタンを押したよ" return *open2 color 255,255,255 : boxf : color 0,0,0 pos 0,40 : mes "青ボタンを押したよ" return

こちら↓にはoncmdを使った「チェックボックスが変更されるたびに割り込みを発生させる」
という方法がありましたが、やってみたところ、
「割り込みが発生する→チェックボックスの内容が変数に反映される」という処理順序のようで、
上手くいきませんでした。
http://hsp.tv/play/pforum.php?mode=pastwch&num=49657



ポチ

リンク

2015/10/2(Fri) 12:07:12|NO.72083

ありがとうございます(=^・^=)
早速使わせて頂きます。



kanamaru

リンク

2015/10/2(Fri) 12:36:58|NO.72084

無限ループは処理が重くなるもとになると思います。
やっぱりoncmdを使うのが一番です。
確かに変数の反映は割り込みの前ですが、
http://hsp.tv/play/pforum.php?mode=all&num=71950
のように、チェックボックスの選択項目を自前で取得することによって
対応することができます。
といっても掲示したURLではリストボックスで、
スクリプトをそのままは使えませんが。



沢渡

リンク

2015/10/2(Fri) 14:30:33|NO.72085

なるほど。sendmsgとかは全然知らないので調べながら作りましたが、こんな感じでしょうか。


x=0 x0=0 buffer 1,60,20 color 255,0,0 boxf color 125,0,0 boxf 20,0,40,20 color 195,0,0 boxf 40,0,60,20 buffer 2,60,20 color 0,0,255 boxf color 0,0,125 boxf 20,0,40,20 color 0,0,195 boxf 40,0,60,20 gsel 0 cls objsize 20,20 chkbox "",dummy ch_hnd=objinfo(stat,2) objsize 20,20 gosub *set_button oncmd gosub *ch_cli,$111 stop *ch_cli if lparam=ch_hnd { sendmsg ch_hnd,$F2 x=stat&1 if x!=x0 : clrobj id : gosub *set_button } return *set_button if x=0{ objimage 1,0,0,20,0,40,0 pos 0,20 button gosub "",*open1 id=stat } if x=1{ objimage 2,0,0,20,0,40,0 pos 0,20 button gosub "",*open2 id=stat } x0=x return *open1 color 255,255,255 : boxf : color 0,0,0 pos 0,40 : mes "赤ボタンを押したよ" return *open2 color 255,255,255 : boxf : color 0,0,0 pos 0,40 : mes "青ボタンを押したよ" return

参考:http://lhsp.s206.xrea.com/hsp_sendmsg2.html



ポチ

リンク

2015/10/2(Fri) 14:54:04|NO.72086

沢渡さま早いですね!!わたしも調べていたのですが・・・。
kanamaruさま素晴らしいヒントをありがとうございます。



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