高手何在? 关于dbgride的SCROLLBAR的问题
我横向拖动dbgride的SCROLLBAR时,希望里面内容也跟着同步变化。
我也写了个捕获消息的函数,反正实现不了这个功能,希望大家赐教
procedure TMainForm.ClassWndProc4(var Msg: TMessage);
var
ScrollInfo: TScrollInfo;
begin
oldproc4(msg); // 先处理默认的
if Msg.Msg=WM_HSCROLL then begin
if (Msg.WParamLo= SB_THUMBTRACK) or(Msg.WParamLo=SB_THUMBPOSITION) then
begin
ScrollInfo.cbSize := sizeOf(ScrollInfo); // 准备参数
ScrollInfo.fMask := SIF_ALL;
GetScrollInfo(dbgrid1.Handle, SB_HORZ, ScrollInfo ); // 取当前的滚动条信息
if ScrollInfo.nPos<Msg.WParamHi then begin
SendMessage(dbgrid1.Handle,Msg.Msg,SB_LINERIGHT ,0);
ScrollInfo.nPos:=ScrollInfo.nTrackPos;
SetScrollPos(dbgrid1.Handle, SB_HORZ,Msg.WParamHi, True);
end
else if ScrollInfo.nPos>Msg.WParamHi then begin
SendMessage(dbgrid1.Handle,Msg.Msg,SB_LINELEFT ,0);
ScrollInfo.nPos:=ScrollInfo.nTrackPos;
SetScrollPos(dbgrid1.Handle, SB_HORZ,Msg.WParamHi, true);
end
end;
end;
end;