マウス操作のためのウインドウに追加する
追加するランチャー。その3
ボタンを追加するアイテムの改良
さて、ここからが本当に「追加するランチャー」に使うスクリプトです。
先程
addButtonGui52
を挙げましたが、それを改善したものを挙げます。
; 引数1に表示する文字。
; 実行するサブルーチンは G_subroutine52 だけにする
; exp52_area1_script などの変数に、実行する処理を別途、代入する必要あり
exp52_tmpViewText = %B_itemArg1%
if( exp52_tmpViewText == "" ){
F_errorOutput( "addButtonGui52_type2のエラー。`n引数の指定が足りない" )
return
}
exp52_tmpHeightCount := exp52_count // exp52_widthNumber
exp52_tmpWidthCount := Mod(exp52_count, exp52_widthNumber)
exp52_tmpPosX := exp52_tmpWidthCount * exp52_width
exp52_tmpPosY := exp52_tmpHeightCount * exp52_height
; exp52_area1 からスタートさせるため、exp52_count の数字をここでプラスしておく
exp52_count++
exp52_tmpControlVar = exp52_area%exp52_count%
if( exp52_count >= exp52_many ){
F_tmpOutput( "これ以上は追加できない" )
return
}
; ボタンはタイプ1
%exp52_tmpControlVar%_type = 1
%exp52_tmpControlVar%_text = %exp52_tmpViewText%
exp52_tmpOption = X%exp52_tmpPosX% Y%exp52_tmpPosY% w%exp52_width% h%exp52_height% v%exp52_tmpControlVar% gG_subroutine52
Gui, 52:Add, Button, %exp52_tmpOption%, %exp52_tmpViewText%
%--
この
アイテム
は、前に挙げた
addButtonGui52
と違って、指定する引数は
1つだけです。
ボタンに表示する文字だけを指定します。
実行するサブルーチンは
G_subroutine52
を指定しています。
addButtonGui52
を使った場合、その都度
G_subroutine
の
アイテム
を作って用意していく事になりますが、
今回からは
G_subroutine52
だけを指定して、このサブルーチンの
アイテム
だけで全て済ませるようにしていこうと思います。
ボタンを追加する処理のオプションの中に
G_subroutine52
を指定しています。
実行する処理はどうやって指定するかというと、
exp52_tmpControlVar
という変数に、今回使ったコントロールの変数名が代入されています。
exp52_area1
などの値が代入されています。
この変数がボタンのコントロール変数の名前です。
そして、 exp52_area1_script といった、 _script をプラスした名前の変数に、実行する処理を代入するというルールにします。
この addButtonGui52_type2 を使った場合は、その後に
%exp52_tmpControlVar%_script := "[実行する処理]"
を実行して処理を指定することになります。
そして、処理は G_subroutine52 で実行する事になるため、その アイテム を作っておきます。
以下のスクリプトの G_subroutine52.trr のファイルを作ります。
exp52_tmpExeScript := %A_GuiControl%_script
if( exp52_tmpExeScript == "" ){
; F_tmpOutput( "まだ、ファイルパスを登録していない。" )
return
}
F_textExe( exp52_tmpExeScript )
; 初期化する
exp52_tmpExeScript =
ボタンを押すと、
G_subroutine52
のアイテムが実行され、
A_GuiControl
の変数に
exp52_area1
などのコントロール変数名が格納されます。
それに、 _script を加えた、 exp52_area1_script などの変数の値に、実行する処理が代入されているものとして、それを使って F_textExe( ) の関数を使って動作させます。
なお、この
G_subroutine52.trr
のファイルはまだ仮の状態です。
後でまた内容を追加します。
タイプの指定
addButtonGui52_type2 の中に、
; ボタンはタイプ1
%exp52_tmpControlVar%_type = 1
%exp52_tmpControlVar%_text = %exp52_tmpViewText%
の記述があります。
これは、 exp52_area1_type や exp52_area1_text といった変数に代入していることになります。
この
_type
や
_text
を加えた変数は今の時点では必要がない変数です。
まだ先の方で説明する事ですが、これらは
TRR
を起動した際に読み込む時に参考にする必要がある変数です。
exp52_area1_type
などの変数には、コントロールの種類を表す事にしています。
ボタンのコントロールで追加した場合は
1
を代入するようにしています。
画像を追加するアイテムも改良する
先程あげた addPictureGui52 を改善した例の方です。
; 引数1に画像が無かった場合の文字。
; 引数2に画像のファイルパスを指定
; 実行するサブルーチンは G_subroutine52 だけにする
; exp52_area1_script などの変数に、実行する処理を別途、代入する必要あり
exp52_tmpViewText = %1
exp52_tmpNoExtFile = %*
if( exp52_tmpNoExtFile == "" ){
F_errorOutput( "addPictureGui52_type2のエラー。`n引数の指定が足りない" )
return
}
exp52_tmpHeightCount := exp52_count // exp52_widthNumber
exp52_tmpWidthCount := Mod(exp52_count, exp52_widthNumber)
exp52_tmpPosX := exp52_tmpWidthCount * exp52_width
exp52_tmpPosY := exp52_tmpHeightCount * exp52_height
; exp52_area1 からスタートさせるため、exp52_count の数字をここでプラスしておく
exp52_count++
exp52_tmpControlVar = exp52_area%exp52_count%
if( exp52_count >= exp52_many ){
F_tmpOutput( "これ以上は追加できない" )
return
}
; 画像はタイプ2
%exp52_tmpControlVar%_type = 2
%exp52_tmpControlVar%_text = %exp52_tmpViewText%
%exp52_tmpControlVar%_img = %exp52_tmpNoExtFile%
exp52_tmpOption = X%exp52_tmpPosX% Y%exp52_tmpPosY% w%exp52_width% h%exp52_height% v%exp52_tmpControlVar% gG_subroutine52
exp52_imgExistFlag := F_GuiAddPictureNoExtFile( 52, exp52_tmpNoExtFile, exp52_tmpOption )
if( exp52_imgExistFlag == False )
Gui, 52:Add, Button, %exp52_tmpOption%, %exp52_tmpViewText%
}
; 初期化
exp52_tmpNoExtFile =
改良した点はさっきのボタンの方の
addButtonGui52_type2
と同じです。
; 画像はタイプ2
%exp52_tmpControlVar%_type = 2
この部分を見て分かる様に、
exp52_area1_type
などの変数には、
画像のコントロールで追加した場合は
2
を代入するようにします。
_img
を加えた変数も使い、これには画像のファイルパスを代入します。
これも
_type
や
_text
を加えた変数のように、
TRR
を起動した際に読み込む時に参考にする変数です。
このアイテムを使った場合も、
addButtonGui52_type2
を使った場合と同じ様に、
exp52_area1_script
といった、
_script
をプラスした名前の変数に、実行する処理を代入する必要があります。
このアイテムの実行後に
%exp52_tmpControlVar%_script := "[実行する処理]"
を実行して処理を指定することになります。