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


HSPTV!掲示板


未解決 解決 停止 削除要請

2007
1108
Indigo複数の変数の総計7解決


Indigo

リンク

2007/11/8(Thu) 01:20:42|NO.12186

複数の変数の総計を、
個々の変数が変化する度に表示するには、
どうしたらいいのでしょうか…?



この記事に返信する


pizza

リンク

2007/11/8(Thu) 03:16:52|NO.12190

inputの内容が変更された時ならEN_CHANGEが来た時に表示すると良いです。
(前回の質問から推測)


#define WM_COMMAND 0x0111 #define EN_CHANGE 0x0300 oncmd gosub *lb_OnCommand, WM_COMMAND input a, 50, 20 input b, 50, 20 stop *lb_OnCommand // inputが内容が変更された if (wParam>>16&0xFFFF) == EN_CHANGE : title ""+(a+b) return



Megane

リンク

2007/11/8(Thu) 21:46:19|NO.12205

>>if (wParam>>16&0xFFFF) == EN_CHANGE : title ""+(a+b)

pizza氏のスクリプトは、インプットボックスの値が変わると
この行のtitle命令が実行されるようになっているわけですから、
このtitle命令の代わりに、「5つのボックスの合計を求めて、
それを最後のボックスに表示する」旨を記述すればいいわけですよね。

5つの合計はすぐ計算できますね。
インプットボックスの値を書き換える命令もありますし、
これでできそうでしょう?



pizza

リンク

2007/11/9(Fri) 01:42:19|NO.12208

合計もinputに表示するのなら、合計用inputから来たEN_CHANGEは無視してください。
(objprm後にもEN_CHANGEが来るので)


*lb_OnCommand // id=合計用inputのid if lParam == objinfo_hwnd(id) : return



Megane

リンク

2007/11/9(Fri) 08:58:31|NO.12217

試してみたら、遅いどころか固まってしまいました。どうも失礼。


*goukei if (wParam>>16&0xFFFF) == EN_CHANGE : objprm 10 , a+b+c+d+e return

私が上で言っていたのは、title命令を書き換えろ、ということですから
こういうことだったんです。
oncmdによるジャンプは、いろいろな原因で実行されますから、
その中で、インプットボックス変更の場合だけ、objprmを実行する。
その選別をしているのがif文なんですね。

ちなみに、pizza氏の「objprm後にもEN_CHANGEが来る」という指摘はもっともでした。
変数を使って確かめたらものすごい勢いで繰り返されていて…。

>>if lParam == objinfo_hwnd(id) : return

idをどうするかにだけは気をつけて、この1行をぜひ追加なさってください。



Indigo

リンク

2007/11/9(Fri) 12:20:18|NO.12219


*goukei if (wParam>>16&0xFFFF) == EN_CHANGE : objprm 10,a+b+c+d+e return

昨日この方法を試したところ、
固まってしまったのでスクリプトを削ったのですが、
今もう一度試してみたところ問題なく動きました。
どこに原因があったのかわからないのですが、
昨日試した時に余計な事をしていたのに気づかなかったのかも知れません…

最後に確認だけしておきたいのですが、

*goukei if (wParam>>16&0xFFFF) == EN_CHANGE : objprm 10,a+b+c+d+e if lParam == objinfo_hwnd(10) : return return
と、記述する事を推奨されていると受け取ってもよろしいのでしょうか…?



Megane

リンク

2007/11/9(Fri) 15:22:35|NO.12221

わたしもpizza氏に言われて気づいたような次第ですが、
if (wparam... を書かないと重くなりますし、あっても少しはましでしょうが
重くなります。(私も不十分でした。)


>>記述する事を推奨されていると受け取ってもよろしいのでしょうか…?
よく見直してみてください。違います。


*goukei if lParam == objinfo_hwnd(10) : return if (wParam>>16&0xFFFF) == EN_CHANGE : objprm 10,a+b+c+d+e return

もし合計ボックスが変更されたためにここに来たならもう何もせずreturn
そうでなくてインプットボックス変更で来たならobjprm実行

ということになりますね。



Indigo

リンク

2007/11/9(Fri) 15:43:32|NO.12223

いろいろとお手間を取らせてすみませんでした。
そして、手助けして頂いたお二人には感謝致します!
どうもありがとうございました!



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