Apuntadores a Objetos

Hola: Charl Linssen
Mi problema es básicamente el siguiente:
Tengo que crear un componente en run time, dicho componente lo derivo de la clase TspeedButton y posteriormente lo agrego un par de cositas (como un label y un apuntador al siguiente elemento, y una par de variables más), pero no solo tengo que crearlo, siono que ademas debo de generar una lista enlazada de dichos componentes y seguirles la pista durante la ejecución, según yo se hace a travea de apuntadores, pero la verdad es de que ya me duele la cabeza intentado hacer esto y no lo logro, te mando algo del código que tengo y espero que me puedas ayudar en algo.
TMesa= Class(TSpeedButton)
Public
IdMesa : Integer;
Entrada : TTime;
Salida : Ttime;
Etiqueta : TLabel;
Siguiente: ^TMesa;
end;
For i := 1 To DataMod.TMesas.RecordCount Do
Begin
Mesa := Tmesa.Create(Self);
If i = 1 then
Begin
Primera := @Mesa;
Ultima := Addr(Mesa);
End
Else
Begin
Ultima^.siguiente := Addr(Mesa);
Ultima := Addr(Mesa);
End;
El problema es que primera siempre apunta a Mesa, bueno cuando trato de desreferenciar Primera y realizar algo, siempre lo realizo sobre mesa que es la ultima que se creo, quiero suponer que esto se debe a que en realidad Mesa es un apuntador a un objeto, ¿pero entonces como hago para que pueda crear una lista enlazada de estos objetos? .. Bueno de antemano mucha gracias por tu atención

1 respuesta

1
Respuesta de
Los problema basico es que el apuntador debes asignarlo una vez el objeto creado,
y veo que el apuntador a sido creado a una clase; cada vez que inicialices una clase va a apuntar
al ultimo objeto que haya creado; solucion? yo te recomiendo usar directamente los componentes de la forma;
¿Cómo así? ... Para el redibujado de componentes primeros usas el método invalidate self ( forma que va a ser redibujada)
Y luego aplicas el repaint; una vez adicionado el componente el ControlCount de la forma (ventana raíz) aunmentara en 1
y la Enumeración (vectores) del Objeto Controls contendrá los nuevos controles; por lo que la forma:
Self.controls[X].handle apuntara al controlq ue has creado y podras hacer loq ue tu quieras con el.
Éxitos.
Añade un comentario a esta respuesta
Añade tu respuesta
Haz clic para o
Escribe tu mensaje