var P1,P2:integer; begin P1:=GetScrollPos(StringGrid1.Handle, SB_VERT);//取垂直滚动条的位置 //..........发生滚动事件.............. P2:=GetScrollPos(StringGrid1.Handle, SB_VERT); ShowMessage(IntToStr(P2-P1));//这个就是滚动的位置 end;
var P1,P2:integer; begin P1:=GetScrollPos(StringGrid1.Handle, SB_VERT);//取垂直滚动条的位置 //..........发生滚动事件.............. P2:=GetScrollPos(StringGrid1.Handle, SB_VERT); ShowMessage(IntToStr(P2-P1));//这个就是滚动的位置 end;
var P1,P2:integer; begin P1:=GetScrollPos(StringGrid1.Handle, SB_VERT);//取垂直滚动条的位置 //..........发生滚动事件.............. P2:=GetScrollPos(StringGrid1.Handle, SB_VERT); ShowMessage(IntToStr(P2-P1));//这个就是滚动的位置 end;
var P1,P2:integer; begin P1:=GetScrollPos(StringGrid1.Handle, SB_VERT);//取垂直滚动条的位置 //..........发生滚动事件.............. P2:=GetScrollPos(StringGrid1.Handle, SB_VERT); ShowMessage(IntToStr(P2-P1));//这个就是滚动的位置 end;
TopLeftChanged是每当你的StringGrid的列或行发生滚动时触发的。随便作了一个例子你看看可以计算列滚动了多少。不过在滚动之前你要单击一下bitbtn1,滚动完成以后要单击一下bitbtn2就可以显示出列滚动的数值了。 var Form1: TForm1; OldRow,NewRow,HasScrolled:integer; implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject); var i,j:integer; begin for i:=0 to 1000 do begin if StringGrid1.ColCount<i then StringGrid1.ColCount:=StringGrid1.ColCount+1; for j:=0 to 4 do StringGrid1.Cells[i,j]:=IntToStr(Random(100)); end; end;
procedure TForm1.BitBtn1Click(Sender: TObject); begin //取出滚动之前的列位置 HasScrolled:=0; OldRow:=GetScrollPos(StringGrid1.Handle,SB_HORZ); end;
procedure TForm1.StringGrid1TopLeftChanged(Sender: TObject); begin NewRow:=GetScrollPos(StringGrid1.Handle,SB_HORZ); If NewRow<>OldRow then begin //如果是列滚动的话 if NewRow>OldRow then Inc(HasScrolled) else Dec(HasScrolled); OldRow:=NewRow; end; end;
procedure TForm1.BitBtn2Click(Sender: TObject); begin//显示出滚动了的位置 ShowMessage('The column has scrolled:'+IntToStr(HasScrolled)); end;
TopLeftChanged是每当你的StringGrid的列或行发生滚动时触发的。随便作了一个例子你看看可以计算列滚动了多少。不过在滚动之前你要单击一下bitbtn1,滚动完成以后要单击一下bitbtn2就可以显示出列滚动的数值了。 var Form1: TForm1; OldRow,NewRow,HasScrolled:integer; implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject); var i,j:integer; begin for i:=0 to 1000 do begin if StringGrid1.ColCount<i then StringGrid1.ColCount:=StringGrid1.ColCount+1; for j:=0 to 4 do StringGrid1.Cells[i,j]:=IntToStr(Random(100)); end; end;
procedure TForm1.BitBtn1Click(Sender: TObject); begin //取出滚动之前的列位置 HasScrolled:=0; OldRow:=GetScrollPos(StringGrid1.Handle,SB_HORZ); end;
procedure TForm1.StringGrid1TopLeftChanged(Sender: TObject); begin NewRow:=GetScrollPos(StringGrid1.Handle,SB_HORZ); If NewRow<>OldRow then begin //如果是列滚动的话 if NewRow>OldRow then Inc(HasScrolled) else Dec(HasScrolled); OldRow:=NewRow; end; end;
procedure TForm1.BitBtn2Click(Sender: TObject); begin//显示出滚动了的位置 ShowMessage('The column has scrolled:'+IntToStr(HasScrolled)); end;
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TForm1 = class(TForm)
Button1: TButton;
Memo1: TMemo;
ScrollBar1: TScrollBar;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
begin
//返回TMemo中的水平和垂直ScrollBar的距离
showmessage(inttostr(GetScrollPos(memo1.Handle,SB_HORZ)));
showmessage(inttostr(GetScrollPos(memo1.Handle,SB_VERT)));
end;procedure TForm1.Button2Click(Sender: TObject);
begin
//返回TScrollBar的距离
showmessage(inttostr(ScrollBar1.Position));
end;end.
GetScrollPos(Handle,SB_VERT)但是不能用于TWebbrowser
如 WebBrowser1.OleObject.Document.Body.scrollHeight
P1,P2:integer;
begin
P1:=GetScrollPos(StringGrid1.Handle, SB_VERT);//取垂直滚动条的位置
//..........发生滚动事件..............
P2:=GetScrollPos(StringGrid1.Handle, SB_VERT);
ShowMessage(IntToStr(P2-P1));//这个就是滚动的位置
end;
P1,P2:integer;
begin
P1:=GetScrollPos(StringGrid1.Handle, SB_VERT);//取垂直滚动条的位置
//..........发生滚动事件..............
P2:=GetScrollPos(StringGrid1.Handle, SB_VERT);
ShowMessage(IntToStr(P2-P1));//这个就是滚动的位置
end;
P1,P2:integer;
begin
P1:=GetScrollPos(StringGrid1.Handle, SB_VERT);//取垂直滚动条的位置
//..........发生滚动事件..............
P2:=GetScrollPos(StringGrid1.Handle, SB_VERT);
ShowMessage(IntToStr(P2-P1));//这个就是滚动的位置
end;
P1,P2:integer;
begin
P1:=GetScrollPos(StringGrid1.Handle, SB_VERT);//取垂直滚动条的位置
//..........发生滚动事件..............
P2:=GetScrollPos(StringGrid1.Handle, SB_VERT);
ShowMessage(IntToStr(P2-P1));//这个就是滚动的位置
end;
var
Form1: TForm1;
OldRow,NewRow,HasScrolled:integer;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
var
i,j:integer;
begin
for i:=0 to 1000 do
begin
if StringGrid1.ColCount<i then
StringGrid1.ColCount:=StringGrid1.ColCount+1;
for j:=0 to 4 do
StringGrid1.Cells[i,j]:=IntToStr(Random(100));
end;
end;
procedure TForm1.BitBtn1Click(Sender: TObject);
begin //取出滚动之前的列位置
HasScrolled:=0;
OldRow:=GetScrollPos(StringGrid1.Handle,SB_HORZ);
end;
procedure TForm1.StringGrid1TopLeftChanged(Sender: TObject);
begin
NewRow:=GetScrollPos(StringGrid1.Handle,SB_HORZ);
If NewRow<>OldRow then
begin //如果是列滚动的话
if NewRow>OldRow then
Inc(HasScrolled)
else
Dec(HasScrolled);
OldRow:=NewRow;
end;
end;
procedure TForm1.BitBtn2Click(Sender: TObject);
begin//显示出滚动了的位置
ShowMessage('The column has scrolled:'+IntToStr(HasScrolled));
end;
var
Form1: TForm1;
OldRow,NewRow,HasScrolled:integer;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
var
i,j:integer;
begin
for i:=0 to 1000 do
begin
if StringGrid1.ColCount<i then
StringGrid1.ColCount:=StringGrid1.ColCount+1;
for j:=0 to 4 do
StringGrid1.Cells[i,j]:=IntToStr(Random(100));
end;
end;
procedure TForm1.BitBtn1Click(Sender: TObject);
begin //取出滚动之前的列位置
HasScrolled:=0;
OldRow:=GetScrollPos(StringGrid1.Handle,SB_HORZ);
end;
procedure TForm1.StringGrid1TopLeftChanged(Sender: TObject);
begin
NewRow:=GetScrollPos(StringGrid1.Handle,SB_HORZ);
If NewRow<>OldRow then
begin //如果是列滚动的话
if NewRow>OldRow then
Inc(HasScrolled)
else
Dec(HasScrolled);
OldRow:=NewRow;
end;
end;
procedure TForm1.BitBtn2Click(Sender: TObject);
begin//显示出滚动了的位置
ShowMessage('The column has scrolled:'+IntToStr(HasScrolled));
end;