como criar um TCustomControl que se comporte como o Tpanel?
-
17-09-2020 - |
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.
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:
- Substituir o construtor Create
- Adicionar
csAcceptsControls
para oControlStyle
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