Como criar treeview baseado em banco de dados
Olá amigos do fórum, boa noite, venho com uma dúvida, na qual sempre encontro ajuda dos amigos aqui.
Em um form, tenho dois componentes, do lado esquerdo o treeviews, e do lado direito um listview.
O que preciso:
1 - que no treeview, ele crie automaticamente com intes que esteja em uma pequena tabela
2 - Ao clicar em um item do treview ele atualiza o listview, com o conteudo da tabela relacionada.
O que tenho
Tabela um - classes
Tabela dois - alunos
As modificações, inserções serão no tradicional, em um form de cadastro, mas preciso que na janela do form principal tenha isso.
Como devo fazer, para que o treview busque o conteudo da tabela classe, e ao clicar em algum item do treeview ele abra a tabela de aluno relacionada a ela no listview do lado.
Estrutura
tbclasse
classe_id - integer
classe_nome - varchar
tbaluno
aluno_id - integer
aluno_classeid - integer
aluno_nome - varchar
Aradeço a todos.

Júnior Sistemas
Curtidas 0
Melhor post

Marcos Barbosa
04/07/2011
Bom dia.
Aqui vai um exemplo mais completo, mas acho que pode lhe ajudar bastante.
Segue fonte abaixo.
Objeto a ser usado:
TChaveTree = class
codigo : string;
tipo : string;
CodigoAnterior : string;
end;
Declare o mesmo acima da class (TForm)
procedures Utilizadas
{
procedure InsereSubItem(Raiz: TTreeNode; Titulo: String; Imagem, Nivel: Integer);
procedure MontaTiposDeEnsino(Raiz : TTreeNode);
procedure MontaCursosDeEnsino(TNTitulo, TNTipoClassi : TTreeNode);
procedure MontaSeriesDeEnsino(TNTitulo, TNTipoEnsino : TTreeNode);
procedure MontaTurmasDeEnsino(TNTitulo, TNTipoTurnos : TTreeNode);
}
procedure TFormViewAcademico.InsereSubItem(Raiz: TTreeNode; Titulo: String;
Imagem, Nivel: Integer);
var TN: TTreeNode;
C : TChaveTree;
begin
C := TChaveTree.Create;
TN := Tree.Items.AddChildObject(Raiz, Titulo, C);
TN.ImageIndex := Imagem;
TN.StateIndex := Nivel;
TN.HasChildren := true;
end;
procedure TFormViewAcademico.FormShow(Sender: TObject);
begin
//Tree - é o componente do tree-view
screen.cursor := crHourGlass;
try
Tree.Items.BeginUpdate;
Tree.Items.Clear;
InsereSubItem(nil,'ENSINOS',0,0);
finally
Tree.Items.EndUpdate;
screen.cursor := crDefault;
end;
end;
//Arvore completa desde o tipo de ensino até a turma
-Anos
--Ensinos
---Cursos
-----Series
-------Turmas
procedure TFormViewAcademico.MontaTiposDeEnsino(Raiz: TTreeNode);
var
C : TChaveTree;
TN : TTreeNode;
begin
try
Qry.Close;
Qry.SQL.Clear;
Qry.SQL.Add('seu comando');
cds.Close;
Cds.Open;
Cds.First;
while not Cds.Eof do
begin
C := TChaveTree.Create;
C.Codigo := Cds.FieldByName('Codigo').AsString;
c.CodigoAnterior := Cds.FieldByName('Codigo').AsString;
C.Tipo := 'CLASSIFICACAO';
TN := Tree.Items.AddChildObject(Raiz, Cds.FieldByName('Descricao').AsString, C);
TN.ImageIndex := 0;
InsereSubItem(TN,'Cursos',1,1);
TN.HasChildren := true;
Cds.Next;
end;
finally
Tree.Items.EndUpdate;
screen.cursor := crDefault;
end;
end;
procedure TFormViewAcademico.MontaCursosDeEnsino(TNTitulo,
TNTipoClassi: TTreeNode);
var
C : TChaveTree;
CodAnterior: string;
TN : TTreeNode;
begin
try
C := TNTipoClassi.Data;
CodAnterior := c.CodigoAnterior;
Qry.Close;
Qry.SQL.Clear;
Qry.SQL.Add('seu comando');
Qry.ParamByName('codigo').AsInteger := StrToInt(c.codigo);
cds.Close;
Cds.Open;
Cds.First;
while not Cds.Eof do
begin
C := TChaveTree.Create;
C.Codigo := Cds.FieldByName('Codigo').AsString;
c.CodigoAnterior := CodAnterior;
C.Tipo := 'CURSOS';
TN := Tree.Items.AddChildObject(TNTitulo, Cds.FieldByName('Descricao').AsString, C);
TN.ImageIndex := 1;
InsereSubItem(TN,'Séries',2,2);
TN.DropTarget := true;
Cds.Next;
end;
finally
Tree.Items.EndUpdate;
screen.cursor := crDefault;
end;
end;
procedure TFormViewAcademico.MontaSeriesDeEnsino(TNTitulo,
TNTipoEnsino: TTreeNode);
var
C : TChaveTree;
CodAnterior: string;
TN : TTreeNode;
begin
try
C := TNTipoEnsino.Data;
CodAnterior := c.CodigoAnterior;
Qry.Close;
Qry.SQL.Clear;
Qry.SQL.Add('seu comando');
Qry.ParamByName('codigo').AsInteger := StrToInt(c.codigo);
cds.Close;
Cds.Open;
Cds.First;
while not Cds.Eof do
begin
C := TChaveTree.Create;
C.Codigo := Cds.FieldByName('Codigo').AsString;
c.CodigoAnterior := CodAnterior;
C.Tipo := 'SERIES';
TN := Tree.Items.AddChildObject(TNTitulo, Cds.FieldByName('Descricao').AsString, C);
TN.ImageIndex := 2;
InsereSubItem(TN,'Turmas',3,3);
TN.DropTarget := true;
Cds.Next;
end;
finally
Tree.Items.EndUpdate;
screen.cursor := crDefault;
end;
end;
procedure TFormViewAcademico.MontaTurmasDeEnsino(TNTitulo,
TNTipoTurnos: TTreeNode);
var
C : TChaveTree;
CodAnterior: string;
TN : TTreeNode;
a, m, d : word;
begin
DecodeDate(Now,a,m,d);
try
C := TNTipoTurnos.Data;
CodAnterior := c.CodigoAnterior;
Qry.Close;
Qry.SQL.Clear;
Qry.SQL.Add('seu comando');
Qry.ParamByName('codigo').AsInteger := StrToInt(c.codigo);
cds.Close;
Cds.Open;
Cds.First;
while not Cds.Eof do
Aqui vai um exemplo mais completo, mas acho que pode lhe ajudar bastante.
Segue fonte abaixo.
Objeto a ser usado:
TChaveTree = class
codigo : string;
tipo : string;
CodigoAnterior : string;
end;
Declare o mesmo acima da class (TForm)
procedures Utilizadas
{
procedure InsereSubItem(Raiz: TTreeNode; Titulo: String; Imagem, Nivel: Integer);
procedure MontaTiposDeEnsino(Raiz : TTreeNode);
procedure MontaCursosDeEnsino(TNTitulo, TNTipoClassi : TTreeNode);
procedure MontaSeriesDeEnsino(TNTitulo, TNTipoEnsino : TTreeNode);
procedure MontaTurmasDeEnsino(TNTitulo, TNTipoTurnos : TTreeNode);
}
procedure TFormViewAcademico.InsereSubItem(Raiz: TTreeNode; Titulo: String;
Imagem, Nivel: Integer);
var TN: TTreeNode;
C : TChaveTree;
begin
C := TChaveTree.Create;
TN := Tree.Items.AddChildObject(Raiz, Titulo, C);
TN.ImageIndex := Imagem;
TN.StateIndex := Nivel;
TN.HasChildren := true;
end;
procedure TFormViewAcademico.FormShow(Sender: TObject);
begin
//Tree - é o componente do tree-view
screen.cursor := crHourGlass;
try
Tree.Items.BeginUpdate;
Tree.Items.Clear;
InsereSubItem(nil,'ENSINOS',0,0);
finally
Tree.Items.EndUpdate;
screen.cursor := crDefault;
end;
end;
//Arvore completa desde o tipo de ensino até a turma
-Anos
--Ensinos
---Cursos
-----Series
-------Turmas
procedure TFormViewAcademico.MontaTiposDeEnsino(Raiz: TTreeNode);
var
C : TChaveTree;
TN : TTreeNode;
begin
try
Qry.Close;
Qry.SQL.Clear;
Qry.SQL.Add('seu comando');
cds.Close;
Cds.Open;
Cds.First;
while not Cds.Eof do
begin
C := TChaveTree.Create;
C.Codigo := Cds.FieldByName('Codigo').AsString;
c.CodigoAnterior := Cds.FieldByName('Codigo').AsString;
C.Tipo := 'CLASSIFICACAO';
TN := Tree.Items.AddChildObject(Raiz, Cds.FieldByName('Descricao').AsString, C);
TN.ImageIndex := 0;
InsereSubItem(TN,'Cursos',1,1);
TN.HasChildren := true;
Cds.Next;
end;
finally
Tree.Items.EndUpdate;
screen.cursor := crDefault;
end;
end;
procedure TFormViewAcademico.MontaCursosDeEnsino(TNTitulo,
TNTipoClassi: TTreeNode);
var
C : TChaveTree;
CodAnterior: string;
TN : TTreeNode;
begin
try
C := TNTipoClassi.Data;
CodAnterior := c.CodigoAnterior;
Qry.Close;
Qry.SQL.Clear;
Qry.SQL.Add('seu comando');
Qry.ParamByName('codigo').AsInteger := StrToInt(c.codigo);
cds.Close;
Cds.Open;
Cds.First;
while not Cds.Eof do
begin
C := TChaveTree.Create;
C.Codigo := Cds.FieldByName('Codigo').AsString;
c.CodigoAnterior := CodAnterior;
C.Tipo := 'CURSOS';
TN := Tree.Items.AddChildObject(TNTitulo, Cds.FieldByName('Descricao').AsString, C);
TN.ImageIndex := 1;
InsereSubItem(TN,'Séries',2,2);
TN.DropTarget := true;
Cds.Next;
end;
finally
Tree.Items.EndUpdate;
screen.cursor := crDefault;
end;
end;
procedure TFormViewAcademico.MontaSeriesDeEnsino(TNTitulo,
TNTipoEnsino: TTreeNode);
var
C : TChaveTree;
CodAnterior: string;
TN : TTreeNode;
begin
try
C := TNTipoEnsino.Data;
CodAnterior := c.CodigoAnterior;
Qry.Close;
Qry.SQL.Clear;
Qry.SQL.Add('seu comando');
Qry.ParamByName('codigo').AsInteger := StrToInt(c.codigo);
cds.Close;
Cds.Open;
Cds.First;
while not Cds.Eof do
begin
C := TChaveTree.Create;
C.Codigo := Cds.FieldByName('Codigo').AsString;
c.CodigoAnterior := CodAnterior;
C.Tipo := 'SERIES';
TN := Tree.Items.AddChildObject(TNTitulo, Cds.FieldByName('Descricao').AsString, C);
TN.ImageIndex := 2;
InsereSubItem(TN,'Turmas',3,3);
TN.DropTarget := true;
Cds.Next;
end;
finally
Tree.Items.EndUpdate;
screen.cursor := crDefault;
end;
end;
procedure TFormViewAcademico.MontaTurmasDeEnsino(TNTitulo,
TNTipoTurnos: TTreeNode);
var
C : TChaveTree;
CodAnterior: string;
TN : TTreeNode;
a, m, d : word;
begin
DecodeDate(Now,a,m,d);
try
C := TNTipoTurnos.Data;
CodAnterior := c.CodigoAnterior;
Qry.Close;
Qry.SQL.Clear;
Qry.SQL.Add('seu comando');
Qry.ParamByName('codigo').AsInteger := StrToInt(c.codigo);
cds.Close;
Cds.Open;
Cds.First;
while not Cds.Eof do
GOSTEI 1
Mais Respostas

