FlexView

Q12
FlexViewで列の表示制御を行いたい
[内容]
FlexViewでデータの表示が1件もない列を非表示にしたい
A12
[解決方法]
実装方法としては、FlexViewに表示される各行の対象列にデータが存在するかをチェックし、対象列にデータが1件も存在しない場合、対象列を非表示とする(Width=0)といった方法が可能です。

■「備考3」と「備考4」の列に表示データが存在しない場合


[サンプルコード]
CSVDocument data;
/* CSVファイルをGETし、データをロードします */
data.get("test.csv");

/* チェック対象列数 */
var col = 8;
/* チェック結果格納配列 */
var arr = new Array();

for(var i = 0; i < col; i++){
  /* ラベル番号 */
  var label = i+1;
  
  /* データが存在するか確認 */
  arr[i] = eval("data.find(0, \""+Str(i)+"!=\");");
  
  /* データが存在しない場合*/
  if(arr[i] == "-1"){
    /* 非表示とする列分、FlexViewの幅を再調整する */
    ^.FlexView1.Width = ^.FlexView1.Width - 
        eval("^.FlexView1.FlexRecord1.FlexLabel"+Str(label)+".Width;");
    /* データが存在しない列を非表示とする */
    eval("^.FlexView1.FlexRecord1.FlexLabel"+Str(label)+".Width = 0;");
  }
}

/* FlexViewへデータをロード */
^.FlexView1 << data;

※ Evalメソッドは、Ver4.2.0より追加されました。

上記サンプルでは、「備考3」と「備考4」の列を非表示(Width=0)にすると同時にFlexView自体の幅(Width)も再調整しています。
列を非表示としても、FlexView自体の幅を再調整しない場合、以下のように空白欄が表示されます。


また、本内容とあわせて、以下のTIPSもご参照ください。
Biz/Browser・Biz/Designer TIPS集 > FlexView >
  FlexViewの非表示列にカーソルが当たらないようにしたい

実際の挙動についてはCRSファイル形式のサンプル
  「FlexViewでの列の表示制御サンプル(Gui41_026.zip)」
をご参照ください。

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