解决方案 »
- 如何取得Fastreport中SubReport的实际高度?
- 将EXCEL文件导进ACCESS中出错:
- 倒分贴跑那儿去了?这有一个倒分贴;
- 如何结帖给分啊!
- 如何取得一 個字符的ASCII碼值啊?請看我的一小段程式。
- quickreP做报表时对二进制字段怎么处理用控件能绑定吗?
- For/Do语句中循环体内的循环变量不能改变吗?
- 哪位朋友知道InfoPower 3000在什么地方下载?或者是注册密码
- ★IE地址栏中的历史连接如何去掉★
- delphi 三层socket 查询报错insufficient memory for this operation
- Delphi7 TIdFtp List中文文件名乱码
- 是否可以提供delphi压缩和解压的控件
type
WParameter=Word;
LParameter=LongInt;
var
OldWindowProc:Pointer;
function NewWindowProc(WindowHandle:hWnd;TheMessage:WParameter;ParamW:WParameter;ParamL:LParameter):LongInt stdcall;
var
intScrollBarPos,intScrollBarPos2,intScrollBarPos2_old:integer;
i:Integer;
begin
if TheMessage=WM_HSCROLL then
begin
intScrollBarPos := GetScrollPos(form1.dxdbgrd_1.Handle,SB_HORZ);
intScrollBarPos2:= GetScrollPos(form1.dxdbgrd_2.Handle,SB_HORZ); SetScrollPos(form1.dxdbgrd_2.Handle,SB_HORZ,intScrollBarPos,true); intScrollBarPos2_old:=0;
if intScrollBarPos2<intScrollBarPos then
begin
while intScrollBarPos2<=intScrollBarPos-1 do
begin
sendMessage(form1.dxdbgrd_2.Handle,WM_hSCROLL,SB_LINERIGHT,1);
intScrollBarPos:= GetScrollPos(form1.dxdbgrd_1.Handle,SB_HORZ);
intScrollBarPos2:= GetScrollPos(form1.dxdbgrd_2.Handle,SB_HORZ);
if intScrollBarPos2_old=intScrollBarPos2 then
begin
break;
end
else
begin
intScrollBarPos2_old:=intScrollBarPos2;
end;
end;
end
else if intScrollBarPos2>intScrollBarPos then
begin
while intScrollBarPos2>=intScrollBarPos+1 do
begin
sendMessage(form1.dxdbgrd_2.Handle,WM_hSCROLL,SB_LINEleft,1);
intScrollBarPos:= GetScrollPos(form1.dxdbgrd_1.Handle,SB_HORZ);
intScrollBarPos2:= GetScrollPos(form1.dxdbgrd_2.Handle,SB_HORZ);
if intScrollBarPos2_old=intScrollBarPos2 then
begin
break;
end
else
begin
intScrollBarPos2_old:=intScrollBarPos2;
end;
end;
end;
end
else if TheMessage=WM_VSCROLL then
begin
intScrollBarPos := GetScrollPos(form1.dxdbgrd_1.Handle,SB_VERT);
intScrollBarPos2:= GetScrollPos(form1.dxdbgrd_2.Handle,SB_VERT); SetScrollPos(form1.dxdbgrd_2.Handle,SB_VERT,intScrollBarPos,true); intScrollBarPos2_old:=0;
if intScrollBarPos2<intScrollBarPos then
begin
while intScrollBarPos2<=intScrollBarPos-1 do
begin
sendMessage(form1.dxdbgrd_2.Handle,WM_VSCROLL,SB_LINEDOWN ,1);
intScrollBarPos:= GetScrollPos(form1.dxdbgrd_1.Handle,SB_VERT);
intScrollBarPos2:= GetScrollPos(form1.dxdbgrd_2.Handle,SB_VERT);
if intScrollBarPos2_old=intScrollBarPos2 then
begin
break;
end
else
begin
intScrollBarPos2_old:=intScrollBarPos2;
end;
end;
end
else if intScrollBarPos2>intScrollBarPos then
begin
while intScrollBarPos2>=intScrollBarPos+1 do
begin
sendMessage(form1.dxdbgrd_2.Handle,WM_vSCROLL,SB_LINEUP,1);
intScrollBarPos:= GetScrollPos(form1.dxdbgrd_1.Handle,SB_VERT);
intScrollBarPos2:= GetScrollPos(form1.dxdbgrd_2.Handle,SB_VERT);
if intScrollBarPos2_old=intScrollBarPos2 then
begin
break;
end
else
begin
intScrollBarPos2_old:=intScrollBarPos2;
end;
end;
end;
end;
NewWindowProc:=CallWindowProc(OldWindowProc,WindowHandle, TheMessage,ParamW,ParamL);
end;procedure TForm1.FormCreate(Sender: TObject);
begin
OldWindowProc:=Pointer(SetWindowLong(dxdbgrd_1.Handle,GWL_WNDPROC,LongInt(@NewWindowProc)));
end;procedure TForm1.FormDestroy(Sender: TObject);
begin
SetWindowLong(dbgrid1.Handle, GWL_WNDPROC, LongInt(OldWindowProc));
end;