Marcos Barbosa
21/06/2011
Bom dia.
Aqui vai um exemplo mais completo, mas acho que pode lhe ajudar bastante.
Segue fonte abaixo.
Objeto a ser usado:
TChaveTree = class
codigo : string;
tipo : string;
CodigoAnterior : string;
end;
Declare o mesmo acima da class (TForm)
procedures Utilizadas
{
procedure InsereSubItem(Raiz: TTreeNode; Titulo: String; Imagem, Nivel: Integer);
procedure MontaTiposDeEnsino(Raiz : TTreeNode);
procedure MontaCursosDeEnsino(TNTitulo, TNTipoClassi : TTreeNode);
procedure MontaSeriesDeEnsino(TNTitulo, TNTipoEnsino : TTreeNode);
procedure MontaTurmasDeEnsino(TNTitulo, TNTipoTurnos : TTreeNode);
}
procedure TFormViewAcademico.InsereSubItem(Raiz: TTreeNode; Titulo: String;
Imagem, Nivel: Integer);
var TN: TTreeNode;
C : TChaveTree;
begin
C := TChaveTree.Create;
TN := Tree.Items.AddChildObject(Raiz, Titulo, C);
TN.ImageIndex := Imagem;
TN.StateIndex := Nivel;
TN.HasChildren := true;
end;
procedure TFormViewAcademico.FormShow(Sender: TObject);
begin
//Tree - é o componente do tree-view
screen.cursor := crHourGlass;
try
Tree.Items.BeginUpdate;
Tree.Items.Clear;
InsereSubItem(nil,'ENSINOS',0,0);
finally
Tree.Items.EndUpdate;
screen.cursor := crDefault;
end;
end;
//Arvore completa desde o tipo de ensino até a turma
-Anos
--Ensinos
---Cursos
-----Series
-------Turmas
procedure MontaTiposDeEnsino(Raiz: TTreeNode);
var
C : TChaveTree;
TN : TTreeNode;
begin
try
Qry.Close;
Qry.SQL.Clear;
Qry.SQL.Add('seu comando');
cds.Close;
Cds.Open;
Cds.First;
while not Cds.Eof do
begin
C := TChaveTree.Create;
C.Codigo := Cds.FieldByName('Codigo').AsString;
c.CodigoAnterior := Cds.FieldByName('Codigo').AsString;
C.Tipo := 'CLASSIFICACAO';
TN := Tree.Items.AddChildObject(Raiz, Cds.FieldByName('Descricao').AsString, C);
TN.ImageIndex := 0;
InsereSubItem(TN,'Cursos',1,1);
TN.HasChildren := true;
Cds.Next;
end;
finally
Tree.Items.EndUpdate;
screen.cursor := crDefault;
end;
end;
procedure MontaCursosDeEnsino(TNTitulo,
TNTipoClassi: TTreeNode);
var
C : TChaveTree;
CodAnterior: string;
TN : TTreeNode;
begin
try
C := TNTipoClassi.Data;
CodAnterior := c.CodigoAnterior;
Qry.Close;
Qry.SQL.Clear;
Qry.SQL.Add('seu comando');
Qry.ParamByName('codigo').AsInteger := StrToInt(c.codigo);
cds.Close;
Cds.Open;
Cds.First;
while not Cds.Eof do
begin
C := TChaveTree.Create;
C.Codigo := Cds.FieldByName('Codigo').AsString;
c.CodigoAnterior := CodAnterior;
C.Tipo := 'CURSOS';
TN := Tree.Items.AddChildObject(TNTitulo, Cds.FieldByName('Descricao').AsString, C);
TN.ImageIndex := 1;
InsereSubItem(TN,'Séries',2,2);
TN.DropTarget := true;
Cds.Next;
end;
finally
Tree.Items.EndUpdate;
screen.cursor := crDefault;
end;
end;
procedure MontaSeriesDeEnsino(TNTitulo,
TNTipoEnsino: TTreeNode);
var
C : TChaveTree;
CodAnterior: string;
TN : TTreeNode;
begin
try
C := TNTipoEnsino.Data;
CodAnterior := c.CodigoAnterior;
Qry.Close;
Qry.SQL.Clear;
Qry.SQL.Add('seu comando');
Qry.ParamByName('codigo').AsInteger := StrToInt(c.codigo);
cds.Close;
Cds.Open;
Cds.First;
while not Cds.Eof do
begin
C := TChaveTree.Create;
C.Codigo := Cds.FieldByName('Codigo').AsString;
c.CodigoAnterior := CodAnterior;
C.Tipo := 'SERIES';
TN := Tree.Items.AddChildObject(TNTitulo, Cds.FieldByName('Descricao').AsString, C);
TN.ImageIndex := 2;
InsereSubItem(TN,'Turmas',3,3);
TN.DropTarget := true;
Cds.Next;
end;
finally
Tree.Items.EndUpdate;
screen.cursor := crDefault;
end;
end;
procedure MontaTurmasDeEnsino(TNTitulo,
TNTipoTurnos: TTreeNode);
var
C : TChaveTree;
CodAnterior: string;
TN : TTreeNode;
a, m, d : word;
begin
DecodeDate(Now,a,m,d);
try
C := TNTipoTurnos.Data;
CodAnterior := c.CodigoAnterior;
Qry.Close;
Qry.SQL.Clear;
Qry.SQL.Add('seu comando');
Qry.ParamByName('codigo').AsInteger := StrToInt(c.codigo);
cds.Close;
Cds.Open;
Cds.First;
while not Cds.Eof do
begin
C := TChaveTree.Create;
C.Codigo := Cds.FieldByName('Codigo').AsString;
c.CodigoAnterior := CodAnterior;
C.Tipo := 'TURMAS';
TN := Tree.Items.AddChildObject(TNTitulo, Cds.FieldByName('Descricao').AsString, C);
TN.ImageIndex := 4;
TN.DropTarget := true;
Cds.Next;
end;
finally
Tree.Items.EndUpdate;
screen.cursor := crDefault;
end;
end;
//Expandindo o tree-view
procedure TreeExpanding(Sender: TObject;
Node: TTreeNode; var AllowExpansion: Boolean);
begin
if Node.GetFirstChild <> nil
then exit;
Case Node.StateIndex of
0 : MontaTiposDeEnsino(Node);
1 : MontaCursosDeEnsino(Node, Node.GetPrev);
2 : MontaSeriesDeEnsino(Node, Node.GetPrev);
3 : MontaTurmasDeEnsino(Node, Node.GetPrev);
end;
end;
//demonstrando os dados de alunos da turma
//Click do tree-view
procedure TreeClick(Sender: TObject);
var
C : TChaveTree;
D : Tchave;
ListItem : TListItem;
begin
try
if Tree.Selected = nil
then exit
else // selecionou algum Node
begin
ListaAlunos.Items.Clear;
C := Tree.Selected.Data;
if C.tipo = 'TURMAS'
then
BEGIN // exibir os alunos da turma
with Qry do
begin
close;
sql.Clear;
sql.add('seu comando');
end;
with Cds do
begin
close;
Qry.ParamByName('turma').AsInteger := StrToInt(c.codigo);
Open;
end;
cds.First;
while not cds.Eof do
begin
D := Tchave.create;
D.Codigo := cds.fieldbyname('codigo').AsString;
d.Tipo := cds.fieldbyname('nome').AsString;
ListItem := ListaAlunos.Items.Add;
ListItem.Data := D;
cds.Next;
end;
ListaAlunos.Selected := ListaAlunos.TopItem;
end;
end;
except
on E: Exception do
MsgErro('Houve algum erro!'#13
+' Informe esta mensagem ao suporte'#13
+ E.Message);
end;
end;
Espero que tenha ajudado.
Qualquer coisa entra em contato.
Email : marcosfbarbosa@netsite.com.br
Att. Marcos
Aqui vai um exemplo mais completo, mas acho que pode lhe ajudar bastante.
Segue fonte abaixo.
Objeto a ser usado:
TChaveTree = class
codigo : string;
tipo : string;
CodigoAnterior : string;
end;
Declare o mesmo acima da class (TForm)
procedures Utilizadas
{
procedure InsereSubItem(Raiz: TTreeNode; Titulo: String; Imagem, Nivel: Integer);
procedure MontaTiposDeEnsino(Raiz : TTreeNode);
procedure MontaCursosDeEnsino(TNTitulo, TNTipoClassi : TTreeNode);
procedure MontaSeriesDeEnsino(TNTitulo, TNTipoEnsino : TTreeNode);
procedure MontaTurmasDeEnsino(TNTitulo, TNTipoTurnos : TTreeNode);
}
procedure TFormViewAcademico.InsereSubItem(Raiz: TTreeNode; Titulo: String;
Imagem, Nivel: Integer);
var TN: TTreeNode;
C : TChaveTree;
begin
C := TChaveTree.Create;
TN := Tree.Items.AddChildObject(Raiz, Titulo, C);
TN.ImageIndex := Imagem;
TN.StateIndex := Nivel;
TN.HasChildren := true;
end;
procedure TFormViewAcademico.FormShow(Sender: TObject);
begin
//Tree - é o componente do tree-view
screen.cursor := crHourGlass;
try
Tree.Items.BeginUpdate;
Tree.Items.Clear;
InsereSubItem(nil,'ENSINOS',0,0);
finally
Tree.Items.EndUpdate;
screen.cursor := crDefault;
end;
end;
//Arvore completa desde o tipo de ensino até a turma
-Anos
--Ensinos
---Cursos
-----Series
-------Turmas
procedure MontaTiposDeEnsino(Raiz: TTreeNode);
var
C : TChaveTree;
TN : TTreeNode;
begin
try
Qry.Close;
Qry.SQL.Clear;
Qry.SQL.Add('seu comando');
cds.Close;
Cds.Open;
Cds.First;
while not Cds.Eof do
begin
C := TChaveTree.Create;
C.Codigo := Cds.FieldByName('Codigo').AsString;
c.CodigoAnterior := Cds.FieldByName('Codigo').AsString;
C.Tipo := 'CLASSIFICACAO';
TN := Tree.Items.AddChildObject(Raiz, Cds.FieldByName('Descricao').AsString, C);
TN.ImageIndex := 0;
InsereSubItem(TN,'Cursos',1,1);
TN.HasChildren := true;
Cds.Next;
end;
finally
Tree.Items.EndUpdate;
screen.cursor := crDefault;
end;
end;
procedure MontaCursosDeEnsino(TNTitulo,
TNTipoClassi: TTreeNode);
var
C : TChaveTree;
CodAnterior: string;
TN : TTreeNode;
begin
try
C := TNTipoClassi.Data;
CodAnterior := c.CodigoAnterior;
Qry.Close;
Qry.SQL.Clear;
Qry.SQL.Add('seu comando');
Qry.ParamByName('codigo').AsInteger := StrToInt(c.codigo);
cds.Close;
Cds.Open;
Cds.First;
while not Cds.Eof do
begin
C := TChaveTree.Create;
C.Codigo := Cds.FieldByName('Codigo').AsString;
c.CodigoAnterior := CodAnterior;
C.Tipo := 'CURSOS';
TN := Tree.Items.AddChildObject(TNTitulo, Cds.FieldByName('Descricao').AsString, C);
TN.ImageIndex := 1;
InsereSubItem(TN,'Séries',2,2);
TN.DropTarget := true;
Cds.Next;
end;
finally
Tree.Items.EndUpdate;
screen.cursor := crDefault;
end;
end;
procedure MontaSeriesDeEnsino(TNTitulo,
TNTipoEnsino: TTreeNode);
var
C : TChaveTree;
CodAnterior: string;
TN : TTreeNode;
begin
try
C := TNTipoEnsino.Data;
CodAnterior := c.CodigoAnterior;
Qry.Close;
Qry.SQL.Clear;
Qry.SQL.Add('seu comando');
Qry.ParamByName('codigo').AsInteger := StrToInt(c.codigo);
cds.Close;
Cds.Open;
Cds.First;
while not Cds.Eof do
begin
C := TChaveTree.Create;
C.Codigo := Cds.FieldByName('Codigo').AsString;
c.CodigoAnterior := CodAnterior;
C.Tipo := 'SERIES';
TN := Tree.Items.AddChildObject(TNTitulo, Cds.FieldByName('Descricao').AsString, C);
TN.ImageIndex := 2;
InsereSubItem(TN,'Turmas',3,3);
TN.DropTarget := true;
Cds.Next;
end;
finally
Tree.Items.EndUpdate;
screen.cursor := crDefault;
end;
end;
procedure MontaTurmasDeEnsino(TNTitulo,
TNTipoTurnos: TTreeNode);
var
C : TChaveTree;
CodAnterior: string;
TN : TTreeNode;
a, m, d : word;
begin
DecodeDate(Now,a,m,d);
try
C := TNTipoTurnos.Data;
CodAnterior := c.CodigoAnterior;
Qry.Close;
Qry.SQL.Clear;
Qry.SQL.Add('seu comando');
Qry.ParamByName('codigo').AsInteger := StrToInt(c.codigo);
cds.Close;
Cds.Open;
Cds.First;
while not Cds.Eof do
begin
C := TChaveTree.Create;
C.Codigo := Cds.FieldByName('Codigo').AsString;
c.CodigoAnterior := CodAnterior;
C.Tipo := 'TURMAS';
TN := Tree.Items.AddChildObject(TNTitulo, Cds.FieldByName('Descricao').AsString, C);
TN.ImageIndex := 4;
TN.DropTarget := true;
Cds.Next;
end;
finally
Tree.Items.EndUpdate;
screen.cursor := crDefault;
end;
end;
//Expandindo o tree-view
procedure TreeExpanding(Sender: TObject;
Node: TTreeNode; var AllowExpansion: Boolean);
begin
if Node.GetFirstChild <> nil
then exit;
Case Node.StateIndex of
0 : MontaTiposDeEnsino(Node);
1 : MontaCursosDeEnsino(Node, Node.GetPrev);
2 : MontaSeriesDeEnsino(Node, Node.GetPrev);
3 : MontaTurmasDeEnsino(Node, Node.GetPrev);
end;
end;
//demonstrando os dados de alunos da turma
//Click do tree-view
procedure TreeClick(Sender: TObject);
var
C : TChaveTree;
D : Tchave;
ListItem : TListItem;
begin
try
if Tree.Selected = nil
then exit
else // selecionou algum Node
begin
ListaAlunos.Items.Clear;
C := Tree.Selected.Data;
if C.tipo = 'TURMAS'
then
BEGIN // exibir os alunos da turma
with Qry do
begin
close;
sql.Clear;
sql.add('seu comando');
end;
with Cds do
begin
close;
Qry.ParamByName('turma').AsInteger := StrToInt(c.codigo);
Open;
end;
cds.First;
while not cds.Eof do
begin
D := Tchave.create;
D.Codigo := cds.fieldbyname('codigo').AsString;
d.Tipo := cds.fieldbyname('nome').AsString;
ListItem := ListaAlunos.Items.Add;
ListItem.Data := D;
cds.Next;
end;
ListaAlunos.Selected := ListaAlunos.TopItem;
end;
end;
except
on E: Exception do
MsgErro('Houve algum erro!'#13
+' Informe esta mensagem ao suporte'#13
+ E.Message);
end;
end;
Espero que tenha ajudado.
Qualquer coisa entra em contato.
Email : marcosfbarbosa@netsite.com.br
Att. Marcos
GOSTEI 0

