TabFrame/TabForm

Q4
タブ切り替え操作の実装

A4

[解決方法]
タブ切り替え操作による処理は、TabFrameオブジェクトのChangeイベントによる実装を推奨致します。

Clickedイベントでの実装は、Clickedイベントがタブの切り替えをしないマウスクリックでも発生するため、不必要な処理が実行される可能性があります。
また、TabFrameオブジェクトのClickedイベントでValueプロパティを参照した場合、クリックしたタブとValueプロパティの値が異なる場合があります。

Changeイベントを有効にするにはUseChangeプロパティにTRUEを設定してください。

TabFormオブジェクトやTabFormオブジェクトに配置したTextBoxオブジェクトなどの下位オブジェクトにおいて、UseChangeプロパティをTRUEに設定し、OnChangeイベントハンドラを定義しない場合、下位オブジェクトで発生したChangeイベントが捕捉されず、TabFrameオブジェクトまで伝播しますので、必要に応じた処理を実装してください。


[サンプルコード]


下記のサンプルでは、「タブ2」「タブ3」への切り替えの際、「タブ1」で選択した動作を
実行します。



Form Form1 {
    X = 0;
    Y = 0;
    Width = 445;
    Height = 340;
    TabFrame TabFrame1 {
        X = 5;
        Y = 160;
        Width = 387;
        Height = 155;
        UseChange = $TRUE;

        TabForm TabForm1 {
            Title = "タブ1";
            OptionButton OptionButton1 {
                X = 16;
                Y = 13;
                Width = 340;
                Height = 55;
                OptionItem OptionItem1[2] {
                    Height = 25;
                    Width = 300;
                }
                OptionItem1[0].Title = "タブ2で青色のフォームを表示する";
                OptionItem1[0].Value = $99CCCC;
                OptionItem1[1].Title = "タブ2でピンク色のフォームを表示する";
                OptionItem1[1].Value = $FFCCCC;
                Value = 0;
            }
            CheckBox CheckBox1 {
                X = 16;
                Y = 78;
                Width = 280;
                Height = 35;
                CheckItem CheckItem1[1] {
                    Height = 30;
                    Width = 245;
                    Title = "タブ3への切り替えを可能にする";
                }
            }
        }
        TabForm TabForm2 {
            Title = "タブ2";
        }
        TabForm TabForm3 {
            Title = "タブ3";
            Label Label1 {
                X = 6;
                Y = 18;
                Width = 295;
                Height = 25;
                Border = $FALSE;
                BorderStyle = $FLATSUNKEN;
                Value = "タブ3を表示しています。";
            }
            
        }
        
        Function OnChange( e ) {
            try{
                /* Biz/Designerでの編集時、デザインモードで実行不可な処理が
                   含まれている場合、スクリプトペインからデザインペインへ
                   切り替え出来なくなります。
                   デザインモードで実行不可な処理は、
                   if ( !$DESIGNTIME ) { }内に記述します。*/

                if ( !$DESIGNTIME ) {
                    ^.active_tab = "現在選択されているタブは、";

                    /* OnChangeイベントハンドラ内では、選択されている
                       タブをTabFrameのValueプロパティで参照することが
                       出来ます */
                    switch( Value ) {
                        case 0:
                            ^.active_tab += this.TabForm1.Title;
                            break;
                        case 1:
                            ^.active_tab += this.TabForm2.Title;
                            /* 背景色設定 */
                            this.TabForm2.BgColor =
                                this.TabForm1.OptionButton1.OptionItem1
                                [this.TabForm1.OptionButton1.Value].Value;
                            break;
                        case 2:
                            ^.active_tab += this.TabForm3.Title;
                             /* 切り替え可能か判断 */
if( this.TabForm1.CheckBox1.CheckItem1[0].Selected == $FALSE){ MessageBox( "タブ3に切り替えることはできません。\n"+ "タブ1の『タブ3への切り替えを可能にする』を"+ "チェックしてください。" ); Value = 0; } break; } ^.active_tab += "です。"; } }catch( e ){ MessageBox( e.message ); } } } Label active_tab { X = 70; Y = 130; Width = 305; Height = 30; } }

CRSファイル形式のサンプルを
  「タブ切り替えサンプル (TbF_004.zip)
よりご利用いただけます。

管理番号:TbF_004
  Biz-Collections Bizの宝箱 トップへ
  Biz/Browser・Biz/Designer TIPS集 トップへ