Fórum Problemas com TreeView no OnShow do Form #326526
31/07/2006
0
entao em um dos meus formulários tenho duas tabelas
Tbl_R_Substancias_2 = tabela Detalhe
Tbl_R_Substancias = tabela Mestre
para trazer os dados para o TreeView eu fiz um select que vai criar um Node Root para cada Registro da tabela detalhe, e outro select que vai jogar todos os dados da tabela mestre - cujos o ´codigo de descrição´ for igual ao código da tabela detalhe - em Nodes filhos, no seu respectivo Node Root.
Bom, o fato é que esse procedure funciona muito bem quando eu executo ele atravez de um botão, depois do form criado, porem no enevto OnShow do Form ele me da aquele erro ´Access violation at adress 0042616A of adress 00000394´.
Alguem saberia me ajudar com isso, pois eu gostaria que esse procedure estrivesse no OnShow do Form
Segue abaixo a procedure:
procedure AtualizaArvore;
begin
{Se não estiver selecionado}
if( R_Substancias.TV.Selected = nil ) then
begin
{Existe um node Root?}
if( R_Substancias.TV.Items.Count = 0 ) then
begin
DM.Tbl_R_Substancias_2.Close;
DM.Tbl_R_Substancias_2.SelectSQL.Clear;
DM.Tbl_R_Substancias_2.SelectSQL.Add(´SELECT * FROM NBR10004_2004_SUBSTANCIAS_2 ORDER BY DESCRICAO´);
DM.Tbl_R_Substancias_2.Open;
DM.Tbl_R_Substancias_2.First;
R_Substancias.TV.items.BeginUpdate;
While not DM.Tbl_R_Substancias_2.Eof do
begin
{Adiciona o Node Root}
with R_Substancias.TV.Items.AddFirst( nil, DM.Tbl_R_Substancias_2DESCRICAO.AsString + ´ ( ´ + DM.Tbl_R_Substancias_2TIPO.AsString + ´ )´) do
begin
Selected := true;
{Seta a imagem root padrao}
ImageIndex := DM.Tbl_R_Substancias_2CODIGO_IMAGEM.AsInteger;
{Seta a imagem root selecionada.}
SelectedIndex := DM.Tbl_R_Substancias_2CODIGO_IMAGEM.AsInteger;
// Insere as substancias filhas do node root ---------
DM.Tbl_R_Substancias.Close;
DM.Tbl_R_Substancias.SelectSQL.Clear;
DM.Tbl_R_Substancias.SelectSQL.Add(´SELECT * FROM NBR10004_2004_SUBSTANCIAS WHERE CODIGO_DESCRICAO = ´+DM.Tbl_R_Substancias_2CODIGO.AsString);
DM.Tbl_R_Substancias.Open;
DM.Tbl_R_Substancias.First;
While not DM.Tbl_R_Substancias.Eof do
begin
{Adidiona o Node Como um Filho do Node Selecionado}
with R_Substancias.TV.Items.AddChildFirst( R_Substancias.TV.Selected, DM.Tbl_R_SubstanciasNOME_COMUM.AsString ) do
begin
{Set the image used when the node is not selected}
ImageIndex := 0;
{Image used when the node is selected}
SelectedIndex := 2;
MakeVisible;
end;
DM.Tbl_R_Substancias.Next;
end;
//----------------------------------------------------
end;
DM.Tbl_R_Substancias_2.Next;
end;
R_Substancias.TV.items.EndUpdate;
end;
end;
end;
Abraços a todos!
Mahdak
Curtir tópico
+ 0Posts
31/07/2006
Mahdak
- TV = TreeView
- meu banco = Firebird 1.5.3
- Delphi 7
- Ainda nao implementei o List View (O problema é só com o TreeView)
Abraços
Gostei + 0
02/08/2006
Mahdak
Gostei + 0
02/08/2006
Bon Jovi
Gostei + 0
07/08/2006
Mahdak
depurei... da uma olhada na imagem:
[img:6039e81601]http://www.colegioestadual.com.br/japa/images/erro.jpg[/img:6039e81601]
e dai??
Gostei + 0
08/08/2006
Siam
Gostei + 0
08/08/2006
Mahdak
eu fasso um select para atualizar a tabela(que ja verifiquei e nao tem problemas)
e depois do select eu chamo a procedure ´atualizaarvore;´
Gostei + 0
08/08/2006
Siam
Seu TV está instanciado ?
Gostei + 0
08/08/2006
Mahdak
Desculpe mas o que voce quer dizer por TreeView instanciado?
Gostei + 0
08/08/2006
Siam
Gostei + 0
08/08/2006
Mahdak
Gostei + 0
08/08/2006
Siam
Gostei + 0
08/08/2006
Mahdak
Gostei + 0
08/08/2006
Siam
Coloque sua procedure na mesma unit do Form.
Na implementação coloque:
procedure R_Substancias.AtualizaArvore;
Gostei + 0
08/08/2006
Mahdak
abração!
Gostei + 0
11/08/2006
Mahdak
só repostando a imagem acima que nao da mais de ver
[img:4619b84e21]http://www.colegioestadual.com.br/japa/imagens/erro.jpg[/img:4619b84e21]
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)