怎样实现这个功能 在dbgrid上,当鼠标移动到某一行的时候(还没有点击,这时记录指针还不原来位置), 如何将记录指针移动到当前鼠标所在的行。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 { 浠ヤ笅浠g爜鍦?Delphi6 涓紪鍐?}{ 闇€瑕佽缃瓺BGrid1鐨勫睘鎬ptions锛? 缃甦gRowSelect鍜宒gAlwaysShowSelection鍧囦负True }procedure MouseLButtonClick(Handle: Integer; X, Y: Integer);begin PostMessage(Handle, WM_LBUTTONDOWN, MK_LBUTTON, Y shl 16 + X); PostMessage(Handle, WM_LBUTTONUP, 0, Y shl 16 + X);end;var FLastY: Integer = 0;//璁$畻榧犳爣鎵€鍦ㄧ殑琛岋紝璇ュ嚱鏁伴渶瑕佹牴鎹疄闄呭簲鐢ㄨ繘琛屾敼杩涖€?function CalcRowID(Y: Integer): Integer;const RowH = 18;//杩欐槸DBGrid涓瘡琛岀殑楂樺害begin Result := Y div RowH;end;{ DBGrid 鐨勪簨浠?OnMouseMove }procedure TForm1.DBGrid1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);begin if CalcRowID(Y) <> CalcRowID(FLastY) then begin//闇€瑕佹洿鏂版椂鎵嶆洿鏂版樉绀? MouseLButtonClick(DBGrid1.Handle, X, Y); FLastY := Y; end;end;{ 濡傛灉闇€瑕佺獊鍑轰釜鎬у寲锛岄偅涔堝彲浠ラ厤鍚圤nDrawColumnCell浜嬩欢瀹炵幇锛屽苟涓旈渶瑕佹洿鍔犵簿纭湴璁$畻榧犳爣浣嶇疆鍜屾暟鎹涔嬮棿鐨勫搴斿叧绯汇€倉 { 以下代码在 Delphi6 中编写 }{ 需要设置DBGrid1的属性Options, 置dgRowSelect和dgAlwaysShowSelection均为True }procedure MouseLButtonClick(Handle: Integer; X, Y: Integer);begin PostMessage(Handle, WM_LBUTTONDOWN, MK_LBUTTON, Y shl 16 + X); PostMessage(Handle, WM_LBUTTONUP, 0, Y shl 16 + X);end;var FLastY: Integer = 0;//计算鼠标所在的行,该函数需要根据实际应用进行改进。function CalcRowID(Y: Integer): Integer;const RowH = 18;//这是DBGrid中每行的高度begin Result := Y div RowH;end;{ DBGrid 的事件 OnMouseMove }procedure TForm1.DBGrid1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);begin if CalcRowID(Y) <> CalcRowID(FLastY) then begin//需要更新时才更新显示 MouseLButtonClick(DBGrid1.Handle, X, Y); FLastY := Y; end;end;{ 如果需要突出个性化,那么可以配合OnDrawColumnCell事件实现,并且需要更加精确地计算鼠标位置和数据行之间的对应关系。} XE BUG? mdi窗口,如何按F12键调出执行菜单中某项操作? 搞DELPHI数据库开发的来看看!!!! 关于数据类型的疑问? delphi和access如何相连? 在开发课题的时候,如果使用了很多的控件,会不会显得很没有技术含量? ADODataSet这样使用不可以吗? D5的SP2需要sn,哪位能提供一下,谢谢 我想学数据库编程 新论坛 大家好,请教一个关于richedit的问题 请教如何利用ADOCONNECTION连接FOX数据库。也就是如何设置CONNECTIONSTRING属性值。谢谢
缃甦gRowSelect鍜宒gAlwaysShowSelection鍧囦负True }procedure MouseLButtonClick(Handle: Integer; X, Y: Integer);
begin
PostMessage(Handle, WM_LBUTTONDOWN, MK_LBUTTON, Y shl 16 + X);
PostMessage(Handle, WM_LBUTTONUP, 0, Y shl 16 + X);
end;var
FLastY: Integer = 0;//璁$畻榧犳爣鎵€鍦ㄧ殑琛岋紝璇ュ嚱鏁伴渶瑕佹牴鎹疄闄呭簲鐢ㄨ繘琛屾敼杩涖€?
function CalcRowID(Y: Integer): Integer;
const
RowH = 18;//杩欐槸DBGrid涓瘡琛岀殑楂樺害
begin
Result := Y div RowH;
end;{ DBGrid 鐨勪簨浠?OnMouseMove }
procedure TForm1.DBGrid1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if CalcRowID(Y) <> CalcRowID(FLastY) then begin//闇€瑕佹洿鏂版椂鎵嶆洿鏂版樉绀?
MouseLButtonClick(DBGrid1.Handle, X, Y);
FLastY := Y;
end;
end;{ 濡傛灉闇€瑕佺獊鍑轰釜鎬у寲锛岄偅涔堝彲浠ラ厤鍚圤nDrawColumnCell浜嬩欢瀹炵幇锛屽苟涓旈渶瑕佹洿鍔犵簿纭湴璁$畻榧犳爣浣嶇疆鍜屾暟鎹涔嬮棿鐨勫搴斿叧绯汇€倉
置dgRowSelect和dgAlwaysShowSelection均为True }procedure MouseLButtonClick(Handle: Integer; X, Y: Integer);
begin
PostMessage(Handle, WM_LBUTTONDOWN, MK_LBUTTON, Y shl 16 + X);
PostMessage(Handle, WM_LBUTTONUP, 0, Y shl 16 + X);
end;var
FLastY: Integer = 0;//计算鼠标所在的行,该函数需要根据实际应用进行改进。
function CalcRowID(Y: Integer): Integer;
const
RowH = 18;//这是DBGrid中每行的高度
begin
Result := Y div RowH;
end;{ DBGrid 的事件 OnMouseMove }
procedure TForm1.DBGrid1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if CalcRowID(Y) <> CalcRowID(FLastY) then begin//需要更新时才更新显示
MouseLButtonClick(DBGrid1.Handle, X, Y);
FLastY := Y;
end;
end;{ 如果需要突出个性化,那么可以配合OnDrawColumnCell事件实现,并且需要更加精确地计算鼠标位置和数据行之间的对应关系。}