gpt4 book ai didi

delphi - 如何捕获以 TDBGrid 作为父级的按钮的单击事件?

转载 作者:行者123 更新时间:2023-12-03 15:57:33 27 4
gpt4 key购买 nike

我有一个小按钮,我想添加到 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 事件,该事件似乎运行良好,但我无法使用 click 事件。

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

最佳答案

我不知道为什么它会吃掉点击消息。您实际上是通过 MouseUp 事件处理程序模拟单击事件。

procedure TForm38.Button1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
ctrl: TButton;
begin
ctrl := Sender as TButton;
if (x > 0) and (x < ctrl.Width) and (y > 0) and (y < ctrl.Height) then
ctrl.Click;
end;

如果您测试普通按钮,您会发现在释放鼠标之前单击事件不会发生。模拟单击按钮按下会产生奇怪的行为。

关于delphi - 如何捕获以 TDBGrid 作为父级的按钮的单击事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/748190/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com