Create  Edit  Diff  Phillro Industries  Index  Search  Changes  History  Source  RSS  Note  wikifarm  Login

Phi::TreeView

Phi::TreeView

ツリービュー(階層リスト)を表示するコントロール。

TreeView.jpg
require "phi"
form = Phi::Form.new :form, "Phi::TreeView sample"
tree_view = Phi::TreeView.new form
5.times{|n|
  child = tree_view.items.add(nil, "child_#{n}")
  grandchild = tree_view.items.add_child(child, "grandchild_#{n}_1")
}
form.show
Phi.mainloop

参考:チュートリアル(tut-tut_treeview)

super class

Phi::WinControl

properties

items : Phi::TreeNodes

項目のリスト。

selected : Phi::TreeNode

現在選択されている項目。

methods

[](index) : Phi::TreeNode

index 番目の項目オブジェクトを返す。このときの数え方は、ツリー構造とは無関係(親ノードも子ノードも全て数え上げられる)。

methods

require "phi"
require "methods_for_wiki"
puts Phi::TreeView.methods_for_wiki

_dump => Phi::Component#_dump

action => Phi::Control#action

action= => Phi::Control#action=

action_change => Phi::WinControl#action_change

adjust_client_rect => Phi::WinControl#adjust_client_rect

adjust_size => Phi::WinControl#adjust_size

adjusted_client_rect => Phi::WinControl#adjusted_client_rect

align => Phi::Control#align

align= => Phi::Control#align=

align_controls => Phi::WinControl#align_controls

align_disabled => Phi::WinControl#align_disabled

align_disabled? => Phi::WinControl#align_disabled?

anchors

anchors=

assign_to => Phi::WinControl#assign_to

auto_expand

auto_expand=

auto_expand?

auto_expand=true の場合には、マウスでクリックした瞬間に子項目が展開される。キー操作(↑キー、↓キー)で選択した場合には展開されない。

auto_expand=false の場合には、マウスでクリックしても自動的に子項目が展開されることはない。↑キー/↓キーで操作でも展開されない。

子項目が展開されない場合には、[+]ボタンをクリックするか、→キーを押せば展開される。

折り畳むには[-]ボタンをクリックするか、←キーを押す。

begin_drag => Phi::Control#begin_drag

bevel_edges

bevel_edges=

bevel_inner

bevel_inner=

bevel_kind

bevel_kind=

bevel_outer

bevel_outer=

bevel_width

bevel_width=

bi_di_mode

bi_di_mode=

border_style

border_style=

border_width

border_width=

bottom => Phi::Control#bottom

bottom= => Phi::Control#bottom=

bring_to_front => Phi::Control#bring_to_front

can_auto_size => Phi::WinControl#can_auto_size

can_focus => Phi::WinControl#can_focus

can_resize => Phi::WinControl#can_resize

canvas

change_delay

change_delay=

change_scale => Phi::WinControl#change_scale

client_origin => Phi::WinControl#client_origin

client_rect => Phi::WinControl#client_rect

client_to_screen => Phi::Control#client_to_screen

color

color=

component_count => Phi::Component#component_count

components => Phi::Component#components

constrained_resize => Phi::WinControl#constrained_resize

constraints

constraints=

contains_control => Phi::WinControl#contains_control

control_at => Phi::WinControl#control_at

control_at_pos => Phi::WinControl#control_at_pos

control_count => Phi::WinControl#control_count

control_extents => Phi::WinControl#control_extents

control_state => Phi::Control#control_state

control_state= => Phi::Control#control_state=

control_style => Phi::Control#control_style

control_style= => Phi::Control#control_style=

controls => Phi::WinControl#controls

controls_aligned => Phi::WinControl#controls_aligned

create_handle => Phi::WinControl#create_handle

create_wnd => Phi::WinControl#create_wnd

ctl3d

ctl3d=

ctl3d?

cursor => Phi::Control#cursor

cursor= => Phi::Control#cursor=

custom_align_insert_before => Phi::WinControl#custom_align_insert_before

def_wnd_proc= => Phi::WinControl#def_wnd_proc=

define_properties => Phi::WinControl#define_properties

destroy_handle => Phi::WinControl#destroy_handle

destroy_window_handle => Phi::WinControl#destroy_window_handle

destroy_wnd => Phi::WinControl#destroy_wnd

device_context => Phi::WinControl#device_context

disable_align => Phi::WinControl#disable_align

dock_client_count => Phi::WinControl#dock_client_count

dock_drop => Phi::WinControl#dock_drop

dock_site => Phi::WinControl#dock_site

dock_site= => Phi::WinControl#dock_site=

dock_site? => Phi::WinControl#dock_site?

double_buffered => Phi::WinControl#double_buffered

double_buffered= => Phi::WinControl#double_buffered=

drag_cursor

drag_cursor=

drag_kind

drag_kind=

drag_mode

