我横向拖动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;
我也写了个捕获消息的函数,反正实现不了这个功能,希望大家赐教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;
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货