procedure TForm1.Button1Click(Sender: TObject); begin while Scrollbox1.vertscrollbar.Position<scrollbox1.vertscrollbar. range-scrollbox1.Height Do begin Image2.visible:=False; Image2.Top:=Image2.Top+1; scrollbox1.vertscrollbar.Position:=scrollbox1.vertscrollbar. Position+1; Image2.Visible:=True; repaint; end; Image2.visible:=True; end;procedure TForm1.Button2Click(Sender: TObject); begin while Scrollbox1.vertscrollbar.Position>0 Do begin Image2.Visible:=False; Image2.Top:=Image2.Top-1; scrollbox1.vertscrollbar.Position:=scrollbox1.vertscrollbar. Position-1; Image2.Visible:=True; repaint; end; end;Delphi写的自己改BCB吧
ScrollBox1.HorzScrollBar.Position := 649;
这样来控制ScrollBox 的滚动。
begin
while Scrollbox1.vertscrollbar.Position<scrollbox1.vertscrollbar.
range-scrollbox1.Height Do
begin
Image2.visible:=False;
Image2.Top:=Image2.Top+1;
scrollbox1.vertscrollbar.Position:=scrollbox1.vertscrollbar.
Position+1;
Image2.Visible:=True;
repaint;
end;
Image2.visible:=True;
end;procedure TForm1.Button2Click(Sender: TObject);
begin
while Scrollbox1.vertscrollbar.Position>0 Do
begin
Image2.Visible:=False;
Image2.Top:=Image2.Top-1;
scrollbox1.vertscrollbar.Position:=scrollbox1.vertscrollbar.
Position-1;
Image2.Visible:=True;
repaint;
end;
end;Delphi写的自己改BCB吧
但是还是有点问题。
实际上我想用鼠标来模拟图像的漫游功能,
这样当一个图片很大,超出ScrollBox的时候,
用鼠标点击看超出的那部分图像很麻烦,我想用鼠标移动来实现,
OnMouseDown:
gMouseDown := true;
OldX := X;
OldY := Y; AppendX := 0;
AppendY := 0;OnMouseMove:
if gMouseDown then begin
NewX := X;
NewY := Y; AppendX := (NewX - OldX);
AppendY := NewY - OldY; Edit1.Text := IntToStr(X);
Edit2.Text := IntToStr(Y);
ScrollBox1.HorzScrollBar.Position := ScrollBox1.HorzScrollBar.Position + AppendX;
ScrollBox1.VertScrollBar.Position := ScrollBox1.VertScrollBar.Position + AppendY;
end;OnMouseUP:
gMouseDown := false;可这样会有问题,因为在鼠标移动的时候,ScrollBox同时在滚动,
ScrollBox滚动以后,X, Y 的值就不正确了,大家有什么好的建议吗?
ScrollBox1.HorzScrollBar.Position := ScrollBox1.HorzScrollBar.Position - AppendX;
ScrollBox1.VertScrollBar.Position := ScrollBox1.VertScrollBar.Position - AppendY; 即可。