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


HSPTV!掲示板


未解決 解決 停止 削除要請

2023
1103
大富豪オブジェクトID割り当て (buttonなど)8解決


大富豪

リンク

2023/11/3(Fri) 09:48:19|NO.100416

いつもお世話になってます

* オブジェクトID付与について *

button/chkboxなどのオブジェクトは、
記述順に自動でIDが割り当てされると思いますが、

エディターで編集する際、
途中に追加したり削除したりが結構あります。
(私の作業の仕方が悪いんだと思いますが;)

その度にオブジェクトIDが変わるので、
ID指定した他のコマンドのID番号を変える必要があります(よね)。

mmload "filename", ID,...のように、
自分でID付けを管理したいのですが、

・実は可能
・需要がない
・windowsOSのシステム上不可能
 など、どんな感じでしょうか。

宜しくご指導お願いします。



この記事に返信する


buhio

リンク

2023/11/3(Fri) 09:58:53|NO.100417

オブジェクトIDは作成後にstatに入るので、
自分で管理したいオブジェクトの変数を作ってそれで管理してはどうでしょうか?


button gosub "ボタン",*sub 特定のオブジェクト名ID=stat //再作成するたびにstatの値で書き換える



大富豪

リンク

2023/11/3(Fri) 11:05:56|NO.100418

>buhio さん
ありがとうござます。
IDの数値を管理する(?)のではなく、

例えば以下のように配置したとして、
作業中に button goto "4",*sub が不要で削除する場合、
それ以降のボタンIDが全部変わってしまうため、
ID指定のobjprmやobjenableも変える必要があります。

オブジェクト(主にボタン)をなるべく多く(100〜 150個前後)配置したいのですが、
mmload .... ,IDのように自分でID指定できると管理が楽です。


button goto "0",*sub
button goto "1",*sub
;
button goto "2",*sub
button goto "3",*sub
button goto "4",*sub⇒不要になって削除
;
button goto "5",*sub
button goto "6",*sub⇒不要になって削除
button goto "7",*sub
;
;
;
button goto "80",*sub
;

stop

*sub
title ""+stat+""
stop



buhio

リンク

2023/11/3(Fri) 11:30:31|NO.100419

 うーん。IDは変わるので、一旦特定のボタン名の変数にstatを保存して、以後はその変数をオブジェクトIDとして扱うということではないんですかね?
ボタンが全部同じ*subに飛ぶわけじゃないですよね?
 

button gosub "ボタン",*sub0 特定のボタン名ID_A=stat button gosub "ボタン",*sub1 特定のボタン名ID_B=stat //再作成するたびにstatの値で書き換える stop *sub0 objprm 特定のボタン名ID_A,"押した" return *sub1 objprm 特定のボタン名ID_B,"押した" return



大富豪

リンク

2023/11/3(Fri) 12:13:56|NO.100420

※ コメントの意図
【自動割り当てのオブジェクトIDを手動で付与したい】のですが、
mmloadのように手動IDになっていないのはなぜか気になった次第です。

※ 手動ID付与したい理由
【数個のボタンだけだといいのですが、
数が多い(数十個〜100個前後)と修正が大変だからです】


※ ID指定の書き換え(修正)が必要になる状況

(例) 仰っているように配置直後にstatを変数へ置き換えています。

button goto "0",*sub
ID_A=stat

button goto "1",*sub
ID_B=stat

button goto "2",*sub
ID_C=stat

button goto "3",*sub
ID_D=stat

button goto "4",*sub
ID_E=stat

button goto "5",*sub
ID_F=stat

stop

*sub
title "0="+ID_A+" / 1="+ID_B+" / 2="+ID_C+" / 3="+ID_D+" / 4="+ID_E+" / 5="+ID_F+""


※どのボタンを押しても IDと変数が一致します。

ですが
・途中のボタンを削除
・途中にボタンなどを追加
するとID自動付与のためそれ以降のIDが全て変わりますので、


※ 例えば、
button goto "2",*sub
ID_C=stat
を削除すると、

※ ソース内でID#5を指定している
objenable 5,0 を ID#4に変える必要があり、

【削除/追加した以降に何十個もオブジェクトがあると全部変える必要があります】



沢渡

リンク

2023/11/3(Fri) 13:14:25|NO.100421

どうも少し調べた限り、オブジェクトIDはHSPのシステムが内部で使用しているIDを
そのまま使っているようで、これをユーザーが任意の値に設定するというのは
難しそうな様子です。
(HSPが内部で使用している構造体を弄る必要がある?)
buhioさんの言う通り、オブジェクトIDを後で使う必要があるなら、
「これのIDは○○だ」と決め打ちするのではなく、
オブジェクトIDを何かしらの変数に記憶させておき、
それを元に色々やるのがベストではないかと。
たとえば、オブジェクトIDを配列変数に記憶させておき、
objprm等の命令はオブジェクトIDを直接指定するのではなく、
配列変数を指定して行うようにするとか。

dim id,100 button gosub "テスト0",*hoge0 : id(0)=stat button gosub "テスト1",*hoge1 : id(1)=stat button gosub "テスト2",*hoge2 : id(2)=stat button gosub "テスト3",*hoge3 : id(3)=stat //←たとえばこれを削除しても、id(3)が欠番になるだけ。 button gosub "テスト4",*hoge4 : id(4)=stat stop *hoge0 objprm id(0),"押した" : return *hoge1 objprm id(1),"押した" : return *hoge2 objprm id(2),"押した" : return *hoge3 objprm id(3),"押した" : return *hoge4 objprm id(4),"押した" : return



大富豪

リンク

2023/11/3(Fri) 13:32:09|NO.100423

>buhio さん
>沢渡 さん

ようやく仰っている意味が分かりました;
ありがとうございます。

ID=stat=配列変数がピンと来てなかったようです、
大変お騒がせしました。



大富豪

リンク

2023/11/3(Fri) 14:04:41|NO.100424

(追伸)

度々申し訳ありません。

もしかして、
ステータスバーやメニューバーも含めてボタンにオブジェクトIDが自動で付く、
とかですよね。

少し混乱してきたので頭を整理します、
すみません・・・。



buhio

リンク

2023/11/3(Fri) 16:08:26|NO.100425

ボタンやインプット(テキストボックス)など種類関係なく作成順にIDが振られると思います。

なので、statで返ってくるオブジェクトIDは、おっしゃるように変わってしまうので、IDそのものに意味を持たせない方がよいと思います。



記事削除

記事NO.パスワード
(質問が解決したスレッドは他の利用者に活用してもらうため、削除しないようお願いします)

NO.100416への返信

マスコット

好きなマスコットを選んでください。

名前

e-mail
HOME
  1. 初めて利用する方は、HSP3掲示板の使い方をお読みください。
  2. 不要部分の多い長いスクリプトの投稿は ご遠慮ください。
  3. 書き込みは自動改行されません。適度に改行を入れてください。
  4. スクリプトは小文字の<pre>〜</pre>で囲むと見やすく表示できます。

削除用パスワード

解決したら質問者本人がここをチェックしてください。

エラー発生時、再送信すると二重送信になることがあります。
回答が得られたら、お礼書き込み時に[解決]チェックしてください。
SPAM防止のためURLから始まる文章は投稿できません。
SPAM防止のため英文字のみの本文を投稿することはできません。

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