マウス操作のためのウインドウに追加する

追加するランチャー。その3

ボタンを追加するアイテムの改良

さて、ここからが本当に「追加するランチャー」に使うスクリプトです。
先程 addButtonGui52 を挙げましたが、それを改善したものを挙げます。

addButtonGui52_type2.trr
; 引数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_typeexp52_area1_text といった変数に代入していることになります。

この _type_text を加えた変数は今の時点では必要がない変数です。
まだ先の方で説明する事ですが、これらは TRR を起動した際に読み込む時に参考にする必要がある変数です。

exp52_area1_type などの変数には、コントロールの種類を表す事にしています。
ボタンのコントロールで追加した場合は 1 を代入するようにしています。

画像を追加するアイテムも改良する

先程あげた addPictureGui52 を改善した例の方です。

addPictureGui52_type2.trr
; 引数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 := "[実行する処理]"

を実行して処理を指定することになります。

次のページに移行します。