![]() |
Duda creo que elemental... Lo siento. :)
Hola..., llevo bastante tiempo con este del Delphi (un par de añicos), vamos que de programación chapurreo un poquico, pero mi problema es con el tema de creación de componentes ya que he creado alguno pero únicamente para personalizar los controles que ya hay existentes a determinadas necesidades.
Mi problema es que quiero crear un componente (similar a un Panel) o cualquiera que pueda contener otros componentes y poder incorporarle una etiqueta, un barra de progreso y un componente de TCP/IP. Creo los objetos anidados, pero no he conseguido que se vea nada en el panel. Me consta que existe porque utilizo chivatos para comprobar que están creados y visibles..., pero no se como hacer para que se vea. Adjunto el código que estoy utilizando (lamento la mala calidad del mismo). Espero que podais iluminarme... :)))) unit QDownload; interface uses Windows, Messages, SysUtils, Classes, Controls,QExtCtrls,QComCtrls,QStdCtrls; type TDownload = class(tpanel) private { Private declarations } FEtiqueta:TLabel; FBarraProceso:TProgressBar; Tiempo:Ttimer; function LeeEtiqueta:string; procedure EscribeEtiqueta (Value:String); procedure CambiaTiempo (Sender:TObject); protected { Protected declarations } public { Public declarations } constructor create (Aowner:TComponent);override; published { Published declarations } property Etiqueta:String read LeeEtiqueta write EscribeEtiqueta; end; procedure Register; implementation procedure Register; begin RegisterComponents('CGC', [TDownload]); end; constructor TDownload.create (Aowner:TComponent); begin inherited Create (Aowner); FEtiqueta:=TLabel.Create(self); FEtiqueta.Caption:= 'Prueba'; FEtiqueta.Left:=24; Fetiqueta.Top:=16; FEtiqueta.Visible:=true; FBarraProceso:=TProgressBar.Create(Self); FBarraProceso.Visible:=true; Tiempo:=TTimer.Create(self); Tiempo.Interval:=10; Tiempo.Enabled:=true; Tiempo.OnTimer:=CambiaTiempo; end; function TDownload.LeeEtiqueta:String; begin result:=FEtiqueta.Caption; end; procedure TDownload.EscribeEtiqueta (Value:String); begin FEtiqueta.Caption:=Value; end; procedure TDownload.CambiaTiempo (Sender:TObject); begin if Tiempo.Tag=0 then begin self.caption:='Ya ha llegado la hora'; self.Tiempo.Enabled:=false; self.Tiempo.Tag:=1; end else self.caption:='Ya Nos hemos pasao'; end; |
En los componentes que son visuales, es decir el Label y el ProgressBar, te falta indicarle el Parent, antes de indicarle Visible = TRUE;
FEtiqueta.Parent := Self; Con esto ya te aparecerán dentro del Panel. |
Gracias por tu rapidísima respuesta.
Efectivamente estabas en lo cierto... :) Saludos. |
La franja horaria es GMT +2. Ahora son las 05:59:12. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi