POPUPMENU関数
本ページには広告が含まれています。
- 配列
- ポップアップメニュー
ポップアップメニューを表示し、引数に指定した配列の中から選択された項目の要素番号を取得します。選択された項目を取得したい場合は、POPUPMENUの戻り値を引数に指定した配列の要素番号として指定します。選択をキャンセルした場合-1が返ります。
- 構文
- Integer = POPUPMENU( メニュ項目, X, Y )
- 引数
- メニュ項目
(String)必須
- 表示メニュ項目を配列変数にて渡す
(サブメニュは { } にて指定: a,b,{c, d},e の場合は c,dがbのサブメニュになる)
- X、Y
(Integer = マウス位置)省略可
- 表示位置 X、Y(デフォルトはマウス位置)
- 戻り値
- 選択された項目の配列変数位置
使い方
メニュー
ポップアップメニューに表示したい項目を格納した配列を宣言し、POPUPMENU関数の第一引数に指定します。
- 結果
POPUPMENU関数の戻り値は選択した配列にある項目の要素番号なので、戻り値を配列の引数にすると選択した項目を取得することができます。
- 結果
サブメニュー
サブメニューを作成するにはサブメニュー項目の開始位置の先頭に{、終了位置の末尾に}をつけます。
中括弧内がサブメニュー、中括弧開始位置の直前の項目がサブメニューの親となります。また親メニューは選択することができません。
以下の場合、項目1のサブメニューとして項目1-1、項目1-2を持つメニューとなります。
以下の場合、POPUPMENU関数の戻り値は1,2,3,4のいずれかになります。項目1は親メニューなので0(配列の1番目)は返りません。
- 結果
サブメニューの{ }を外す
POPUPMENU関数でサブメニューを表す際中括弧({ })で囲む必要がありますが、文字列として扱う際は邪魔になるので正規表現置換で外します。
文字列の先頭に{、末尾に}があれば外すという処理を行っています。
- 結果
サブメニューの階層化
サブメニュー内に中括弧を入れ子にすることでサブメニューの項目にさらにサブメニューを作ることができます。
以下は第一階層に地方、第二階層に都道府県、第三階層に都県内の地域をメニュー項目としています。
地方区分は関東・甲信地方の天気 - 日本気象協会 tenki.jpを参考にしています。
- 結果
プログラム実行例
ポップアップメニューで選択した項目を出力
使用関数
- DIM (1、2行目 すべて)
- ローカル変数を宣言します。
- POPUPMENU関数 (2行目)
- ポップアップメニューを表示します。
- PRINT文 (4、5行目 すべて)
- UWSC.LOGにログを出力します。
ポップアップメニューで選択した項目を出力(サブメニューあり)
使用関数
- DIM (1、2行目 すべて)
- ローカル変数を宣言します。
- POPUPMENU関数 (2行目)
- ポップアップメニューを表示します。
- IF文 (5、6行目 すべて)
- IF文は条件によって処理を分岐させたいときに利用します。条件が成り立たないときの処理(偽)は省略することができます。処理が2文以上のときはIFB文を使います。
- COPY関数 (5、6行目 すべて)
- 文字列の一部を切り出します。
- LENGTH関数 (6行目)
- 文字数もしくは配列サイズを返します。
- PRINT文 (8行目)
- UWSC.LOGにログを出力します。
- コメント (4行目)
- プログラムの動作に影響しない注釈を残すことができます。プログラムの内容を説明したり、デバッグや修正のために一時的にコードを無効化ときにも使えます。
UWSC Debuggerの右クリックメニューをカスタマイズ
UWSC Debuggerの右クリックメニューに不具合があるのでPOPUPMENU関数でカスタマイズしました。
[createLink url="/howto/#schedule-setting" title="スケジュール設定"]で「指定Windowが現れた時」のクラス名に「TFOya」を指定すると、UWSC Debuggerを起動したときにのみ実行することができます。
使用関数
- DIM (1、10、20、21、27行目 すべて)
- ローカル変数を宣言します。
- PUBLIC (4、5行目 すべて)
- グローバル変数を宣言します。
- スレッド生成 (7行目)
- スレッドを生成します。処理を並行して行いたいときに使います。
- WHILE文 (9、10、11、12、13、14、15、16、17、18、…他32行行目 すべて)
- ループ処理を行います。ループの始めに条件判定を行いループ内で条件を変えないと無限ループになります。条件が合わなければ処理は1度も実行されません。最低1度は処理を実行したい場合はREPEAT-UNTIL文を使います。前判定。
- GETID関数 (10、14、25、46、55行目 すべて)
- 指定したウィンドウのIDを取得します。第一引数に取得したいウィンドウのタイトル(一部でも可)を指定します。
- STATUS関数 (11、12、22行目 すべて)
- ウィンドウの各種状態を返します。
- POS関数 (13行目)
- 文字列内で部分文字列が最初に現れる位置を返します。
- CTRLWIN関数 (15、19行目 すべて)
- ウィンドウの状態を制御します。
- IFB文 (16、17、18、19、20、21、22、23、24、25、…他20行行目 すべて)
- IFB-ENDIF文は条件によって処理を分岐させたいときに利用します。ELSEIF文で条件、処理を複数書くことができます。処理が1文のときはIF文でも書くことができます。
- LOCKHARDEX関数 (17、26行目 すべて)
- キーボード、マウスからの入力を禁止します。
- REPEAT文 (18、19、20、21、22、23、24、25、53、54、…他1行行目 すべて)
- ループ処理を行います。ループの終わりに条件判定を行うので、最低1度は処理が実行されます。後判定。
- BTN関数 (22行目)
- マウスボタンを操作します。
- MMV関数 (23行目)
- マウスカーソルを移動します。
- SLEEP関数 (24、43、47、49、54行目 すべて)
- 処理を待機します。
- POPUPMENU関数 (27行目)
- ポップアップメニューを表示します。
- SELECT文 (29、30、31、32、33、34、35、36、37、38、…他1行行目 すべて)
- 値を複数条件で比較し条件が一致したところの処理を実行する。
- SCKEY関数 (30、31、32、33、34、35、36、37行目 すべて)
- ショートカットキーを実行します。
- GETITEM関数 (38行目)
- キャプション文字やリスト等をすべて取得します。
- SENDSTR関数 (38行目)
- 文字列を送信します。
- IF文 (40、41、42行目 すべて)
- IF文は条件によって処理を分岐させたいときに利用します。条件が成り立たないときの処理(偽)は省略することができます。処理が2文以上のときはIFB文を使います。
- FUKIDASI関数 (40、41、42、44行目 すべて)
- メッセージを吹出しに表示します。
- PROCEDURE-FEND (52、53、54、55、56、57行目 すべて)
- PROCEDUREは戻値のない自作関数を定義することができます。
- EXITEXIT文 (56行目)
- 処理を完全に終了します。
- 行結合 (1、2行目 すべて)
- 特殊文字 (20、21、38行目 すべて)
- コメント (28、30、31、32、33、34、35、36、37行目 すべて)
- プログラムの動作に影響しない注釈を残すことができます。プログラムの内容を説明したり、デバッグや修正のために一時的にコードを無効化ときにも使えます。
公開日:
更新日:
関連記事
- CALCARRAY関数 (スクリプト関数)
- 配列データを計算します。
- GETALLWIN関数 (スクリプト関数)
- 全ウィンドウのIDを取得します。
- GETOLEITEM関数 (スクリプト関数)
- コレクションを取得します。
- JOIN関数 (スクリプト関数)
- 配列の中身を区切り文字で結合し、文字列として返します。
- QSORT関数 (スクリプト関数)
- 配列の中身をソートします。
- SETCLEAR関数 (スクリプト関数)
- 配列を指定された値で埋めます。
- SHIFTARRAY関数 (スクリプト関数)
- 配列データをシフトします。
- 連想配列
- 連想配列とは、自動的に割り当てられる数字をキーとして持つかわりに、自由に任意の文字列を割り振ることができる配列のことです。添え字に番号の変わりに名前をつけることでわかりやすく管理することができます。
- LENGTH関数 (スクリプト関数)
- 文字数もしくは配列サイズを返します。
- RECOSTATE関数 (スクリプト関数)
- 音声認識を開始・終了します。