Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 31-05-2012
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 3.467
Poder: 21
newtron Va camino a la fama
Acceder al "data" de un treeview

Hola a tod@s.

Tengo un problema al intentar acceder al "data" de un treeview, lo creo de la siguiente manera:

Código Delphi [-]
procedure TFormFamilias.ActualizaArbol;
var
Nodo0,Nodo1,Nodo2,Nodo3,Nodo4: TTreeNode;
N: SmallInt;
begin
  Screen.Cursor:=crHourGlass;
  TreeView1.Items.Clear;
  Nodo0:=TreeView1.Items.AddChild(nil, 'Familias');
  DataModule1.EDBQuery1.SQL.Clear;
  DataModule1.EDBQuery1.SQL.Add('SELECT * FROM FAMILIAS ORDER BY CODIGO');
  DataModule1.EDBQuery1.ExecSQL;
  while not DataModule1.EDBQuery1.eof do begin
    N:=Length(DataModule1.EDBQuery1.FieldByName('CODIGO').AsString);
    case N of
      3: begin
        Nodo1:=TreeView1.Items.AddChild(Nodo0, DataModule1.EDBQuery1.FieldByName('NOMBRE').AsString);
        Nodo1.Data := Pointer(DataModule1.EDBQuery1.Fieldbyname('Codigo').AsString);
      end;
      6: begin
        Nodo2:=TreeView1.Items.AddChild(Nodo1, DataModule1.EDBQuery1.FieldByName('NOMBRE').AsString);
        Nodo2.Data := Pointer(DataModule1.EDBQuery1.Fieldbyname('Codigo').AsString);
      end;
      9: begin
        Nodo3:=TreeView1.Items.AddChild(Nodo2, DataModule1.EDBQuery1.FieldByName('NOMBRE').AsString);
        Nodo3.Data := Pointer(DataModule1.EDBQuery1.Fieldbyname('Codigo').AsString);
      end;
      12: begin
        Nodo4:=TreeView1.Items.AddChild(Nodo3, DataModule1.EDBQuery1.FieldByName('NOMBRE').AsString);
        Nodo4.Data := Pointer(DataModule1.EDBQuery1.Fieldbyname('Codigo').AsString);
      end;
    end;
    DataModule1.EDBQuery1.Next;
  end;
  Screen.Cursor:=crDefault;
end;

El problema es que después quiero acceder al valor del data, por ejemplo en el evento click del treeview pero no me da el valor correcto. He estado echando un vistazo a los post del foro y no encuentro dónde puede estar el problema.

He probado de dos maneras:

Código Delphi [-]
procedure TFormFamilias.TreeView1Click(Sender: TObject);
var
Nodo: TTreeNode;
begin
  Nodo:=TreeView1.Selected;
  ShowMessage(String(Nodo.Data));
end;

con este código salen cosas raras que no tienen nada que ver con el dato que debe de tener almacenado.

Código Delphi [-]
procedure TFormFamilias.TreeView1Click(Sender: TObject);
var
Nodo: TTreeNode;
begin
  Nodo:=TreeView1.Selected;
  ShowMessage(String(Nodo.Data^));
end;

con este otro código o no sale nada o da un access violation error

Agradeceré cualquier ayuda.

Gracias y un saludo
__________________
Be water my friend.
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
El programa se queda "colgado" mientras copia y luego "despierta" NeWsP OOP 5 10-03-2010 22:05:40
"String or binary data would be truncated" Gaim2205 Conexión con bases de datos 2 17-05-2008 14:32:40
Cómo acceder a las propiedades de un "Parent" NeoAnderson API de Windows 14 12-02-2008 21:13:46
Sólo para expertos: "Error reading iError.Picture.Data:Out of system resources" sami76 Varios 2 04-10-2007 13:53:31
Necesito llamar a métodos de clases "hija" desde su clase "padre" Flecha OOP 17 20-04-2007 00:03:53


La franja horaria es GMT +2. Ahora son las 06:46:40.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi