Pergunta

como faço para criar um TCustomControl que se comportará como o Tpanel?por exemplo, MyCustomComponent, onde posso inserir componentes como rótulos, imagens etc.

Foi útil?

Solução

O truque é este trecho de código no TCustomPanel:

constructor TCustomPanel.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  ControlStyle := [csAcceptsControls {, ... } ];
//...
end;

Existem muitos outros controles VCL dos quais você pode descender e que têm csAcceptsControls em seu ControlStyle propriedade.

Se você quiser fazer isso em seus próprios controles, mas não descender de um controle VCL, faça algo assim:

  1. Substituir o construtor Create
  2. Adicionar csAcceptsControls para o ControlStyle propriedade

Como este código de exemplo:

//MMWIN:MEMBERSCOPY
unit _MM_Copy_Buffer_;

interface

type
  TMyCustomControl = class(TSomeControl)
  public
    constructor Create(AOwner: TComponent); override;
  end;


implementation

{ TMyCustomControl }

constructor TMyCustomControl.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  ControlStyle := ControlStyle + [csAcceptsControls {, ...} ];
//...
end;


end.

--jeroen

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top