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


HSPTV!掲示板


未解決 解決 停止 削除要請

2008
0510
Bobo処理待ち4解決


Bobo

リンク

2008/5/10(Sat) 23:10:57|NO.15776


a="" mes "何学年ありますか?":input a:button "決定" exist "class.mclass" if strsize=-1 : bsave "class.mclass",a,30 a=int(a) repeat a dirlist dummy, str(cnt+1), 5 if(stat==0){mkdir str(cnt+1)} b="" mes str(cnt+1) + "年生は何クラスありますか?" :input b:button "決定" exist "./"+str(cnt+1)+"/class.mclass" if strsize=-1 : bsave "./"+str(cnt+1)+"/class.mclass",b,30 b2="./"+str(cnt+1)+"/" b=int(b) repeat b dirlist dummy, b2+str(cnt+1), 5 if(stat==0){mkdir b2+str(cnt+1)} c="" mes str(cnt+1) + "組のクラスは何人学級ですか?":input c:button "決定" exist b2+str(cnt+1)+"/class.musr" if strsize=-1 : bsave b2+str(cnt+1)+"/class.musr",c,30 mes c + "人ですね" loop loop
上のものをinputに数字が入力された状態で決定ボタンを押すと次の処理に移すようにするにはどうすればいいですか?
教えてください。お願いします。



この記事に返信する


たこ

リンク

2008/5/10(Sat) 23:25:15|NO.15777

説明で済ませるのが難しかったので少し改良したものです
決定ボタンが押されるまでリピートして待機します

a=""
mes "何学年ありますか?":input a:button gosub "決定", *OK
exist "class.mclass"
if strsize=-1 : bsave "class.mclass",a,30
a=int(a)

repeat
if a ! 0 & PushOK = 1 {
PushOK = 0
break
}
wait 20
loop
*OK
PushOK = 1
return



Bobo

リンク

2008/5/10(Sat) 23:33:37|NO.15778

本当に有難うございました。



GENKI

リンク

2008/5/11(Sun) 04:59:17|NO.15779

button命令の基本的な使い方がちゃんと出来ていないようです。
マニュアルや付属のサンプルを参照してbutton命令を習得する必要があります。
↓このページも参考になると思うのでよければ参照ください。
ツール系の基本構造の解説
http://hspdev-wiki.net/?HSP%B9%D6%BA%C2%2F%B4%F0%CB%DC%C5%AA%A4%CA%A5%B9%A5%AF%A5%EA%A5%D7%A5%C8%A4%CE%A5%D1%A5%BF%A1%BC%A5%F3#w51f08e7

button命令をマスターしたら、フローチャートを書いてみることをお勧めします。


さて、このまま解決として放置するのも気になるので、とりあえず適当に作ったサンプル出しておきます。

;オブジェクトを配置する msg = "何学年ありますか?" gosub *situmon a="" input a button "決定", *kettei1 stop ;######################################## ;質問を順番に処理する *kettei1 if ff=0 : inen = a : msg = ""+inen+"年生は何クラスありますか?" if ff=1 : iclass = int(a) if (ff>=1)&(ff<=iclass) : msg = ""+ff+"組のクラスは何人学級ですか?" if (ff>=2)&(ff<=iclass+1) : ininzu = a : fff=1 : ikumi = ff-1: else : fff=0 ff++ ;進行状況 gosub *situmon stop ;画面を書き換える *situmon color 255,255,255 : boxf : color pos 0,0 mes ""+msg if fff = 1 : pos 0,100 : mes ""+ikumi+"組は"+ ininzu + "人ですね" return



flory

リンク

2008/5/11(Sun) 06:59:16|NO.15780

いやいや、buttonのラベルが指定されてないのは、「ここにボタンを置いて使いたいが、
処理待ちのstopとbuttonで飛ぶラベルをどこに入れればよいのかわからない」ってことだろ?
buttonの使い方がわからないということはないと思うが。

で、実際に、
 決定ボタンが押されるまでstopで処理待ち(無限loopを使わない)
 入力ボックスとボタンは一度置いたら消さない(clrpbjを使わない)
 入力された内容をすべて保持
のサンプルを作ってみました。
#uselib "user32"
#func SetWindowLong "SetWindowLongA" int, int, int #func EnableWindow "EnableWindow" int, int step = 0 GradeCount = 0 ;学年の数 GradeStep = 0 ;作業中の学年 dim ClassCount, 9 ;クラスの数 ClassStep = 0 ;作業中のクラス dim StudentCount, 9, 9 ;生徒の数 mes "学年はいくつありますか?(1〜9)" count = 0 input count idInput = stat SetWindowLong objinfo(idInput, 2), -16, $50012080 button "決定", *Decide hButton = objinfo(stat, 2) stop *Decide if (step ! 2) & (count <= 0 | count >= 10) : dialog "不正な値です" : stop if step = 0 : GradeCount = count : step ++ : goto *Decide_Class if step = 1 : ClassCount(GradeStep-1) = count : step ++ : goto *Decide_Student if step = 2 { StudentCount(GradeStep-1,ClassStep-1) = count pos (GradeStep - 1) * 64, 64 + (ClassStep - 1) * 16 mes "" + GradeStep + "-" + ClassStep + ":" + count if ClassStep = ClassCount(GradeStep-1){ if GradeStep = GradeCount : goto *AllDecided step -- goto *Decide_Class } goto *Decide_Student } dialog "error" : end *Decide_Class GradeStep ++ ClassStep = 0 color 255, 255, 255 : boxf 0, 0, 320, 16 color 0, 0, 0 : pos 0, 0 : mes "第" + GradeStep + "学年には何クラスありますか?(1〜9)" objprm idInput, 0 stop *Decide_Student ClassStep ++ color 255, 255, 255 : boxf 0, 0, 320, 16 color 0, 0, 0 : pos 0, 0 : mes "第" + GradeStep + "学年の第" + ClassStep + "クラスには何人いますか?" objprm idInput, 0 stop *AllDecided GradeStep = 0 ClassStep = 0 StudentAmount = 0 repeat GradeCount repeat ClassCount(GradeStep) StudentAmount += StudentCount(GradeStep,ClassStep) ClassStep ++ loop ClassStep = 0 GradeStep++ loop dialog "生徒は全部で" + StudentAmount + "人です" EnableWindow hButton, 0 stop
やたらと長くなります。質問の順番を変えたり、無限loopで処理待ちしたりするように
すれば多少は短くなるはずですが、あえてこんな風に。



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