3

Delphi TDBGrid コンポーネントの左上隅(ヘッダー/タイトル セル内)に追加したい小さなボタンがあります。ボタンを簡単に配置できますが、クリック イベントが処理されません。イベントがグリッドによってキャッチされていると思います。この特定のイベントを強制的にボタンに移動させる方法はありますか? 現在のように、グリッドがタイトル ボタンのクリック イベントを処理する必要があることに注意してください。

procedure TForm38.FormCreate(Sender: TObject);
begin
   button1.Parent := grid;
   button1.Top := 0;
   button1.Left := 0;
   button1.Width := 12;
   button1.Height := 18;
   button1.OnClick := Button1Click;
end;

**更新:** ボタンの MouseDown イベントを使用できたことがわかりましたが、これはうまく機能しているように見えますが、クリック イベントは使用できませんでした。

procedure TForm38.Button1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
   if ( Button = mbLeft ) then
      TButton(Sender).Click;
end;
4

3 に答える 3

0

以下は、Delphi 1 と Delphi 2007 の両方で正常に試行されたクリーンなソリューションです。

procedure TForm38.FormCreate(Sender: TObject);
begin
   button1.Parent := grid;
   button1.Top := 0;
   button1.Left := 0;
   button1.Width := 12;
   button1.Height := 18;
   button1.OnClick := Button1Click;

   // only add this line
   button1.ControlStyle := button1.ControlStyle + [csClickEvents];

end;
于 2009-04-15T07:11:13.407 に答える