Ver Mensaje Individual
  #1  
Antiguo 23-01-2007
SyncReuter SyncReuter is offline
Miembro
 
Registrado: ene 2007
Posts: 26
Reputación: 0
SyncReuter Va por buen camino
Array de controles - Control has no parent window

Hola,

Alguien sabe cual es la forma correcta de definir un array de controles. Algo asi como:

Código Delphi [-]
LabD: array[1..8] of TLabel

Esa definición esta presente en protected de una clase X que deriva de TPanel. Ahora bien, en Create y Destroy tengo el siguiente codigo:

Create:

Código Delphi [-]
inherited Create(AOwner);
SetBounds(0, 0, cMCW, cMCH);
CreateObjects;

Destroy:

Código Delphi [-]
RemoveObjects;
inherited Destroy;

como podran notar en Create llamo a un procedimiento CreateObject que se encuentra declarado en Private dentro de la clase. El unico objectivo es crear los controles adiciones, que en este caso en particular son 8 etiquetas (TLabel). El codigo es el siguiente :

Código Delphi [-]
  x:=5;
  y:=21;
  for i:=1 to 8 do
    begin
      LabD[i]:=TLabel.Create(Self);
      with LabD[i] do
        begin
          Parent:=Self;
          AutoSize:=True;
          Caption:=CA_D[i];
          Alignment:=taCenter;
          Transparent:=True;
          ParentFont:=True;
          Width:=21;
          Height:=13;
          Top:=y;
          Left:=x;
          Inc(x, Width + 2);
        end;
    end;

En Destroy llamo a otro procedimiento RemoveObjects declarado tambien el Private que lo unico que hace es destruir los objectos que han sido creados.

Código Delphi [-]
var
  i: Integer;
begin
  for i:=8 downto 1 do
    begin
      LabD[i].Free;
      LabD[i]:=nil;
    end;
end;

Ahora bien...Cual es mi problema. Cuando intento pegar el componente dentro de la Form, delphito me lanza un cuadro de dialogo con lo siguiente :

Control has no parent window

El objetivo de usar array es unicamente para poder tratarlos por lotes los controles TLabel.

¿Alguien sabe a que se debe este problema?

Saludos desde Chile.
Responder Con Cita