Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   El extraño caso de la etiqueta (TLabel) invisible. (https://www.clubdelphi.com/foros/showthread.php?t=76584)

TiammatMX 10-11-2011 20:37:25

El extraño caso de la etiqueta (TLabel) invisible.
 
Buena tarde, jóvenes y jóvenas ilustres de Club Delphi...

Les platico el caso. Tengo una forma que contiene un TScrollBox, y que será llenada con TLabel's y TRadioButton's de acuerdo al contenido de un TADOQuery. Tengo éste código en Delphi 6:

Código Delphi [-]
   if RecordCount > 0 then
     begin

       First; 
      sGrp := FieldByName('C54_GRUPO_STR'
).AsString;

       

with TLabel.Create
(scrllboxLlenar) do
       
begin         
Left := 0;         
Top := iVlrRngln;
         AutoSize := False;
         Width := scrllboxLlenar.Width
 - 4;
         Color := StringToColor(
FieldValues['C54_COLOR_FONDO'
]);
         Font.Color := StringToColor(FieldValues['C54_COLOR_FUENTE']);
         Alignment := taCenter;

         Visible := True;
         Caption := sGrp;
       end; 
        while NOT Eof
 do       begin
         if FieldByName(
'C54_GRUPO_STR').AsString <> sGrp 

then         
begin
           iVlrRngln := iVlrRngln + 20;
           sGrp := FieldByName('C54_GRUPO_STR').AsString;           with TLabel.Create(scrllboxLlenar) do           begin             Left := 0;             Top := iVlrRngln;             AutoSize := False;             Width := scrllboxLlenar.Width - 4;             Color := StringToColor(FieldValues['C54_COLOR_FONDO']);             Font.Color := StringToColor(FieldValues['C54_COLOR_FUENTE']);             Alignment := taCenter;
              Visible := True;
             Caption := sGrp;
           end;         end;
           Next;
       end
;     end;

Y aquí es donde viene el "pero" y la raíz del problema. El tal TScrollBox al momento de ser visible en la forma, ¡¡ESTÁ VACÍO!!, o aparenta estarlo. No se ve ninguna de las TLabel's que SUPUESTAMENTE ya fueron creadas y añadidas al TScrollBox a pesar que TODO el código ejecuta perfectamente.

¿Alguna idea, alguna solución que puedan aportarme? Agradeciendo de antemano sus colaboraciones...

ecfisa 10-11-2011 22:11:07

Hola.

Es que estas confundiendo la funcionalidad del parámetro Owner, que indica quíen será el encargado de liberar la memoria ocupada por el componente, con la propiedad Parent, que indica quién contiene al componente.

Por ejemplo:
Código Delphi [-]
  with TLabel.Create(TForm1) do  // TLabel.Create(ScrollBox1), TLabel.Create(nil), etc.
  begin
    Caption:= 'HOLA';
    Color:= clYellow;
  end;
No mostrará el TLabel en Form1, sólo indica que Form1 es el encargado de liberarlo.

Para mostrarlo en un TScrollBox por ejemplo, deberías hacer:
Código Delphi [-]
  with TLabel.Create(TForm1) do
  begin
    Caption:= 'HOLA';
    Color:= clYellow; 
    Parent:= SCrollBox1;  // <- El contenedor es SCrollBox1
    ...
  end;

Un saludo.


La franja horaria es GMT +2. Ahora son las 14:04:32.

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