ruby-gnome2-hiki-pt_BR****@sourc*****
ruby-gnome2-hiki-pt_BR****@sourc*****
2004年 4月 5日 (月) 08:41:10 JST
------------------------- REMOTE_ADDR = 200.216.151.125 REMOTE_HOST = URL = http://ruby-gnome2.sourceforge.jp/pt_BR/?tips_lazy_treeview ------------------------- = Criando um TreeView "lazy" Em algumas aplica$Bnw(Bes, encher uma $BaS(Bvore inteira com dados para serem mostrados por um Gtk::TreeView pode ser "caro" (em termos de recursos) para fazlo tudo de uma vez. Gra$BmB(Bs que poss$ByW(Bel criar um gerenciador (handler) de sinal que enche as fileiras (rows) filhas that quando elas s$BeP(B expandidas. O truque conseguir que o expansor de fileira apare$BmB(B sem sem qualquer fileira filha real. O jeito mais f$BaD(Bil de conseguir isso criar uma fileira "falsa" (dummy) que n$BeP(B contem dado. Por exemplo, vamos criar um simples TreeStore, e adicionar uma $B(Bica fileira nele. model = Gtk::TreeStore.new(String) view = Gtk::TreeView.new(model) column = Gtk::TreeViewColumn.new("Coluna de Exemplo", Gtk::CellRendererText.new, {:text => 1}) iter = store.append(nil) iter[0] = 'Fileira Pai' store.append(iter) # "Falso filho" (DUMMY) Ent$BeP(B n$B(B podemos criar um gerenciador de "fileira-expandida" que checa se a primeira fileira filha cont$BqN(B um valor real; se n$BeP(B cont$BqN(B, os dados verdadeiros ser$BeP(B adicionados. view.signal_connect("row-expanded") do |self, iter, path| child = iter.first_child if (! child[0]) new_child = store.append(iter) new_child[0] = 'Fileira filha' store.remove(child) # "Remove falso filho" (DUMMY) end end A ordem aqui importante. Se vocremover o "falso" filho antes de adicionar dados reais, a fileira acabarsem filho algum e nunca serexpandida. ((<Masao>)) escreveu um pequeno navegador de $BaS(Bvore de $BaS(Bquivo que demonstra um uso pr$BaU(Bico dessa t$BqD(Bnica: {{attach_anchor("fileview.rb")}} == Log de Altera$Bnw(Bes :2003-10-21 Matthew Berg Log de Altera$Bnw(Bes adicionado :2003-10-20 Matthew Berg Corre$Bnw(Bes de terminologias :2003-10-20 Matthew Berg Vers$BeP(B inicial