合理的です、はい。
このようなコンポーネントを作成するには、インスタンス 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 などの独自のイベントを作成する必要があります。
しかし、それとは別に、上記の例は少なくともあなたを動かすはずだと思います. :)