61,112
社区成员
发帖
与我相关
我的任务
分享
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
P1,P2:integer;
begin
P1:=GetScrollPos(StringGrid1.Handle, SB_VERT);//取垂直滚动条的位置
//..........发生滚动事件..............
P2:=GetScrollPos(StringGrid1.Handle, SB_VERT);
ShowMessage(IntToStr(P2-P1));//这个就是滚动的位置
end;