Procedure TForm2.OnMouseWheel(Var Msg: TMsg;var Handled: Boolean);
begin
if Msg.message=WM_MouseWheel then
begin
if Msg.wParam>0 then
begin
if DBGrid1.Focused then
SendMessage(DBGrid1.Handle,WM_VSCROLL,SB_PAGEUP,0);
end
else
begin
if DBGrid1.Focused then
SendMessage(DBGrid1.Handle,WM_VSCROLL,SB_PAGEDOWN,0);
end;
Handled:=True;
end;
end;procedure TForm2.FormCreate(Sender: TObject);
begin
Application.OnMessage:=OnMouseWheel;
end;
用上面的代码可以用鼠标滑轮实现在单窗口中DBGrid滚动条的滚动,但如果有多个子窗体存在且每个子窗体内都有DBGrid时就会出错,请问这个时候该怎么改才能实现每个子窗体中的DBGrid滚动条都可随着鼠标滑轮的滚动而滚动呢?
begin
if Msg.message=WM_MouseWheel then
begin
if Msg.wParam>0 then
begin
if DBGrid1.Focused then
SendMessage(DBGrid1.Handle,WM_VSCROLL,SB_PAGEUP,0);
end
else
begin
if DBGrid1.Focused then
SendMessage(DBGrid1.Handle,WM_VSCROLL,SB_PAGEDOWN,0);
end;
Handled:=True;
end;
end;procedure TForm2.FormCreate(Sender: TObject);
begin
Application.OnMessage:=OnMouseWheel;
end;
用上面的代码可以用鼠标滑轮实现在单窗口中DBGrid滚动条的滚动,但如果有多个子窗体存在且每个子窗体内都有DBGrid时就会出错,请问这个时候该怎么改才能实现每个子窗体中的DBGrid滚动条都可随着鼠标滑轮的滚动而滚动呢?
解决方案 »
- help 请问大家delphi与VC程序之间能相互传输文件吗
- 关于cppwebbrowser的cookie的问题
- 怎么用DELPHI开发会有这样的错误提示呢?很郁闷呀,急
- idftp问题竟然没人解答,郁闷中,再开一贴加100分!!
- 怎样调用外部的EXE文件?
- 那位用过wwDBGrid帮我看看:wwDBGrid中对每一列可以设置其显示方式如某一列显示类型为CheckBox可是我在程序中动态怎么设置(所显示列为bo
- 如何给工具栏上的工具按钮加图表
- 关于OOB的问题,请教诸位
- 请问C中的&在DELPHI中如何表示?
- 怎样由TBitmap的变量获得一个windows结构BITMAP的变量?
- 用winexec执行一个bat文件,如何获取执行进度?
- 用Delphi编写CGI程序,哪位大侠能给个简单的例子来参考
{ Private declarations }
OldGridWnd: TWndMethod;
procedure NewGridWnd(var Message: TMessage);............procedure TForm.FormCreate(Sender: TObject);
begin
OldGridWnd := DBGrid1.WindowProc;
DBGrid1.WindowProc := NewGridWnd;
end;procedure TForm4.NewGridWnd(var Message: TMessage);
var
IsNeg: Boolean;
begin
if Message.Msg = WM_MOUSEWHEEL then
begin
IsNeg := Short(Message.WParamHi) < 0;
if IsNeg then
DBGrid1.DataSource.DataSet.MoveBy(1)
else
DBGrid1.DataSource.DataSet.MoveBy(-1);
end
else
OldGridWnd(Message);
end;