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]

Responder a