FlexView

Q1
ドラッグ&ドロップ操作でのデータコピー  
[内容]
ドラッグ&ドロップで別のFlexViewにデータを移したい

A1
ドラッグ&ドロップで別のFlexViewにデータを移す場合、
DroppedEventクラスとDoDragDropメソッドを利用することで実装できます。

[サンプルイメージ]

[サンプルコード] ※記述ポイント抜粋
・・・(略)・・・
FlexView FlexView1 {
  X = 9;
  Y = 160;
  Width = 391;
  Height = 224;
  AcceptDrop = $STRING;
  
  FlexRecord FlexRecord1{
   Height = 20;
   
   FlexLabel FlexLabel1{
    Title = "社員番号";
    Width = 80;
   }
   FlexLabel FlexLabel2{
    Title = "社員名";
    Width = 80;
   }
   FlexLabel FlexLabel3{
    Title = "部署";
    Width = 80;
   }
   FlexLabel FlexLabel4{
    Title = "資格";
    Width = 150;
   }
  }
  
  /* ドラッグ&ドロップ時の処理 */
  Function OnDropped( e ) {
   try{
    /* ドロップ対象セルの位置
    (行番号はゼロスタートのため、1をマイナスする) */
    var rowPos = rounddown(e.ypos / 20, 0) - 1;
    
    /* ドロップする対象行番号を取得し、セルに値を表示する */
    var moveRow = ^.FlexView1.GetRow(rowPos);
    moveRow.FlexLabel4 = e.Data;
   }catch(e){
    //.MessageBox("データのコピーに失敗しました。");
   }
  }
 
 
 FlexView FlexView2 {
  X = 517;
  Y = 160;
  Width = 151;
  Height = 162;
  AcceptDrop = $STRING;
  
  FlexRecord FlexRecord1{
   Height = 20;

   FlexLabel FlexLabel1{
    Title = "資格";
    Width = 150;
   }
  }
  
  /* セルクリック時の処理 */
  Function OnClicked( e ) {
   /* ドラッグする対象のセルを取得 */
   var nowRow = ^.FlexView2.GetRow(e.Row);
   var ds = new DragSource;
   ds.SetString(nowRow.FlexLabel1.value);
   ds.DoDragDrop();
  }
 
・・・(略)・・・

サンプルソースの実装方法については、下記のとおりです。
(1)資格一覧:FlexView1
 ドラッグする対象セルのValue値をSetStringメソッドで設定し、
 DoDragDropメソッドでドラッグ&ドロップ操作を実行します。

(2)社員一覧:FlexView2
 DroppedEventクラスのYPosプロパティでドロップされたY座標を取得し、
 対象行番号を設定します。
 DroppedEventクラスのDataプロパティで、ドラッグしたデータ(セルのValue値)を表示します。

実際の挙動については、CRSファイル形式のサンプル
   「ドラッグ&ドロップ操作でのデータコピー(Flx50_002.zip)」
をご確認ください。

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