Emerson Nascimento
21/06/2011
Olá amigos do fórum, boa noite, venho com uma dúvida, na qual sempre encontro ajuda dos amigos aqui.
Em um form, tenho dois componentes, do lado esquerdo o treeviews, e do lado direito um listview.
O que preciso:
1 - que no treeview, ele crie automaticamente com intes que esteja em uma pequena tabela
2 - Ao clicar em um item do treview ele atualiza o listview, com o conteudo da tabela relacionada.
O que tenho
Tabela um - classes
Tabela dois - alunos
As modificações, inserções serão no tradicional, em um form de cadastro, mas preciso que na janela do form principal tenha isso.
Como devo fazer, para que o treview busque o conteudo da tabela classe, e ao clicar em algum item do treeview ele abra a tabela de aluno relacionada a ela no listview do lado.
Estrutura
tbclasse
classe_id - integer
classe_nome - varchar
tbaluno
aluno_id - integer
aluno_classeid - integer
aluno_nome - varchar
Aradeço a todos.
se você puder publicar seu e-mail, passo um exemplo que tenho aqui. bem simples de entender e creio que atenda a sua necessidade.
GOSTEI 0

Adilson Rumao
21/06/2011
Emerson você pode mandar um exemplo pra mim?
Estou com uma dúvida com relação a isso tbm.
Desde já obrigado pela atenção.
adilsonrumao@gmail.com
Estou com uma dúvida com relação a isso tbm.
Desde já obrigado pela atenção.
adilsonrumao@gmail.com
GOSTEI 0

