这是合理的,是的。
要创建这样的组件,只需从例如 TCustomPanel 派生一个新类,并将子组件添加为类中的字段。
像这样:
TMyDatePicker = class(TCustomPanel)
protected
FChooseButton: TButton;
FClearButton: TButton;
public
constructor Create(Owner: TComponent); override;
end;
constructor TMyDatePicker.Create(Owner: TComponent)
begin
// Inherited
Inherited;
// Create Choose Button
FChooseButton := TButton.Create(Self);
FChooseButton.Parent := Self;
FChooseButton.Align := alRight;
FChooseButton.Caption := 'Choose';
// Create Clear Button
FClearButton := TButton.Create(Self);
FClearButton.Parent := Self;
FClearButton.Align := alRight;
FClearButton.Caption := 'Clear';
end;
要添加事件处理程序,只需向您的类添加新的受保护过程。
例如:
procedure TMyDatePicker.HandleChooseButtonClick(Sender: TObject)
begin
// Do whatever you want to do when the choose button is clicked
end;
然后将事件处理程序连接到选择按钮的 OnClick 事件(这应该在类的 Create 方法中完成):
FChooseButton.OnClick := HandleChooseButtonClick;
当然,还有比这更多的功能,例如微调按钮的对齐方式和添加图标。您还需要创建自己的事件,例如 OnDateSelected 或 OnDateModified。
但是,除此之外,我认为上面的例子至少应该让你继续前进。:)