gpt4 book ai didi

delphi - 模拟鼠标单击 TDBGrid 中的单元格

转载 作者:行者123 更新时间:2023-12-02 22:50:37 24 4
gpt4 key购买 nike

如何模拟鼠标点击 TDBGrid 中的某些单元格?

最佳答案

更新:

这段代码应该做你想要的事情:

type
TMyDBGrid = class(TDBGrid);

function TForm1.GetCellRect(ACol, ARow : Integer) : TRect;
begin
Result := TmyDBGrid(DBGrid1).CellRect(ACol, ARow);
end;

procedure TForm1.DBGrid1MouseUp(Sender: TObject; Button: TMouseButton; Shift:
TShiftState; X, Y: Integer);
var
Coords : TGridCoord;
begin
Coords := DBGrid1.MouseCoord(X, Y);
Caption := Format('Col: %d, Row: %d', [Coords.X, Coords.Y]);
end;

procedure TForm1.SimulateClick(ACol, ARow : Integer);
type
TCoords = packed record
XPos : SmallInt;
YPos : SmallInt;
end;
var
ARect : TRect;
Coords : TCoords;
begin
ARect := GetCellRect(ACol, ARow);
Coords.XPos := ARect.Left;
Coords.YPos := ARect.Top;
DBGrid1.Perform(WM_LButtonUp, 0, Integer(Coords));
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
SimulateClick(StrToInt(edX.Text), StrToInt(edY.Text));
end;

TDBGrid 的 MouseCoord 函数将一对坐标 (X, Y) 转换为列号 (TGridCoord.X) 和行号 ((TGridCoord.Y)。

OnMouseUp 事件显示对 X 和 Y 输入参数调用 DBGrid1.MouseCoord 的结果。

SimulateClick 模拟网格单元格上的单击。它使用 GetCellRect 获取指定单元格左上角的坐标(在 DBGrid 中),然后在 DBGrid 上调用 Perform(WM_LButtonUp,...),并在 LParam 参数中传递坐标。

最后,Button1Click 使用一对 TEdit 中的 Col 和 Row 值调用 SimulateClick。这会导致 OnMouseUp 事件触发并显示列号和行号,因此您可以确信它与鼠标单击相应单元格具有相同的效果。

关于delphi - 模拟鼠标单击 TDBGrid 中的单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39144181/

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