YKLook説明書 GUIオブジェクト利用の手引き ツリー 前へ   次へ
   

ツリー


ツリーは、階層構造を表現するときに使うGUIオブジェクトです。
詳細については クラス解説 YKLookTree をご覧ください。




表示

ツリーを表示するプログラム例です。

def yki_make_display()
    dt1 = [ 'folder-01', 'file-123-a' ]
    dt2 = [ 'folder-01', 'file-123-b' ]
    dt3 = [ 'folder-02', 'file-456' ]
    dt4 = [ 'folder-02', 'folder-02-a', 'file-789' ]
    dt5 = [ 'folder-03', nil ]
    dt6 = [ 'file-abc' ]
    tr  = YKLookTree.new( [dt1, dt2, dt3, dt4, dt5, dt6] )
    tr.yk_set_preferred_size( 160, 120 )
    pan = YKLookPanelFlow.new()
    pan.yk_add( tr )
    yk_add( pan )
end

この例では、以下のようになります。
ツリーの各ノードが、ツリー全体の表示サイズを超えるときは、自動的にスクロールバーが表れます。
集合ノードと要素ノードのデフォルトアイコンを指定できます。
ノード単位で、アイコン・ツールチップ等の属性を指定することもできます。
任意のノードを選択状態にすることもできます。


状態の取得

ツリーの選択状態を取り出すプログラム例です。
「状態取得」ボタンを押すと、ツリーの状態を調べます。
メソッド yk_selected_node() を使います。

def yki_make_display()
    dt1 = [ 'folder-01', 'file-123-a' ]
    dt2 = [ 'folder-01', 'file-123-b' ]
    dt3 = [ 'folder-02', 'file-456' ]
    dt4 = [ 'folder-02', 'folder-02-a', 'file-789' ]
    dt5 = [ 'folder-03', nil ]
    dt6 = [ 'file-abc' ]
    tr  = YKLookTree.new( [dt1, dt2, dt3, dt4, dt5, dt6] )
    tr.yk_set_preferred_size( 160, 120 )
    btn = YKLookButton.new( '状態取得' )
    pan = YKLookPanelFlow.new()
    pan.yk_add( tr )
    pan.yk_add( btn )
    yk_add( pan )
    tr.yk_set_tag( 'tree' )
    btn.yk_set_listener( 'fn_callback' )
end
def fn_callback( prm_event )
    tr  = yk_look( 'tree' )
    ary = tr.yk_selected_node()
    msg = '選択状態のノード数は ' + ary.size().to_s() + ' 個です'
    yk_show_dialog_message( nil, msg )
end

上の例は、ツリーを参照するのにタグ名を使った例です。
下の例は、インスタンス変数を使った例です。

def yki_make_display()
    dt1 = [ 'folder-01', 'file-123-a' ]
    dt2 = [ 'folder-01', 'file-123-b' ]
    dt3 = [ 'folder-02', 'file-456' ]
    dt4 = [ 'folder-02', 'folder-02-a', 'file-789' ]
    dt5 = [ 'folder-03', nil ]
    dt6 = [ 'file-abc' ]
    @tr = YKLookTree.new( [dt1, dt2, dt3, dt4, dt5, dt6] )
    @tr.yk_set_preferred_size( 160, 120 )
    btn = YKLookButton.new( '状態取得' )
    pan = YKLookPanelFlow.new()
    pan.yk_add( @tr )
    pan.yk_add( btn )
    yk_add( pan )
    yk_var( '@tr' )
    btn.yk_set_listener( 'fn_callback' )
end
def fn_callback( prm_event )
    ary = @tr.yk_selected_node()
    msg = '選択状態のノード数は ' + ary.size().to_s() + ' 個です'
    yk_show_dialog_message( nil, msg )
end


イベント

ツリーのイベントを処理するプログラム例です。
通常のボタンとは違い、ツリーのイベントを使うことはあまりありません。

def yki_make_display()
    dt1 = [ 'folder-01', 'file-123-a' ]
    dt2 = [ 'folder-01', 'file-123-b' ]
    dt3 = [ 'folder-02', 'file-456' ]
    dt4 = [ 'folder-02', 'folder-02-a', 'file-789' ]
    dt5 = [ 'folder-03', nil ]
    dt6 = [ 'file-abc' ]
    tr  = YKLookTree.new( [dt1, dt2, dt3, dt4, dt5, dt6] )
    tr.yk_set_preferred_size( 160, 120 )
    pan = YKLookPanelFlow.new()
    pan.yk_add( tr )
    yk_add( pan )
    tr.yk_set_listener( 'fn_callback' )
end
def fn_callback( prm_event )
    tr  = prm_event.yk_source()
    ary = tr.yk_selected_node()
    msg = ary[0].join('/') + ' が選択されました'
    yk_show_dialog_message( nil, msg )
end

ツリーのイベントは YKLookEventTreeClick クラスのオブジェクトです。
詳細については クラス解説 YKLookEventTreeClick をご覧ください。

イベント処理の基本は YKLook用アプリの製作 > イベント処理 をご覧ください。




   
YKLook説明書 GUIオブジェクト利用の手引き ツリー 前へ   次へ


Copyright (c) 2003-2010 YorozuKotowariYa Ltd.