Sie sind auf Seite 1von 11

10/3/2016

Montar TreeView usando um DataSet

Buscar

favorito(4)

fontes

imprimir

anotar

marcarcomolido

tirardvidas

Montar TreeView usando um


DataSet
Veja nesta Quick como montar um TreeView usando um DataSet.

(8) (0)

Ol galera, nesta Quick Tips, irei atender a um pedido de um leitor, onde o mesmo pediu para mostra
como ler umas tabelas num banco qualquer, e preencher uma TreeView representando a estrutura
http://www.devmedia.com.br/montar-treeview-usando-um-dataset/16991

1/11

10/3/2016

Montar TreeView usando um DataSet

do mesmo, veja o banco de dados :

Figura 1: Modelagem
Temos que mostrar uma rvore mais ou menos parecida com a seguinte :

Unidade

Curso

Turma

So Paulo Matemtica Turmas M-A, Turma M-B.

Parana

Letras

Turmas L-A, Turma L-B.

Par

Ed. Fisica

Turmas EF-A, Turma EF-B.

http://www.devmedia.com.br/montar-treeview-usando-um-dataset/16991

2/11

10/3/2016

Montar TreeView usando um DataSet

Vamos agora mostrar o script, feito para Firebird, veja

CREATE TABLE "UNIDADE" (


"IDUNIDADE" INTEGER NOT NULL,
"DESCRICAO" VARCHAR(20),
PRIMARY KEY ("IDUNIDADE")
);
CREATE TABLE "CURSO" (
"IDCURSO" INTEGER NOT NULL,
"IDUNIDADE" INTEGER NOT NULL,
"DESCRICAO" VARCHAR(20),
PRIMARY KEY ("IDCURSO")
);
CREATE TABLE "TURMA" (
"IDTURMA" INTEGER NOT NULL,
"IDCURSO" INTEGER NOT NULL,
"DESCRICAO" VARCHAR(20),
PRIMARY KEY ("IDTURMA")
);

ALTER TABLE "CURSO" ADD FOREIGN KEY ("IDUNIDADE")


REFERENCES "UNIDADE" ("IDUNIDADE") ON UPDATE NO ACTION ON DELETE NO ACTION ;
ALTER TABLE "TURMA" ADD FOREIGN KEY ("IDCURSO")
REFERENCES "CURSO" ("IDCURSO") ON UPDATE NO ACTION ON DELETE NO ACTION ;

Agora vamos a montagem do cdigo para podermos montar o TreeView, adicione em uma nova
aplicao, ClientDataSet, SQLDataSet, DataSetProvider, e no adicione a seguinte query, no
http://www.devmedia.com.br/montar-treeview-usando-um-dataset/16991

3/11

10/3/2016

Montar TreeView usando um DataSet

SQLDataSet:

SELECT U.DESCRICAO DESCUNIDADE


C.DESCRICAO DESCCURSO,
T.DESCRICAO DESCTURMA,
FROM TURMA T, CURSO C, UNIDADE U
WHERE U.IDUNIDADE = C.IDUNIDADE
AND C.IDCURSO = T.IDCURSO
ORDER BY U.DESCRICAO, C.DESCRICAO, T.DESCRICAO

A partir da faam a congurao dos 3 componentes, de forma tradicional.Adicione tambm um


TreeView, e um boto para podermos executar a montagem da rvore, veja o layout do Form.

CDIGOS

ASSINEMVP

BaixeoAPP

Login

Figura 2: Layout do formulrio

http://www.devmedia.com.br/montar-treeview-usando-um-dataset/16991

4/11

10/3/2016

Montar TreeView usando um DataSet

No Clique do Boto iremos implementar o seguinte cdigo :

procedure TForm1.BitBtn1Click(Sender: TObject);


Var
ItemUltiimoCurso, ItemUltimaUnidade, ItemUltimaTurma: TTreeNode;
xUnidadeAnt, xCursoAnt, xTurmaAnt: String;
begin
while not CDS.Eof do
begin
if xUnidadeAnt <> CDS.FieldByName('IDUNIDADE').AsString then
begin
ItemUltimaUnidade := TreeView1.Items.AddChild(Nil,
CDS.FieldByName('DESCUNIDADE').AsString);
end;
if xCursoAnt <> CDS.FieldByName('IDCURSO').AsString then
begin
ItemUltiimoCurso := TreeView1.Items.AddChild(ItemUltimaUnidade,
CDS.FieldByName('DESCCURSO').AsString);
end;
if xTurmaAnt <> CDS.FieldByName('IDTURMA').AsString then
begin
ItemUltimaTurma := TreeView1.Items.AddChild(ItemUltiimoCurso,
CDS.FieldByName('DESCTURMA').AsAsString);
end;
xUnidadeAnt := CDS.FieldByName('IDUNIDADE').AsString;

CDS.
CDIGOS
ASSINEMVP
xCu
rsoAnt :=
FieldByName('IDCURSO').AsString;

BaixeoAPP

Login

xTurmaAnt := CDS.FieldByName('IDTURMA').AsString;
CDS.Next;
end;
end;

http://www.devmedia.com.br/montar-treeview-usando-um-dataset/16991

5/11

10/3/2016

Montar TreeView usando um DataSet

Veja o Resultado nal

Figura 3: Exemplo pronto


