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


HSPTV!掲示板


未解決 解決 停止 削除要請

2013
1017
はるチェックボックスのログの取り方2未解決


はる

リンク

2013/10/17(Thu) 12:57:43|NO.57647

実験用のプログラミングでチェックボックスを使用し、そのログをデータとしてとっています。
4つのチェックボックスのうち、一つしか押せないように設定することはできたのですが、ログを見てみると
例えばAを押してからBを押しなおした場合(画面上ではBしか選択されていない場合)のログの結果が
AとB両方押したように表記されてしまいます。
どのようになおせば良いでしょうか?
よろしくお願い致します!

;チェックボックスが表示されるページ
*start
cls
picload"select.jpg"
;4つの選択肢の設定
p1=0
p2=0
p3=0
p4=0
;ボタンの表示
pos 450,230
chkbox"A",p1
sendmsg objinfo(stat,2),$F4,$9
pos 650,230
chkbox"B",p2
sendmsg objinfo(stat,2),$F4,$9
pos 850,230
chkbox"C",p3
sendmsg objinfo(stat,2),$F4,$9
pos 1060,230
chkbox"D",p4
sendmsg objinfo(stat,2),$F4,$9
;所持金の表示
pos 520,575
font"MSPゴシック",45,0
mes pocketmoney
;残りの賭け回数の表示
pos 500,655
mes game

pos 1000,642
button"実行",*gonext
;ボタン押し忘れ警告文字のサイズ
font"MSPゴシック",20,1
stop

;チェックボックスのデータをデータとして出力するページ
(出力結果は押されたボタンが1、押されなかったボタンが0として0001のように提示されます。)
*gowarning
;警告提示時間計測開始
await
timeA=timegettime()
cls
;【警告条件を出力】
;選択した掛けを出力
p1=str(p1)
noteadd p1
p2=str(p2)
noteadd p2
p3=str(p3)
noteadd p3
p4=str(p4)
noteadd p4
picload"warning1_1.jpg"
pos 750,425
button"戻る",*start2
pos 750,468
button"実行",*winpage3
stop



この記事に返信する


MillkeyStars

リンク

2013/10/17(Thu) 13:47:56|NO.57648

表示上では、ちゃんとどれか一つで、データ上では、ちゃんと一つになっていないって事は
たぶん、表示上だけを書き換えたはいいけど、p1 などの内部をちゃんと書き換えられてないってことかな。

下記サンプル

#const WM_COMMAND 0x0111 #const BM_SETCHECK 0x00F1 #const BST_UNCHECKED 0x0000 #const BST_CHECKED 0x0001 title "チェックボックステスト" oncmd gosub *wm_cmm,WM_COMMAND //テスト用表示状態データ a1 = 0 a2 = 1 a3 = 1 a4 = 1 //ここまで pos 0,0 : chkbox "A1",a1 : a1_objID = stat : a1_hwnd = objinfo(a1_objID,2) pos 0,30 : chkbox "A2",a2 : a2_objID = stat : a2_hwnd = objinfo(a2_objID,2) pos 0,60 : chkbox "A3",a3 : a3_objID = stat : a3_hwnd = objinfo(a3_objID,2) pos 0,90 : chkbox "A4",a4 : a4_objID = stat : a4_hwnd = objinfo(a4_objID,2) mes "A1 WindowHandle : "+a1_hwnd mes "A2 WindowHandle : "+a2_hwnd mes "A3 WindowHandle : "+a3_hwnd mes "A4 WindowHandle : "+a4_hwnd button gosub "状況確認",*ViewDialog stop *ViewDialog Output_String = strf("%d%d%d%d",a1,a2,a3,a4) dialog "A1 ="+a1+"\nA2 ="+a2+"\nA3 ="+a3+"\nA4 ="+a4+"\n\n出力データ\n"+Output_String,0,"ボタンの状況" return *wm_cmm //A1 チェック制御 if (( a1_hwnd == lparam )&&( iparam == 273 )){ if (a2 == 1) : a2 = 0 : sendmsg a2_hwnd,BM_SETCHECK,BST_UNCHECKED,0 if (a3 == 1) : a3 = 0 : sendmsg a3_hwnd,BM_SETCHECK,BST_UNCHECKED,0 if (a4 == 1) : a4 = 0 : sendmsg a4_hwnd,BM_SETCHECK,BST_UNCHECKED,0 } //A2 チェック制御 if (( a2_hwnd == lparam )&&( iparam == 273 )){ if (a1 == 1) : a1 = 0 : sendmsg a1_hwnd,BM_SETCHECK,BST_UNCHECKED,0 if (a3 == 1) : a3 = 0 : sendmsg a3_hwnd,BM_SETCHECK,BST_UNCHECKED,0 if (a4 == 1) : a4 = 0 : sendmsg a4_hwnd,BM_SETCHECK,BST_UNCHECKED,0 } //A3 チェック制御 if (( a3_hwnd == lparam )&&( iparam == 273 )){ if (a1 == 1) : a1 = 0 : sendmsg a1_hwnd,BM_SETCHECK,BST_UNCHECKED,0 if (a2 == 1) : a2 = 0 : sendmsg a2_hwnd,BM_SETCHECK,BST_UNCHECKED,0 if (a4 == 1) : a4 = 0 : sendmsg a4_hwnd,BM_SETCHECK,BST_UNCHECKED,0 } //A4 チェック制御 if (( a4_hwnd == lparam )&&( iparam == 273 )){ if (a1 == 1) : a1 = 0 : sendmsg a1_hwnd,BM_SETCHECK,BST_UNCHECKED,0 if (a2 == 1) : a2 = 0 : sendmsg a2_hwnd,BM_SETCHECK,BST_UNCHECKED,0 if (a3 == 1) : a3 = 0 : sendmsg a3_hwnd,BM_SETCHECK,BST_UNCHECKED,0 } return

チェックボックス入力の判定側で、ちゃんと p1 (上記スクリプト上では、a1) などに 0 未チェックを設定
してあげるといい。



fortunehill

リンク

2013/10/17(Thu) 15:28:17|NO.57650

/*ご参考*/

ss = "" pp = 1,0,0,0 repeat 4 pos 100+(cnt*100),230 poke ss,0,65+cnt chkbox ss,pp(cnt) sendmsg objinfo(stat,2),$F4,$9 loop pos 0,230 button gosub "",*label stop *label repeat 4 :sendmsg objinfo(cnt,2),$F0 :pp(cnt) = stat :loop title strf("%d %d %d %d",pp(0),pp(1),pp(2),pp(3)) return



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