Tema: TreeView
Ver Mensaje Individual
  #7  
Antiguo 19-02-2008
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Reputación: 29
Lepe Va por buen camino
En realidad no hace falta adquirir memoria con la función "New", ya que la propiedad Data es de tipo puntero ocupando 2 bytes en memoria, lo mismo que ocupa un Integer.

Podría quedar así:
Código Delphi [-]
Nod:=TreeView1.Items.Add (nil,Query1.FieldByName('Descripcion').asstring);
Nod.Data := Pointer(Query1.Fieldbyname('Codigo').asinteger);
Y cuando queramos acceder:
Código Delphi [-]
MiNumero := Integer(Node.Selected.Data)
En este caso no tenemos que liberar nada de memoria cuando se libere el nodo, porque no hemos reservado memoria.

Lo realmente interesante es que podemos crear nuestro propio objeto y asociarlo a cada nodo, guardando mucha más información:
Código Delphi [-]
type Cliente = Class(TObject)
public
   nombre: string;
   apellido:string;
   direccion:string;
   TotalFacturado:currency;
end;

...
 cliente := TCliente.Create(nil);
 Nod:=TreeView1.Items.Add (nil,Query1.FieldByName('Descripcion').asstring);
          cliente);
  cliente.nombre := query1.fieldbyname(....);
  cliente.direccion:= ....

          nod.Selected :=true;
Por supuesto, al eliminar un TTreeNode si necesitamos liberar nuestro objeto Cliente (evento OnFreeNode).

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita