procedure TMainForm.WmMouseWheelMessage(var Msg: tagMSG; var Handled: Boolean); begin if (DBGrid.Focused) And (Msg.message = WM_MOUSEWHEEL) then begin if Msg.wParam > 0 then SendMessage(DBGrid.Handle, WM_KEYDOWN, VK_UP, 0) else SendMessage(DBGrid.Handle, WM_KEYDOWN, VK_DOWN, 0); Handled := True; end; end; 我感觉也是好办法,可问题是程序如何知道滚动到头了?
如果非要用dbgrid的话,就需要在数据集(sql)上下功夫,dbgrid本身是不行的
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(IntToStr(TStringGrid(DBGrid1).RowCount-1));
end;
要分页的话就不清楚了,问强人吧~~
下面是我实现的(这个用的是键盘的上下按键消息,你也可以改成滚动条消息)。
procedure TMainForm.WmMouseWheelMessage(var Msg: tagMSG;
var Handled: Boolean);
begin
if (DBGrid.Focused) And (Msg.message = WM_MOUSEWHEEL) then
begin
if Msg.wParam > 0 then
SendMessage(DBGrid.Handle, WM_KEYDOWN, VK_UP, 0)
else
SendMessage(DBGrid.Handle, WM_KEYDOWN, VK_DOWN, 0);
Handled := True;
end;
end; 我感觉也是好办法,可问题是程序如何知道滚动到头了?
头 :RecNo=0;