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.

¿Fue útil?

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:

  1. Anular el constructor Crear
  2. Agregar csAcceptsControls hacia ControlStyle 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
scroll top