Oi Coutinho... Eu fiz assim:
procedure TfrmMenuModulos.tvMenuExpanded(Sender: TObject; Node: TTreeNode); begin inherited; with tvMenu do Select(Node); end; procedure TfrmMenuModulos.tvMenuCollapsed(Sender: TObject; Node: TTreeNode); begin inherited; with tvMenu do Select(Node); end; E deu super certo... o único detalhe agora, e que qdo abre a tela o menu está vindo aberto. O AutoExpand está False. Ele está vindo aberto por causa do evento vMenuCollapsed. Mas se eu não colocar esse, e colocar apenas o tvMenuExpanded, quando eu clico no (+) fica certinho, mas qdo eu clico p/ fechar (-) ele ainda abre uma tela que abri, e não deveria. GRata, Andresa ________________________________ De: Coutinho - Yahoo <emanuelcouti...@yahoo.com.br> Para: delphi-br@yahoogrupos.com.br Enviadas: Quarta-feira, 21 de Janeiro de 2009 18:06:52 Assunto: Res: [delphi-br] Ajuda com treeview Andressa, O absolute index funciona, do jeito que eu coloquei, tanto para quando clica, quanto para quando navega com as teclas... Quando vc clica no + está abrindo os "children" do "parent node"... assim, o foco ainda está no "parent node"... Vou verificar um teste aqui, se tem como fazer selecionar o primeiro "child node" qudando vc expande os "children nodes"... Abaixo está o código com as alterações que fiz para uncionar como necessita. Deixe o Auto-Expand Desligado, senão não vai funcionar legal unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls; type TForm1 = class(TForm) TreeView1: TTreeView; Button1: TButton; Label1: TLabel; Label2: TLabel; procedure Button1Click( Sender: TObject); procedure FormShow(Sender: TObject); procedure TreeView1Change( Sender: TObject; Node: TTreeNode); procedure TreeView1Expanded( Sender: TObject; Node: TTreeNode); private { Private declarations } public { Public declarations } Diretorio: String; end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click (Sender: TObject); begin with Treeview1 do begin LoadFromFile( diretorio+ 'Treeitems. txt'); SetFocus; Select(TreeView1. Items.GetFirstNo de); end; end; procedure TForm1.FormShow( Sender: TObject); begin Diretorio := extractFilePath( application. ExeName); end; procedure TForm1.TreeView1Cha nge(Sender: TObject; Node: TTreeNode); begin Label1.Caption := 'Este é o Absolute Index: ' + IntToStr(Treeview1. Selected. AbsoluteIndex) ; Label2.Caption := 'Este é o Index: ' + IntToStr(Treeview1. Selected. Index); end; procedure TForm1.TreeView1Exp anded(Sender: TObject; Node: TTreeNode); begin with Treeview1 do begin Select(Node) ; Select(Selected. getFirstChild) ; end; end; end. Vejaí no código anterior, as alterações que fiz aqui, e manda ver!!! Sds, ____________ _________ _________ ____ Emanuel Coutinho Salvador-Ba- Brasil Andresa Ferreira escreveu: > > Oi Coutinho. Eu repondi seu e-mail.... Acho que não deve ter ido. > > Assim, o exemplo foi ótimo, e me fez entender bastante coisa. > > O problema, que acontece, é que qdo vc clica no mais (+) ele não muda > o foco, só muda o foco se vc clicar na descrição, sendo assim ele traz > as informações do último que foi aberto (aquele que ficou com o foco). > > Tem algum jeito de qduando eu clicar no (+) ele já mudar o foco p/ > essa linha??? > > Andresa > > ____________ _________ _________ __ > > > -- Veja quais são os assuntos do momento no Yahoo! +Buscados http://br.maisbuscados.yahoo.com [As partes desta mensagem que não continham texto foram removidas]