PDA

Ver la Versión Completa : Duda creo que elemental... Lo siento. :)


cesargcman
10-07-2003, 10:18:47
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;

andres1569
10-07-2003, 10:42:02
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.

cesargcman
10-07-2003, 10:47:03
Gracias por tu rapidísima respuesta.

Efectivamente estabas en lo cierto... :)

Saludos.