Ver Mensaje Individual
  #9  
Antiguo 07-10-2005
rounin rounin is offline
Miembro
 
Registrado: sep 2005
Posts: 43
Reputación: 0
rounin Va por buen camino
Saludos,

pienso que en tu caso necesita incluir flag csSubcomponent
en tus subcomponentes:

Código:
  TDigitalDisplay = class(TCustomPanel)
  private
	FImage1: TImage;
	FStaticText1: TStaticText;
	FPopupMenu1: TPopupMenu;
	{...}
  published
	property StaticText1: TStaticText read FStaticText1; {r/o}
	property Image1: TImage read FImage1;
	property PopupMenu1: TPopupMenu read FPopupMenu1;
	{...}
  end;
 
 
constructor TDigitalDisplay.Create(AOwner: TComponent);
 
   function CreateSubComponent(AClass: TComponentClass): TComponent;
   begin
	 Result := AClass.Create(Self);
	 Result.SetSubComponent(True); {!!!!!!!!}
	 Result.FreeNotification(Self); 
	 if Result is TControl then TControl(Result).Parent := Self;
   end;
 
var
  MenuItem: TMenuItem;
begin
  inherited;
  {...}
  FStaticText1 := CreateSubComponent(TStaticText) as TStaticText;
  FStaticText2 := CreateSubComponent(TStaticText) as TStaticText;
  FStaticText3 := CreateSubComponent(TStaticText) as TStaticText;
  FImage1	  := CreateSubComponent(TImage) as TImage;
  FPopupMenu1  := CreateSubComponent(TPopupMenu) as TPopupMenu;
 
  MenuItem := TMenuItem.Create(PopupMenu1);
  FPopupMenu1.Items.Add(MenuItem);

  with MenuItem do
  begin
	Caption := 'Configurar';
	OnClick := PopupConfigurar;
  end;

end;
 
procedure TDigitalDisplay.Notification(AComponent: TComponent; Operation: TOperation);
begin
  inherited;
  if (AComponent = FStaticText1) and (Operation = opRemove) then FStaticText1 := nil;
  if (AComponent = FStaticText2) and (Operation = opRemove) then FStaticText2 := nil;
  if (AComponent = FStaticText3) and (Operation = opRemove) then FStaticText3 := nil;
  if (AComponent = FPopupMenu1) and (Operation = opRemove) then FPopupMenu1 := nil;
  if (AComponent = FImage1)	 and (Operation = opRemove) then FImage1	 := nil;
end;
PS Porque creas subcomponentes en AfterConstruction?
Porque no en Create?
Responder Con Cita