Frederico Brigatte***
21/06/2011
Eu também quero um exemplo simples, poderia enviar para:
frederico.brigatte@itelefonica.com.br?
É exatamente que preciso.
frederico.brigatte@itelefonica.com.br?
É exatamente que preciso.
GOSTEI 0

Silvano Azevedo
21/06/2011
Boas
se puder enviar o exemplo via e-mail agradeço
xavierctba@msn.com
xavier
se puder enviar o exemplo via e-mail agradeço
xavierctba@msn.com
xavier
GOSTEI 0

Frederico Brigatte***
21/06/2011
Emerson,poderia me enviar o exemplo? No aguardo.
GOSTEI 0

Emerson Nascimento
21/06/2011
mando pra qual email?
GOSTEI 0

Frederico Brigatte***
21/06/2011
frederico.brigatte@gmail.com, agradeceria muito a ajuda...
GOSTEI 0

Frederico Brigatte***
21/06/2011
Emerson,
Não é bem isso que to querendo. Gostaria de preencher o TreeView com os itens do Menu do sistema e colocar CheckBox para quando clicar mostar ticado ou não.
É isso que to querendo. O que quero ta nesse link:
https://www.devmedia.com.br/forum/gravar-em-tabela-itens-do-menu/438291
Não é bem isso que to querendo. Gostaria de preencher o TreeView com os itens do Menu do sistema e colocar CheckBox para quando clicar mostar ticado ou não.
É isso que to querendo. O que quero ta nesse link:
https://www.devmedia.com.br/forum/gravar-em-tabela-itens-do-menu/438291
GOSTEI 0