¿Cómo crear un TCustomControl que se comporte como Tpanel?
-
17-09-2020 - |
Pregunta
¿Cómo creo un TCustomControl que se comportará como Tpanel?por ejemplo, MyCustomComponent, en el que puedo colocar componentes como etiquetas, imágenes, etc.
Solución
El truco es este fragmento de código en TCustomPanel:
constructor TCustomPanel.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
ControlStyle := [csAcceptsControls {, ... } ];
//...
end;
Hay muchos más controles VCL de los que puede descender y que tienen csAcceptsControls
en su ControlStyle
propiedad.
Si desea hacer esto en sus propios controles, pero no descender de dicho control VCL, entonces debería hacer algo como esto:
- Anular el constructor Crear
- Agregar
csAcceptsControls
haciaControlStyle
propiedad
Como este código de muestra:
//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 bajo: CC-BY-SA con atribución
No afiliado a StackOverflow