|
|
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
ありがとうございます(=^・^=)
早速使わせて頂きます。
|
|
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さま素晴らしいヒントをありがとうございます。
|
|