Eu criei uma rotina, Eu tenho na minha tabela o Campo ID para identificação
do registro e PARENTID para saber quem é seu pai. Bom de posse desta
estrutura eu faço o seguinte rotina:

 

Este é meu Record:

      tpTreeNodeData = record

                        Id,

                        ParentId: string

                       end;

 

 

Aqui é a procedure que monta a treeview de nome pTV

 

procedure LoadTreeFromDb(pParentId: string = '0'; ACurrNode: TTreeNode =
nil);

  Var

  TempTable: TADODataset;

  TempNode:  TTreeNode;

  TempData: ^tpTreeNodeData;

begin

 

  TempTable := TADODataset.Create(nil);

  TempTable.Connection := pConnection;

  TempTable.CommandText := 'Select Id, ParentId, Nome From AreasPN WHERE
(ParentId = ' + QuotedStr(pParentId) + ') ';

  TempTable.Open;

 

  While not(TempTable.Eof) do

    begin

 

       New(TempData);

       TempData^.Id         := TempTable.FieldByName('Id').AsString;

       TempData^.ParentId   := TempTable.FieldByName('ParentId').AsString; 

 

       TempNode := ptv.Items.AddChildObject(ACurrNode,
TempTable.FieldByName(Nome).AsString, TempData);

 

       LoadTreeFromDb(TempTable.FieldByName('Id').AsString, TempNode);

 

       TempTable.Next;

 

    end;

 

end;

 

Qualquer duvida, se tiver msn o meu é [EMAIL PROTECTED], entra em contato
comigo ...

 

  _____  

De: delphi-br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em
nome de tatipferrari
Enviada em: quarta-feira, 6 de dezembro de 2006 14:55
Para: delphi-br@yahoogrupos.com.br
Assunto: Re: RES: [delphi-br] Identificar um nó de uma Tree view, não pelo
seu texto

 

Ok , Anderson, este campo data , vi q deve ser um tipo Pointer. 
MAs minha duvida é : como então , depois de colocado este campo 
data , dizer que é para inserir um filho naquele nó com aquele 
pointer ...
Meu código :

type
PMyRec = ^TMyRec;
TMyRec = record
Codigo: string;
end;
---
procedure TfmtesteB.CarregaItens;
var TNF,TNP, Node : TTreeNode;
RecPtr : PMyRec;
...
...
while not qryAreasPN.Eof do
begin
New(RecPtr);
RecPtr^.Codigo:= trim(qryAreasPNCodArea.Value) ;

Se NODO PAI :
TNP := TreeView1.Items.Add(nil, qryAreasPNNome.Value;
TNP.Data := RecPtr;

Se NODO Não PAI :
AQUI não sei como fazer.....para encontrar o pai ( ou ir para ) 
que possua no campo 'Data' o valor do cod pai 
(qryAreasPNCodPai.Value; ) E então encontrado o pai , inserir este no 
filho , algo assim 

TNF := TreeView1.Items.AddChild(TreeView1.Items[nivel], 
qryAreasPNNome.Value ); 
TNF.Data := RecPtr;

end;
end; 

-----

E Mais ... Como preciso inserir num banco de dados , devo extrair a 
informação Código apenas, sem de dar o erro de tipos incompativeis, ( 
entre Pointer e String) , então devo usar obter desta forma : 
PMyRec(TreeView1.Selected.Data)^.Codigo 
Certo ???

Aguardo retorno, 
desde já agradeço imensamente !!!!!!!!!!!
Tati

--- Em [EMAIL PROTECTED] <mailto:delphi-br%40yahoogrupos.com.br>
os.com.br, "anderson" <[EMAIL PROTECTED]> 
escreveu
>
> Utilize a propriedade DATA do TreeNode.
> 
> 
> 
> _____ 
> 
> De: [EMAIL PROTECTED] <mailto:delphi-br%40yahoogrupos.com.br> os.com.br
[mailto:delphi-
[EMAIL PROTECTED] <mailto:br%40yahoogrupos.com.br> com.br] Em
> nome de tatipferrari
> Enviada em: terça-feira, 5 de dezembro de 2006 17:02
> Para: [EMAIL PROTECTED] <mailto:delphi-br%40yahoogrupos.com.br>
os.com.br
> Assunto: [delphi-br] Identificar um nó de uma Tree view, não pelo 
seu texto 
> 
> 
> 
> Olá pessoal :
> 
> Estou criando uma tree view dinamica, com os dados de uma tabela, 
onde 
> nela eu tenho o codArea, descricao , e CodPai, pois só assim 
consigo 
> saber quem é pai de quem ... e ao inserir um nó , coloco no seu 
texto o 
> codigo da area.
> Porém minha pergunta é .. existe alguma forma de identificar um 
nó , 
> mas sem ser pelo texto ?, por exemplo ao inserir um filho, eu 
indico 
> quem é o nó pai, o seu texto p/ mostrar ao usuáio e outro campo 
onde 
> guardo o seu código identificador (único) ????? 
> Pois hoje estou colocando este código no texto ... mas aparece para 
o 
> usuário e não fica esteticamente legal...
> 
> Aguardo por um retorno !
> Grata,
> 
> 
> 
> 
> 
> [As partes desta mensagem que não continham texto foram removidas]
>

 



[As partes desta mensagem que não continham texto foram removidas]

Responder a