Fórum Treeview #184548

26/09/2003

0

Gostaria de encontra um exemplo onde eu acesse um clientdataset e a partir dele alimente os dados de um treeview.
Ainda preciso clicar no Treeview e mostrar os dados em um grid, para isso preciso guardar o valor da chave, como eu faco isso no treeview.

Muito obrigado.


[]s


Caboldo

Caboldo

Responder

Posts

26/09/2003

Halexmaciel

Cara,
não vou te passar um exemplo, mas te darei uma dica, pois a melhor forma de aprender é quebrando a cabeça, bem, é simples como vc colocará no treeview, primeiro vc chama uma query com seus parametros, depois que ela estiver cheia, faça uma while dela preenchendo o ClientDataset, depois é só vc fazer um while com o ClientDataSet, colocando os indices nos NODES do treeview. Falou


Responder

Gostei + 0

27/09/2003

Werlon Goulart

Fiz isto pra um sistema de controle Pecuario. Este form mostrava a familia genealogica de cada animal, listando os animais e seus respectivos Pai e Mãe, e clicando-se em seu Pai, pode-se visualizar o Pai e Mãe deste animal tb.
Resumindo vai clicando e sempre mostra o Pai e a Mãe do Animal.
Eu usei o TIBQuery pois uso o IB. Mas da pra portar facil.

Um Abraco
Werlon Goulart
unit UArvore;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Db, IBDatabase, IBCustomDataSet, IBQuery, StdCtrls, ComCtrls, Grids,
DBGrids, ExtCtrls, DBCtrls, Buttons, Wordcap, ImgList;

type
TfmArvore = class(TForm)
edNiveis: TTreeView;
TransactionMostraCategoria: TIBTransaction;
edImageCategoria: TImageList;
MSOfficeCaption1: TMSOfficeCaption;
IBDatabase1: TIBDatabase;
Panel2: TPanel;
BtSair: TSpeedButton;
Procedure MontaNivel(RecPai: Integer; NoPai:TTreeNode);
Procedure MontaPai(RecPai: Integer; NoPai:TTreeNode);
Procedure MontaMae(RecPai: Integer; NoPai:TTreeNode);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure btSairClick(Sender: TObject);
procedure FormKeyPress(Sender: TObject; var Key: Char);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
fmArvore: TfmArvore;

implementation

uses Umenu;

{$R *.DFM}


Procedure TfmArvore.MontaPai(RecPai: Integer; NoPai:TTreeNode);
Var qrPAI: TIBQuery;
No: TTreeNode;
begin
qrPai:=TIBQuery.Create(nil);
Try
qrPai.DataBase:=IBDatabase1;
qrPai.Transaction:=TransactionMostraCategoria;
qrPai.sql.Clear;
qrPai.SQL.Text:=´Select CODANIMAL, NOME, CODANIMAL_PAI, CODANIMAL_MAE from ANIMAL Where CODANIMAL=:Pai´;
qrPai.ParambyName(´Pai´).AsInteger:=RecPai;
qrPai.Open;
if Not qrPai.IsEmpty then begin
if NoPai<>edNiveis.TopItem then
NoPai.HasChildren:=Not qrPai.EOF;
No:=edNiveis.Items.AddChildObject(
NoPai, ´Pai - ´+qrPai[´NOME´], Pointer(qrPai.FieldByName(´CODANIMAL´).asInteger));
No.Expand(True);
No.ImageIndex:=1;
No.SelectedIndex := No.ImageIndex; // Mantem a imagem do No qndo tem o foco.
MontaPai(qrPai.FieldByName(´CODANIMAL_PAI´).asInteger, No);
MontaMae(qrPai.FieldByName(´CODANIMAL_MAE´).asInteger, No);
end;
Finally
qrPai.Free;
end;
end;

Procedure TfmArvore.MontaMae(RecPai: Integer; NoPai:TTreeNode);
Var qrMae: TIBQuery;
No: TTreeNode;
begin
qrMae:=TIBQuery.Create(nil);
Try
qrMae.DataBase:=IBDatabase1;
qrMae.Transaction:=TransactionMostraCategoria;
qrMae.sql.Clear;
qrMae.SQL.Text:=´Select CODANIMAL, NOME, CODANIMAL_PAI, CODANIMAL_MAE from ANIMAL Where CODANIMAL=:Mae´;
qrMae.ParambyName(´Mae´).AsInteger:=RecPai;
qrMae.Open;
if Not qrMae.IsEmpty then begin
if NoPai<>edNiveis.TopItem then
NoPai.HasChildren:=Not qrMae.EOF;
No:=edNiveis.Items.AddChildObject(
NoPai, ´Mãe - ´+qrMae[´NOME´], Pointer(qrMae.FieldByName(´CODANIMAL´).asInteger));
No.ImageIndex:=2;
No.SelectedIndex := No.ImageIndex; // Mantem a imagem do No qndo tem o foco.
MontaPai(qrMae.FieldByName(´CODANIMAL_PAI´).asInteger, No);
MontaMae(qrMae.FieldByName(´CODANIMAL_MAE´).asInteger, No);
end;
Finally
qrMae.Free;
end;
end;

Procedure TfmArvore.MontaNivel(RecPai: Integer; NoPai:TTreeNode);
Var qrSubNivel: TIBQuery;
No: TTreeNode;
Aux:String;
begin
Aux:=´´;
qrSubNivel:=TIBQuery.Create(nil);
Try
qrSubNivel.DataBase:=IBDatabase1;
qrSubNivel.Transaction:=TransactionMostraCategoria;
if RecPai=0 then begin
qrSubNivel.sql.Clear;
qrSubNivel.SQL.Text:=´Select CODANIMAL, NOME, CODANIMAL_PAI, CODANIMAL_MAE ´+
´from ANIMAL Where (CODANIMAL_PAI IS NOT NULL OR CODANIMAL_MAE IS NOT NULL) ´+
´Or (CODANIMAL_PAI IS NULL OR CODANIMAL_MAE IS NULL) ORDER BY NOME´;
end;
qrSubNivel.Open;
if NoPai<>edNiveis.TopItem then
NoPai.HasChildren:=Not qrSubNivel.EOF;
While not qrSubNivel.Eof do begin
No:=edNiveis.Items.AddChildObject(
NoPai, qrSubNivel[´NOME´], Pointer(qrSubNivel.FieldByName(´CODANIMAL´).asInteger));
MontaPai(qrSubNivel.FieldByName(´CODANIMAL_PAI´).asInteger, No);
MontaMae(qrSubNivel.FieldByName(´CODANIMAL_MAE´).asInteger, No);
No.ImageIndex:=0;
No.SelectedIndex := No.ImageIndex; // Mantem a imagem do No qndo tem o foco.
qrSubNivel.Next;
end;
Finally
qrSubNivel.Free;
end;
end;

procedure TfmArvore.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
fmArvore:=Nil;
Action:=CAFree;
end;

procedure TfmArvore.btSairClick(Sender: TObject);
begin
fmArvore.Close;
end;

procedure TfmArvore.FormKeyPress(Sender: TObject; var Key: Char);
begin
if Key=#27 then btSairClick(Sender);
end;

procedure TfmArvore.FormCreate(Sender: TObject);
begin
MontaNivel(0,edNiveis.TopItem);
end;

end.


Responder

Gostei + 0

30/09/2003

Caboldo

Pessoal

Fico agradecido pela ajuda q vc me deram, ainda nao completei meu trabalho, mas ja tive ideia de como funciona, e agora estou fazendo teste para aplicar

muito obrigado


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar