как создать TCustomControl, который ведет себя как Tpanel?
-
17-09-2020 - |
Вопрос
как мне создать TCustomControl, который будет вести себя как Tpanel?например MyCustomComponent, в который я могу добавлять такие компоненты, как метки, изображения и т. д.
Решение
Хитрость заключается в следующем фрагменте кода в TCustomPanel:
constructor TCustomPanel.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
ControlStyle := [csAcceptsControls {, ... } ];
//...
end;
Есть еще много элементов управления VCL, от которых вы можете отказаться. csAcceptsControls
в их ControlStyle
свойство.
Если вы хотите сделать это в своих собственных элементах управления, но не происходите от такого элемента управления VCL, то вам следует сделать что-то вроде этого:
- Переопределить конструктор Create
- Добавлять
csAcceptsControls
кControlStyle
свойство
Как этот пример кода:
//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.
--джероен
Не связан с StackOverflow