Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Acceder al "data" de un treeview (https://www.clubdelphi.com/foros/showthread.php?t=78975)

roman 31-05-2012 17:51:26

Supongo, así sin revisarlo mucho:

Código Delphi [-]
procedure TForm1.TreeView1Deletion(Sender: TObject; Node: TTreeNode);
begin
  TMiClase(Node.Data).Free;
end;

// Saludos

newtron 31-05-2012 18:30:30

Ok. Gracias. :)

ecfisa 31-05-2012 20:35:36

Hola newtron.

Me quedó en el tintero comentarte que no necesariamente tenes que crear una clase para el caso, en el enlace que puso Casimiro lo hice como ejemplo.

Otra forma que podrías usar la propiedad Data:
Código Delphi [-]
  ...
  Nodo1:=TreeView1.Items.AddChildObject(Nodo0, EDBQuery1.FieldByName('Name').AsString, EDBQuery1.GetBookmark);
  ..

Lo que te permite por ejemplo:
Código Delphi [-]
procedure TForm1.TreeView1Click(Sender: TObject);
var
  Nodo: TTreeNode;
  P: TPoint;
begin
  P:= ScreenToclient(Mouse.CursorPos);
  Nodo:= TreeView1.GetNodeAt(P.X, P.Y);
  if Nodo <> nil then
  begin
    EDBQuery1.GotoBookmark(Nodo.Data);
    ...
  end;
end;
Y si solo deseas almacenar el bookmark en los primeros nodos, deberías cambiar el condicional por:
Código Delphi [-]
     if (Nodo <> nil) and (Nodo.Level = 1) then

Saludos. :)

newtron 01-06-2012 09:16:33

Cita:

Empezado por ecfisa (Mensaje 433985)
Hola newtron.

Me quedó en el tintero comentarte que no necesariamente tenes que crear una clase para el caso, en el enlace que puso Casimiro lo hice como ejemplo.

Gracias amigo ecfisa. :)

Al González 01-06-2012 20:32:57

Bueno, voy a meter mi cuchara también. :)

Es sobre esto:
Código Delphi [-]
  DataModule1.EDBQuery1.SQL.Clear;
  DataModule1.EDBQuery1.SQL.Add('SELECT * FROM FAMILIAS ORDER BY CODIGO');
  DataModule1.EDBQuery1.Open;
  DataModule1.EDBQuery1.First;

Podría ser simplemente:
Código Delphi [-]
  DataModule1.EDBQuery1.SQL.Text := 'SELECT * FROM FAMILIAS ORDER BY CODIGO';
  DataModule1.EDBQuery1.Open;

A no ser que en el evento AfterOpen o en algún momento similar muevas EDBQuery1 de registro, la llamada a First puede quitarse (al abrir un conjunto de datos éste se posiciona en su primera fila).

Lo de asignar la sentencia en Text en lugar de usar Clear + Add, se explica por sí mismo. :)

Saludos.

newtron 02-06-2012 10:01:52

Cita:

Empezado por Al González (Mensaje 434093)
Bueno, voy a meter mi cuchara también. :)

Es sobre esto:
Código Delphi [-] DataModule1.EDBQuery1.SQL.Clear; DataModule1.EDBQuery1.SQL.Add('SELECT * FROM FAMILIAS ORDER BY CODIGO'); DataModule1.EDBQuery1.Open; DataModule1.EDBQuery1.First;


Podría ser simplemente:
Código Delphi [-] DataModule1.EDBQuery1.SQL.Text := 'SELECT * FROM FAMILIAS ORDER BY CODIGO'; DataModule1.EDBQuery1.Open;


A no ser que en el evento AfterOpen o en algún momento similar muevas EDBQuery1 de registro, la llamada a First puede quitarse (al abrir un conjunto de datos éste se posiciona en su primera fila).

Lo de asignar la sentencia en Text en lugar de usar Clear + Add, se explica por sí mismo. :)

Saludos.

Bien bien... ahí te he visto fino.... :D


La franja horaria es GMT +2. Ahora son las 19:20:38.

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