ASSINEMVP
Fico por CDIGOS
aqui ate prxima.

BaixeoAPP

Login

Um abrao
Wesley Y

http://www.devmedia.com.br/montar-treeview-usando-um-dataset/16991

6/11

10/3/2016

Montar TreeView usando um DataSet

wesley@lithic.com.br
PublicadonoCanalDelphi

por Wesley y. Batista


CoordenadoreditorialDevMedia

Ajude-nos a evoluir: voc gostou do post?

(8)

(0)

Compartilhe:

Ficou com alguma dvida?


Post aqui sua dvida ou comentrio que nossa equipe responder o mais rpido possvel.

CDIGOS

ASSINEMVP

BaixeoAPP

Login

InforsystemLtda

Ol,muitobacanaseuexemplo.
GostariadesaberseexistealgumaformadeaoselecionarumndaTreeVieweuconsigaretornaroiddessen?
http://www.devmedia.com.br/montar-treeview-usando-um-dataset/16991

7/11

10/3/2016

Montar TreeView usando um DataSet

h+1ms

DouglasClaudio

OlInforsystem,obrigadopeloseucomentrio.
EnviamossuasolicitaoEquipeDevMediaeestamosnoaguardodeumfeedbackdamesma.
Umabrao.
h+1ms

HlioDevmedia

CONSULTOR

Ol,tudobem?
Sevocdesejacapturaroiddonclicandoemcimaporexemplo,voctemalgumaspropriedadesqueauxiliam
nistopormpodemnosairdojeitoquevocespera.
porexemplo,apropriedadeTreeView1.Selected.Indexretornaoidnonemrelaoaonanterior,jo
TreeView1.Selected.Levelmostraqualonveldonemqueeleest,dapossivelfazerumacontaparadizer
qualoidgeraldentrodaTreeView.
SevocestinteressadoemretornaroIDdatabela,entonopossveldaformaquevocestesperando.O
corretoseriavoccriarumaheranadaclasseTTreeNodeeacrescentarumapropriedadeIDBancoporexemploe
quandoforcriarumnovoTreeNodebastaacrescentarcomonoexemplo:

if xUnidadeAnt <> CDS.FieldByName('IDUNIDADE').AsString then

CDIGOS

begin

ASSINEMVP

BaixeoAPP

Login

ItemUltimaUnidade := TreeView1.Items.AddChild(Nil, CDS.FieldByName('DESCUNIDADE').AsString);


ItemUltimaUnidade.IDBanco := CDS.FieldByName('IDUNIDADE').AsInteger;
end;

http://www.devmedia.com.br/montar-treeview-usando-um-dataset/16991

8/11

10/3/2016

Montar TreeView usando um DataSet

pronto,cadanteroidqueexistenobanco.
h+1ms

Adicionar um comentrio...

Rafael

BomDiaWesley.Eugostariadeumaajudinhasetiverumtempinho.
Estouprecisandojustamentedefazeroquevocfezeorestanteeumeviro.
Adiferenaqueeuqueroapenasmostrar"Fabricantes"comonpaieosmodelosdecadafabricantecomons
filho.
Fiztudocomovocescreveunotpicomastiveumproblema:
1Noinciodocdigonoeventoclickdobotovocescreveu:
ifxUnidadeAnt'IDUNIDADE').AsStringthen
Nosoubeaocertooqueeraparaescreverpoisviquefaltouumparentesesenoseisevocestavaquerendo
escreverum"FieldByName",sepudercorrigirficomuitoagradecido.
Issoserepeteaolongodocdigo.
Conseguindofazeresseseuexemplofuncionarjbastapoisorestanteeumevirocomoeditarosnodes,incluir,
excluireeditarintegrandocomobancodedados
BaixeoAPP
Login
CDIGOS
ASSINEMVP
h+1ano

[autor]WesleyYamazack

OlRafael,obrigadopeloaviso,poderiaconferirnovamenteopost?
Coloqueitambmnaopodecdigofonte,pravocbaixaroexemplotodo.

http://www.devmedia.com.br/montar-treeview-usando-um-dataset/16991

9/11

10/3/2016

Montar TreeView usando um DataSet

Umabrao
h+1ano

Rafael

OkWesley!Muitoobrigadopelaajuda!
h+1ano

Adicionar um comentrio...

Mais posts
Artigo

Desenvolva aplicaes com MongoDB


Artigo

Tcnicas de debug
no DelphiASSINEMVP
CDIGOS

BaixeoAPP

Login

Artigo

ListView: Listagem de dados dinmica em aplicaes mobile


Video aula

Criando um BD e Data Module - Curso Desenvolvendo para Android com Delphi - Aula 16
http://www.devmedia.com.br/montar-treeview-usando-um-dataset/16991

10/11

10/3/2016

Montar TreeView usando um DataSet

Video aula

GPS e Mapas - Curso Desenvolvendo para Android com Delphi - Aula 15


Listar mais contedo

DevMedia
Curtir Pgina

124 mil curtidas

Publique | Assine | Faleconosco


Seja o primeiro de seus amigos a curtir isso.

HospedagemwebporPorta80WebHosting

CDIGOS

http://www.devmedia.com.br/montar-treeview-usando-um-dataset/16991

ASSINEMVP

BaixeoAPP

Login

11/11

Das könnte Ihnen auch gefallen