drag_mode=

each => Phi::ItemsEnumerable#each

enable_align => Phi::WinControl#enable_align

enabled

enabled=

enabled?

event_handle

extend => Phi::Persistent#extend

fill => Phi::Control#fill

find_child_control => Phi::WinControl#find_child_control

find_next_control => Phi::WinControl#find_next_control

fixup_tab_list => Phi::WinControl#fixup_tab_list

flip_children => Phi::WinControl#flip_children

focused => Phi::WinControl#focused

focused? => Phi::WinControl#focused?

font

font=

full_collapse

full_expand

get_hit_test_info_at

get_node_at

handle => Phi::Control#handle

handle_allocated => Phi::WinControl#handle_allocated

handle_needed => Phi::WinControl#handle_needed

height => Phi::Control#height

height= => Phi::Control#height=

help_context => Phi::Control#help_context

help_context= => Phi::Control#help_context=

help_keyword => Phi::Control#help_keyword

help_keyword= => Phi::Control#help_keyword=

help_type => Phi::Control#help_type

help_type= => Phi::Control#help_type=

hide => Phi::Control#hide

hide_selection

hide_selection=

hide_selection?

hide_selection プロパティは,フォーカスを別のコントロールに移したときに選択したノードを選択状態で表示するかどうか指定します。

* trueにすると、他の画像部品にフォーカスを移動すると、何を選択していたのか分からなくなってしまいます。

hint => Phi::Control#hint

hint= => Phi::Control#hint=

hot_track

hot_track=

hot_track?

hot_track プロパティは,マウスポインタの下にあるリスト項目を強調表示するかどうかを指定します。

images

images=

ime_mode => Phi::WinControl#ime_mode

ime_mode= => Phi::WinControl#ime_mode=

ime_name => Phi::WinControl#ime_name

ime_name= => Phi::WinControl#ime_name=

indent

indent=

子項目との先頭位置の差をピクセル数で指定する。デフォルトは19ピクセル。

insert_control => Phi::WinControl#insert_control

invalidate => Phi::Control#invalidate

key_press => Phi::WinControl#key_press

left => Phi::Control#left

left= => Phi::Control#left=

load

multi_select

multi_select=

multi_select?

multi_select_style

multi_select_style=

name => Phi::Control#name

name= => Phi::Control#name=

on_addition

on_addition=

on_advanced_custom_draw

on_advanced_custom_draw=

on_advanced_custom_draw_item

on_advanced_custom_draw_item=

on_change

on_change=

選択されたノードが代ったときに呼ばれるようです。ブロック引数に入ってくるのは TreeViewオブジェクトと、新しく選択された TreeNodeオブジェクトです。

on_changing

on_changing=

ノードを選択しようとするときに呼ばれます。ブロックでfalseを返すと選択を禁止できます。

on_click

on_click=

on_collapsed

on_collapsed=

ノードが折り畳まれたときに呼ばれます。

on_collapsing

on_collapsing=

ノードを折り畳もうとしたときに呼ばれます。falseを返すと折り畳みを禁止できます。

on_compare

on_compare=

on_context_popup => Phi::Control#on_context_popup

on_context_popup= => Phi::Control#on_context_popup=

on_create_node_class

on_create_node_class=

on_custom_draw

on_custom_draw=

on_custom_draw_item

on_custom_draw_item=

on_dbl_click

on_dbl_click=

on_deletion

on_deletion=

on_drag_drop

on_drag_drop=

1.jpg
require "phi"

class Phi::TreeNode
  def move_to_next_of(node)
    return unless node
    if ( next_sibling = node.next_sibling )
      move_to(  next_sibling, Phi::NA_INSERT );
    else
      move_to( node , Phi::NA_ADD );
    end
  end
end

#### form & radio group ####

form = Phi::Form.new :form, "TreeView drop sample"

radio_group = Phi::RadioGroup.new form , "drop to move.."
radio_group.align = Phi::AL_TOP
radio_group.items.add "move next"
radio_group.items.add "move before"
radio_group.items.add "move child"
radio_group.columns = 3
radio_group.item_index = 0
radio_group.height = 30

#### TreeView & items ####

tree_view       = Phi::TreeView.new form
tree_view.align = Phi::AL_CLIENT
tree_view.hide_selection = false
5.times{|n| tree_view.items.add(nil,"item_#{n}") }

#### drag & drop event ####

tree_view.drag_mode = Phi::DM_AUTOMATIC

#
# マウスが上を通過するとき、
# ドラッグの参照元が同じTreeView であれば受け入れる。
#
tree_view.on_drag_over = proc{|sender,accept,source,x,y,state|
  (sender == source)
}

