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


HSPTV!掲示板


未解決 解決 停止 削除要請

2008
0807
フロンシアチェックボックスについて8解決


フロンシア

リンク

2008/8/7(Thu) 20:10:19|NO.17973

こんにちは。
最近、HSPを使い始めて少々困ったことがあったので質問させていただきます。
チェックボックスについてなんですが、ON/OFFの切り替えができるとあったので
自分でやってみたのですが自分がやろうとした動作をしてくれません。

自分がやろうとしたのは↓です。

例:チェックを入れると電卓が起動する。チェックを外すとコマンドプロンプトが起動する。


↓のように書いたんですが、最初からコマンドプロンプトが起動して
チェックを入れても電卓が起動しません。
チェックが入ってるか入ってないかの確認するところを書けばいいと思うんですが
わかりませんので、誰か教えてください。

chkbox "てすと",a
if a = 1 : goto *b :else: goto *c

stop
*b
exec "calc"
stop
*c
exec "cmd"
stop



この記事に返信する


Kpan

リンク

2008/8/7(Thu) 20:35:21|NO.17976

ちゃんと変数aの動きを監視してください。

chkbox "ほげー", a repeat title ""+a wait 10 loop



やみねこ

リンク

2008/8/7(Thu) 21:02:05|NO.17978

>フロンシアさん

ループってご存知でしょうか?
最初のプログラムだと、一回だけ一連の処理(ifなど)をして、
すぐにstopで止まってしまいます。

HSPはVBやVCと違って、
ユーザーの操作に反応して動くようには出来ていません。(ボタンは別だけど)

こういうタイプの言語では、Kpanさんの書いてくださったサンプルのように、
ループで常に監視してください。

>Kpanさん
Kpanさんのサイト(Let's HSP!)には、いつもお世話になっております。



ANTARES

リンク

2008/8/7(Thu) 21:09:46|NO.17980

>チェックが入ってるか入ってないかの確認するところを書けばいいと思うんですが
 いつそれを判定するかが問題です。
 フロンシアさんのスクリプトでは、チェックボックスを置いた直後に
判定しているだけなので、チェックボックスがオンになっているはずがありません。

 チェックがボックスがオンになった瞬間やオフになった瞬間を判別したいのなら
無限ループの中で判定するのが比較的簡単ですが、
前の状態と現在の状態を比較して異なる場合のみ処理する必要があります。

 もっと簡単なやり方は、ボタンが押されたときに判定するという方法です。
フロンシアさんのスクリプトに対して最低限の修正で実現できます。


chkbox "てすと",a button "判定",*l_judge stop *l_judge if a = 1 : goto *b :else: goto *c *b exec "calc" stop *c exec "cmd" stop



フロンシア

リンク

2008/8/7(Thu) 22:25:40|NO.17982

返信ありがとうございます。ループで確認ができるんですね。

KpanさんのHPを拝見したところ、ボタンをチェックボックスに替えると言うのがあったんですが、
2個目以降はどう書けばいいでしょうか?

http://lhsp.s206.xrea.com/hsp_object1.html#3



やみねこ

リンク

2008/8/8(Fri) 13:35:27|NO.17995

>フロンシアさん

おそらく、スタイル変更のメッセージを送信する先を変えるだけだと思いますが、
Kpanさんのサイトは、やや難易度が高いので、
良くわからないようであれば、もう少し色々な事が分かってからの方が良いかもしれません。

ちなみに、対象となるボタンに、スタイルを変更するメッセージを送ればよい。
という意味が分かりますでしょうか?

もし分かるとすれば、僕の間違いですあやまります。


>ANTARESさん

ナイスフォローです。
たしかに、変わった瞬間の検出が必要でしたね。
(連続立ち上げして暴走させるところでした)
ありがとうございます。

サイト拝見しました。
MSX懐かしいですね。
小〜中学生の頃、MSXでベーシックとアセンブラを勉強しました…
時間たつのは早いものです。



フロンシア

リンク

2008/8/8(Fri) 19:31:15|NO.17998

やみねこさんの言葉をヒントにやってみたんですけど、statにしているせいと思うんですが、
Aにチェックを入れて電卓起動→電卓終了チェックそのまま→Bにチェック入れる→
電卓とコマンドプロンプトが起動するとゆう動作をしてしまいます。

これを直して、Aにチェックを入れて電卓起動→電卓終了チェックそのまま→Bにチェック入れる→
電卓は起動せず、コマンドプロンプトが起動する という動作にしたいです。どうすればよいでしょうか?


screen 0,200,200
title "てすと"

#uselib "user32"
#func EnableWindow "EnableWindow" int, int

objsize 200,100 :button "A",*Ac
hButton.0 = objinfo(a, 2)
sendmsg hButton.0, $F4, $3 : sendmsg hButton.0, $F1, 1
sendmsg hButton.0, $F1, 0

objsize 200,100 :button "B",*Bc
hButton.1 = objinfo(stat, 2)
sendmsg hButton.1, $F4, $3 : sendmsg hButton.1, $F1, 1
sendmsg hButton.1, $F1, 0

stop
*Ac
sendmsg hButton.0, $F0
if stat=1 :goto *Aa :else:stop
*Aa
exec "calc"
*Bc
sendmsg hButton.1, $F0
if stat=1 :goto *Bb :else:stop
stop
*Bb
exec "cmd"
stop



tsuka

リンク

2008/8/8(Fri) 19:56:04|NO.18001


*Aa exec "calc" stop ;ここ

にしてみたら.........ど



フロンシア

リンク

2008/8/8(Fri) 20:19:39|NO.18002

ぁ、そんな初歩的なミスを><
ありがとうございます。

なんとか問題は解決したようです(?)

また、質問させていただくことになるかもしれませんがその時はよろしくお願いします。

ありがとうございました^^



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