我在ScrollBox中放了一个大的图片,AutoSize 为true,ScrollBox出现滚动条。可以水平,或者竖直滚动。问题是我如何用一个按钮来控制ScrollBox的滚动?ScrollBox1.ScrollInView(Image1),结果第一次倒是滚动了一点,
可是第二次再执行的时候就没有反应了,兄弟们,有解决的办法吗?

解决方案 »

  1.   

    可以通过
      ScrollBox1.HorzScrollBar.Position := 649;
    这样来控制ScrollBox 的滚动。
      

  2.   

    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吧
      

  3.   

    这样是可以实现了。
    但是还是有点问题。
    实际上我想用鼠标来模拟图像的漫游功能,
    这样当一个图片很大,超出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 的值就不正确了,大家有什么好的建议吗?
      

  4.   

    已经解决。
          ScrollBox1.HorzScrollBar.Position  :=  ScrollBox1.HorzScrollBar.Position  -  AppendX;  
           ScrollBox1.VertScrollBar.Position  :=  ScrollBox1.VertScrollBar.Position  -  AppendY;  即可。