模拟鼠标点击TDBGrid中的单元格
Simulate mouse click on a cell in TDBGrid
如何模拟鼠标点击 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 事件触发并显示 Col 和 Row 编号,因此您可以放心,它与鼠标单击相应单元格的效果相同。
如何模拟鼠标点击 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 事件触发并显示 Col 和 Row 编号,因此您可以放心,它与鼠标单击相应单元格的效果相同。