チェック・ボックス・ウィジェットの追加

ボタン・ウィジェットとは異なり、チェック・ボックス・ウィジェットには状態 があります。状態とは、チェック・マークが付けられているか、または付けられていないかのいずれかを指します。 このため、コンソール・フォームでテキスト・フィールドに テキスト変数をバインドするのと同様に、チェック・ボックスにブール変数をバインドする 必要があります。 ユーザーがチェック・ボックスを選択すると、 その変数は TRUE に設定されます。 チェック・マークを外すと、変数は FALSE に設定されます。

  1. コンソール・フォームで、事前定義パーツ consoleCheckbox を使用して、 チェック・ボックスを作成します。
    Record checkForm type ConsoleForm {formSize=[12,40]}
        myCheck consoleCheckbox 
           {name = "simpleCheck", 
            text = "ここをクリック",
            bounds=[4,4,1,15]};
    end
  2. 少なくとも、チェック・ボックスについて以下のプロパティーを指定します。
    name
    チェック・ボックスをイベント・ハンドラーにリンクするために、後で使用するニーモニック。
    text
    チェック・ボックスのラベル。
    bounds
    チェック・ボックスの行、列、高さ、幅をそれぞれ表わす、4 個の整数の配列。
  3. チェック・ボックスの状態を表わすブール変数を作成します。
    checkState boolean = false;
  4. openUI ステートメントを使用し、フォームを開いて、 変数をチェック・ボックスにバインドします。
    myForm checkForm {};
    openUI myForm
        bind checkState
        //イベント・ハンドラーがここに入ります
    end
  5. openUI ステートメントにおいて、チェック・ボックスの STATE_CHANGED イベント用の イベント・ハンドラーを指定します。
    onEvent(ConsoleCheckbox.STATE_CHANGED : "simpleCheck")
        if (checkState == true)
            SysLib.writeStderr("Checked");
        else
            SysLib.writeStderr("Cleared");
        end

この方法でチェック・ボックスを使用しているコンソール UI プログラムの完全な例を以下に示します。

programs/simpleCheckbox.egl ファイル内:
package programs;

import forms.checkForm;

program simpleCheckbox type BasicProgram 
    
    function main()
        myWindow WINDOW {name="myWindow", position = [1,1]};
        openWindow(myWindow);
        
        myForm checkForm {};
        displayForm(myForm);
        
        textValue string = "Text.";
        keepGoing boolean = true;
        myCheckVar boolean = false;
        while (keepGoing == true)
            openUI myForm 
                bind textValue, myCheckVar
                onEvent(ConsoleButton.PUSHED : "exitButton")
                    keepGoing = false;
                onEvent(ConsoleCheckbox.STATE_CHANGED : "simpleCheck")
                    if (myCheckVar == true)
                        textValue = "Checked";
                    else
                        textValue = "Cleared";
                    end
            end
        end
    end
    
end
forms/checkForm.egl ファイル内:
package forms;

record checkForm type ConsoleForm { formsize=[12,40] }
    introText consoleField 
       {name="introText", 
        position = [1,1], 
        fieldLen = 20};
    myCheck consoleCheckbox 
       {name="simpleCheck",
        text="チェック・ボックス",
        bounds=[3,5,1,15]};
    exitButton consoleButton 
       {name = "exitButton", 
        text = "クリックすると終了します",
        bounds=[6,4,1,15]};
end

フィードバック