Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Problema con las clases (https://www.clubdelphi.com/foros/showthread.php?t=50594)

kenpachi 22-11-2007 16:51:21

Problema con las clases
 
Hola,
estoy intentando hacer una clase, que encapsule muchos botones y edit text. La idea es que cuando cree un objeto desde el main me salgan todos los componentes que habia añadido en la clase. Pero por alguna razon no se muestran al ejecutar el programa.
He pensado que de alguna manera le tengo que decir a todos los botones pertenezcan a la clase y para eso hago lo siguiente:

procedure TMiclase.create();
begin
boton1 := boton1.create(nil);
boton1.parent := self;
...
...
end;
Pero esto no funciona. Alguna idea de como puedo hacer esto?
Gracias.

dec 22-11-2007 17:38:40

Hola,

Pareciera que la instrucción:

Código Delphi [-]
boton1 := boton1.create(nil);

Debería ser algo así como:

Código Delphi [-]
boton1 := TButton.create(nil);

Y, por otro lado, sabe que si no asignas dueño al botón, serás tú el encargado de destruir el botón, pero, si haces algo como:

Código Delphi [-]
boton1 := TButton.create(self);

Estarás dejando esa "carga" al propio componente "MiClase".

Lepe 22-11-2007 18:05:10

¿TMiClase de quien hereda?

Porque si es del tipo:
Código Delphi [-]
type TMiClase = Class
Así estas heredando de TObject, y que el padre de un botón sea un TObject dará errores en ejecución.

Para tu idea, es mejor que uses un TFrame, haces uno que conste de un label, tedit y botón. Y ahora desde tu programa principal haces:
Código Delphi [-]

var Fr :TMiFrameCreada;
     TheTop, i:integer;

begin 
  TheTop := 20;
  for i:= 0 to 29 do
  begin 
     fr := TMiFrameCreada.Create(Form1);
     fr.top := TheTop;
     TheTop :=  TheTop + fr.top + 20;  // por poner algo
     fr.parent := form1;
 end;
listo, 30 botones, 30 labels y 30 edits creados.

Si no es lo que quieres, explica con mas detalles "tu idea"

Saludos


La franja horaria es GMT +2. Ahora son las 13:55:45.

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