#
# get_node_at で現在の位置のノードを取り出す。
# ドラッグの参照元は selected で取り出す。
#
# 前に挿入、子に挿入は簡単だが、
# 後ろに挿入は複雑なので別のメソッドを組んである。
#
tree_view.on_drag_drop = proc{|sender,source,x,y|
  dst = sender.get_node_at(x,y)
  src = sender.selected
  case radio_group.item_index
  when 0 # next
    src.move_to_next_of( dst );
  when 1 # before
    src.move_to(  dst, Phi::NA_INSERT );
  else   # child
    src.move_to(  dst, Phi::NA_ADD_CHILD );
  end
}

#### show ####

form.show
Phi.mainloop

on_drag_over

on_drag_over=

→ on_drag_drop のサンプル参照

on_edited

on_edited=

on_editing

on_editing=

on_end_dock

on_end_dock=

on_end_drag

on_end_drag=

on_enter

on_enter=

on_exit

on_exit=

on_expanded

on_expanded=

on_expanding

on_expanding=

on_get_image_index

on_get_image_index=

on_get_selected_index

on_get_selected_index=

on_key_down

on_key_down=

on_key_press

on_key_press=

on_key_up

on_key_up=

on_mouse_down

on_mouse_down=

on_mouse_move

on_mouse_move=

on_mouse_up

on_mouse_up=

on_start_dock

on_start_dock=

on_start_drag

on_start_drag=

paint_controls => Phi::WinControl#paint_controls

paint_window => Phi::WinControl#paint_window

palette_changed => Phi::WinControl#palette_changed

parent => Phi::Control#parent

parent= => Phi::Control#parent=

parent_bi_di_mode

parent_bi_di_mode=

parent_bi_di_mode?

parent_color

parent_color=

parent_color?

parent_ctl3d

parent_ctl3d=

parent_ctl3d?

parent_font

parent_font=

parent_font?

parent_form => Phi::Control#parent_form

parent_handle => Phi::WinControl#parent_handle

parent_show_hint

parent_show_hint=

parent_show_hint?

parent_window => Phi::WinControl#parent_window

parent_window= => Phi::WinControl#parent_window=

perform => Phi::Control#perform

popup_menu

popup_menu=

prop_info => Phi::Component#prop_info

read_only

read_only=

read_only?

read_state => Phi::WinControl#read_state

realign => Phi::WinControl#realign

recreate_wnd => Phi::WinControl#recreate_wnd

rect => Phi::Control#rect

rect= => Phi::Control#rect=

refresh => Phi::Control#refresh

reload_docked_control => Phi::WinControl#reload_docked_control

remove_control => Phi::WinControl#remove_control

repaint => Phi::Control#repaint

reset_ime => Phi::WinControl#reset_ime

right => Phi::Control#right

right= => Phi::Control#right=

right_click_select

right_click_select=

right_click_select?

row_select

row_select=

row_select?

save

scale_by => Phi::WinControl#scale_by

scale_controls => Phi::WinControl#scale_controls

screen_to_client => Phi::Control#screen_to_client

scroll_by => Phi::WinControl#scroll_by

select_first => Phi::WinControl#select_first

select_next => Phi::WinControl#select_next

send_to_back => Phi::Control#send_to_back

set => Phi::Control#set

set_bounds => Phi::Control#set_bounds

set_child_order => Phi::WinControl#set_child_order

set_childs

set_focus => Phi::WinControl#set_focus

set_ime => Phi::WinControl#set_ime

set_parents

set_z_order => Phi::WinControl#set_z_order

show => Phi::Control#show

show_buttons

show_buttons=

show_buttons?

show_control => Phi::WinControl#show_control

show_hint

show_hint=

show_hint?

show_lines

show_lines=

show_lines?

show_root

show_root=

show_root?

showing => Phi::WinControl#showing

showing? => Phi::WinControl#showing?

site_info => Phi::WinControl#site_info

sort_type

sort_type=

state_images

state_images=

stop_align => Phi::WinControl#stop_align

tab_order

tab_order=

tab_order_list => Phi::WinControl#tab_order_list

tab_stop

tab_stop=

tab_stop?

tool_tips

tool_tips=

tool_tips?

top => Phi::Control#top

top= => Phi::Control#top=

top_parent_handle => Phi::WinControl#top_parent_handle

update => Phi::Control#update

update_control_state => Phi::WinControl#update_control_state

use_dock_manager => Phi::WinControl#use_dock_manager

use_dock_manager= => Phi::WinControl#use_dock_manager=

use_dock_manager? => Phi::WinControl#use_dock_manager?

visible

visible=

visible?

visible_dock_client_count => Phi::WinControl#visible_dock_client_count

width => Phi::Control#width

width= => Phi::Control#width=

window_handle => Phi::WinControl#window_handle

window_handle= => Phi::WinControl#window_handle=

write_res_file => Phi::Component#write_res_file

Last modified:2007/09/09 15:56:13
Keyword(s):
References:[(文責)Dice] [Phi-Classes] [Phi-Constants] [Phi::TreeNode] [image_of_controls]