Escrever valor de um parametro na TreeView
Olá a todos,
Estou com um pequeno problema, é não estou a ver a solução. Explicando, estou a cria uma treeview segundo uma tabela que é o menu o problema é que eu queria escrever o valor do campo ´Codigo´ na tree, para quando clicar nela com o mouse obtevesse esse código e procurava o formulário para o chamar. Esse código é númerico. Só que não estou conseguir nenhuma propriedade da treew que possa colocar. No MainMenu era fácil bastava escrever no propriedade TAG e no treeview alúém sabe?
Estou a cria os nós da tree com o seguinte código
Para o MainMenu era assim que fazia, mas para a Tree?
Estou com um pequeno problema, é não estou a ver a solução. Explicando, estou a cria uma treeview segundo uma tabela que é o menu o problema é que eu queria escrever o valor do campo ´Codigo´ na tree, para quando clicar nela com o mouse obtevesse esse código e procurava o formulário para o chamar. Esse código é númerico. Só que não estou conseguir nenhuma propriedade da treew que possa colocar. No MainMenu era fácil bastava escrever no propriedade TAG e no treeview alúém sabe?
Estou a cria os nós da tree com o seguinte código
Node := TreeView1.Items.Add(nil, Qry.FieldByName(´descrimenu´).AsString); ... Node := TreeView1.Items.Addchild(Nod, Qry.FieldByName(´descrimenu´).AsString);
Para o MainMenu era assim que fazia, mas para a Tree?
Item := TMenuItem.Create(nil); Item.Caption := Qry.FieldByName(´descrimenu´).AsString; Item.Tag := Qry.FieldByName(´CODIGO´).AsInteger; item.ImageIndex := Qry.FieldByName(´imagem´).AsInteger;
Porty
Curtidas 0
Respostas
Ipc$
16/09/2005
Node := TreeView1.Items.Add(nil, Qry.FieldByName(´descrimenu´).AsString); Node.Data := AllocMem(4); Move(Qry.FieldByName(´CODIGO´).AsInteger, Node.Data^, 4);
var Codigo:Integer; begin Codigo := PInteger(TreeView1.Selected.Data)^; end;
GOSTEI 0
Ipc$
16/09/2005
Desculpe, Move requer uma variável.
Codigo := Qry.FieldByName(´CODIGO´).AsInteger; Move(Codigo, Node.Data^, 4);
GOSTEI 0
Porty
16/09/2005
[quote:b74c46bcfa=´ipc$´]
[/quote:b74c46bcfa]
Ao colocar esre código dá o seguinte erro:
error unTree.ps(271):Variable required
Já agora pode dizer como faço isto:
Node := TreeView1.Items.Add(nil, Qry.FieldByName(´descrimenu´).AsString); Node.Data := AllocMem(4); Move(Qry.FieldByName(´CODIGO´).AsInteger, Node.Data^, 4);
[/quote:b74c46bcfa]
Ao colocar esre código dá o seguinte erro:
error unTree.ps(271):Variable required
Já agora pode dizer como faço isto:
Não esqueça de liberar a memória alocada para os Node.Data
GOSTEI 0
Ipc$
16/09/2005
Veja a segunda resposta.
GOSTEI 0
Porty
16/09/2005
[quote:405e38002b=´ipc$´]Veja a segunda resposta.[/quote:405e38002b]
Ao colocar o seguinte código dá Erro:
O erro que dá é: Error UnTree.pas(271): Variable required
Ao colocar o seguinte código dá Erro:
Move(Qry.FieldByName(´CODIGO´).AsInteger, Node.Data^, 4);
O erro que dá é: Error UnTree.pas(271): Variable required
GOSTEI 0
Ipc$
16/09/2005
Pois é, vc fez a conversão que está na segunda resposta ?
Codigo := Qry.FieldByName(´CODIGO´).AsInteger; Move(Codigo, Node.Data^, 4);
GOSTEI 0
Porty
16/09/2005
Ok já entendi é funciona direitinho. Já agora como eu faço para liberar a memória alocada para os Node.Data..
Obrigada
Obrigada
GOSTEI 0
Ipc$
16/09/2005
FreeMem(Node.Data);
GOSTEI 0
Porty
16/09/2005
[quote:b3c4a9bb98=´ipc$´][/quote:b3c4a9bb98]
Mas devo colocar este código qd? Depois de Criar a Tree, no momento de fechar aplicação??. Se for no momento de fechar aplicação acho que não é necessário pois o proprio delphi encarrega-se de fechar tudo certo?
FreeMem(Node.Data);
Mas devo colocar este código qd? Depois de Criar a Tree, no momento de fechar aplicação??. Se for no momento de fechar aplicação acho que não é necessário pois o proprio delphi encarrega-se de fechar tudo certo?
GOSTEI 0
Ipc$
16/09/2005
Bom, no momento de criar a Tree, os Node.Data eatão = nil.
Libere quando vc não for mais precisar dos códigos armazenados lá.
Teoricamente no fechamento do aplicativo, toda a memória é liberada, mas particularmente prefiro liberar a memória que aloco.
Libere quando vc não for mais precisar dos códigos armazenados lá.
Teoricamente no fechamento do aplicativo, toda a memória é liberada, mas particularmente prefiro liberar a memória que aloco.
GOSTEI 0