TreeView

Q3
TreeView内のTreeItemを右クリックした際に、独自のメニューを表示したい

A3
[解決方法]
TreeItemのRClickedイベントと、DisplayObjectクラスのPopupMenuメソッドを組み合わせる事で実装が可能です。
PopupMenuメソッドでは、独自のメニューを表現する事ができます。
また、選択されたメニューのIDを戻り値として受け取ることが出来ますので、この戻り値を判断し、メニューに合わせた処理を行うことが可能です。
以下のサンプルコードでは、ツリーアイテムを選択した際の位置を保持し、右クリックされた際に保持したツリーアイテムの操作を行うメニューを表示します。

[サンプルコード]
 TreeView TreeView1 { 
 ・・・略 
 TreeItem TreeItem4 {
   Title = "バス・トイレ";
   CloseIcon = 54;
   OpenIcon = 55;
   Expanded = TRUE;
   
   TreeItem TreeItem4_1 {
    Title = "バス用品";
    CloseIcon = 4;
    OpenIcon = 3;
   }
   TreeItem TreeItem4_2 {
    Title = "トイレ用品";
    CloseIcon = 4;
    OpenIcon = 3;
   }
  }
  Function OnTouch( e ) {
   /* クリックされたTreeItemのリファレンスを取得 */
   ^.obj[0] = e.from;
  }
   
  Function OnRClicked( e ) {   
   if(^.obj != null && ^.obj.Length != 0){
    /* TreeItemのリファレンスが保存されている場合 */
    /* 右クリックメニューを表示 */
    Form1.func_menuPopup(e); 
   }
  }
 }
 /* アイテム名の通番 */
 Number i = 1;
 Function func_menuPopup(e) {
  
  /* 表示メニューの生成 */
  var top_menu = new String[3];
  
  top_menu[0] = " 追加 ";
  top_menu[1] = "-";  /* セパレータ */
  top_menu[2] = " 削除 ";
  
  var id = popupMenu( top_menu );
  
  /* メニュー選択時の設定 */
  if( id <= 100 ){
   if( id == 3 ){
    /* 削除が選択された場合 */
    e.from.delete();
   }else if(id == 1){
    /* 対象アイテムのリファレンスを取得 */
    var t_obj = e.from;
    
    /* 追加が選択された場合、アイテムを追加 */
    var item_name = "New Item"+ str(i); /* アイテム名の設定 */
    
    /* 追加アイテムの生成 */
    var item1 = Form1.TreeView1.CreateItem(item_name);    
    /* 子アイテムを追加 */
    var c_item = t_obj.Append(item1);
    item1.title = item_name; /* Titleの設定 */
    /* アイコンの追加 */
    item1.CloseIcon = 4;
    item1.OpenIcon = 3;
    t_obj.Expanded = TRUE;    
    i ++;
   }
  }
 }

CRSファイル形式のサンプル
  「TreeView内のTreeItemを右クリックした際に、独自のメニューを表示したい(Tre_004.zip)
で実際の動作をご確認いただけます。

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