FlexView

Q12 35

FlexViewのセルの操作を不可にした状態でスクロールバーだけ操作できるようにしたい 
[内容]
セルの操作を不可にするためにFlexViewのActiveプロパティをFALSEに設定するとスクロールバーも操作できなくなる。
データ参照のためスクロールバーだけは操作できるようにしたい。

A12 35
FlexViewのActiveプロパティをFALSEに設定するとスクロールバーを含めFlexView自体の操作ができなくなります。
FlexViewのセルの操作を不可にした状態でスクロールバーを操作させる場合には、FlexTextBoxやFlexButtonといったFlexItemオブジェクトのActiveプロパティやEditableプロパティをFALSEに指定して入力や操作を不可にし、スクロールバーは動く状態にします。

実際のスクリプト記述方法は以下のサンプルソースをご覧ください。
サンプルソースでは、GetChildObjectsメソッドを利用してFlexItemオブジェクトを全て取得し、各クラスに合わせてActiveプロパティやEditableプロパティを切り替える処理を行っています。

[サンプルコード1]
  FlexView FlexView1 {
    X = 9;
    Y = 8;
    Width = 424;
    Height = 188;
    FlexRecord FlexRecord1 {
      FlexTextBox FlexTextBox1{Title = "FlexTextBox";}
      FlexButton FlexButton1{Title = "FlexButton";}
      FlexCheckButton FlexCheckButton1{Title = "FlexCheckButton";}
      FlexListBox FlexListBox1{Title = "FlexListBox";}
    }
    InsertRow(10);
  }
  Button Button1 {
    X = 263;
    Y = 219;
    Width = 156;
    Height = 55;
    Title = "操作不可にする";
    
    Function OnTouch( e ) {
      /* 子オブジェクトの取得 */
      var fobj = ^.FlexView1.FlexRecord1.GetChildObjects();
      for (var i in fobj){
          if( fobj[i].classname == "FlexTextBox" ) {
              /* Editableプロパティを設定 */
               fobj[i].Editable = $FALSE;
          }
          if( fobj[i].classname == "FlexButton" ||
             fobj[i].classname == "FlexCheckButton" ||
             fobj[i].classname == "FlexListBox") {
              /* Activeプロパティを設定 */
              fobj[i].Active = $FALSE;
          }
        }
     }
  }

上記の方法は、FlexViewのActiveプロパティをFALSEに設定する方法と異なり、セルのクリックや移動ができます、またイベントも発生します。
イベント処理も行わない場合は、イベント処理をスキップするような対応を行ってください。

実際の挙動については、CRSファイル形式のサンプル
   「FlexViewのセルの操作を不可にした状態でスクロールバーだけ
    操作できるようにしたい(Flx_035.zip)」

をご確認ください。

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