[ruby-gnome2-doc-cvs] [Hiki] create - tips_lazy_treeview

Back to archive index

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





ruby-gnome2-cvs メーリングリストの案内
Back to archive index