Array
(
)

Fazer busca dinamica no TreeView

Diogoalles
   - 05 jan 2006

olá Pessoal

Como eu faço para em um edit ir buscando num treeview o nome que está sendo digitado ?

eu tenho algo parecido só q tem o edit e um grid, então conforme vou digitando ele busca no grid com Locate.

como faço isso no tree ?

obrigado
Diogo


Diogoalles
   - 06 jan 2006

bom dia pessoal

hehehe, to penando com essa, pesquisei e tentei algumas coisas mas não consegui.
alguém poderia me ajudar?

valeu

Diogo


Salsa
   - 06 jan 2006

faz um loop ... pega qntos itens tem no treeview... usando .count
faz um for ...
e vai checando se o valor do texto eh igual ou contem noq vc tah digitando... sei la... axu q assim da pra fazer de boa :)


Diogoalles
   - 06 jan 2006

ñ vai me ajudar mt,

preciso de algo que o usuario vá digitando e já busca no treeview, deixando marcado....

similar ao que se faz numa busca num edit onde ele já vai buscando no grid.

valeu

Diogo


Emerson
   - 06 jan 2006

altere a propriedade HideSelection do TreeView para FALSE e use a seguinte rotina no OnChange do seu componente Edit:

#Código

procedure TForm1.Edit1Change(Sender: TObject);
var
i, tamanho: integer;
no: ttreenode;
begin
tamanho := length(edit1.text);
if tamanho > 0 then
for i := 0 to TreeView1.Items.Count-1 do
if Copy(TreeView1.Items[i].Text,1,tamanho) = edit1.text then
begin
no := TreeView1.Items[i];
TreeView1.Select(no);
break;
end;
end;



Diogoalles
   - 06 jan 2006

e ai emerson
blz?

cara, implementei mas o foco do treeview nem se mexe ele não entra no ´if Copy(TreeView1 ...´
pela logica acho q tá certo o vc tá vendo algo de errado ? ñ sei


valeu mesmo..
Diogo


Emerson
   - 07 jan 2006

talvez o problema esteja na ´caixa´ dos caracteres.
tente assim:

#Código

procedure TForm1.Edit1Change(Sender: TObject); 
var
i, tamanho: integer;
no: ttreenode;
begin
tamanho := length(edit1.text);
if tamanho > 0 then
for i := 0 to TreeView1.Items.Count-1 do
if AnsiUpperCase(Copy(TreeView1.Items[i].Text,1,tamanho)) = AnsiUpperCase(edit1.text) then
begin
no := TreeView1.Items[i];
TreeView1.Select(no);
break;
end;
end;


[size=18:2e69c57e08]não esqueça de alterar a propriedade HideSelection do TreeView para FALSE.[/size:2e69c57e08]


Diogoalles
   - 07 jan 2006

Blz, funcionou 100¬.

obrigado !