我现在需要在scrollbox内显示放大的图象,虽然使用scrollbox的水平滚动条可以看到没显示的内容,但觉得ScrollBox的水平滚动条太长,不够美观。于是我想使用另一较短的Scrollbar控件控制ScrollBox的水平滚动条,希望拖动scrollbar时能够让ScrollBox的水平滚动条跟着滚动。Scrollbox的Autoscroll设为True,当ScrollBox的HorzScrollbar的visible设为true时,可以跟着scrollbar滚动;而当HorzScrollbar的visible设为false时,就无反应了。
    请教大家有什么方法使Scrollbar能够控制Scrollbox的隐藏着的水平滚动条呢?
  我的原有代码如下:
  procedure TForm1.ScrollBar1Change(Sender: TObject);
  begin
     ScrollBox1.HorzScrollBar.Position:= scrollBar1.position ;
  end;  或有没有其他方法控制scrollbox的内容滚动而不使用scrollbox本身的水平滚动条呢?

解决方案 »

  1.   

    你看看TScrollingWinControl
    TControlScrollBar的vcl源码,你就不会期望qu控制被隐藏了的滚动条了。
    如果滚动条被隐藏了,即使你控制它也不会使ScrollBox内容滚动下面几段代码你看看 procedure TScrollingWinControl.WMSize(var Message: TWMSize);
    var
      NewState: TWindowState;
    begin
      ...
      if FHorzScrollBar.Visible or FVertScrollBar.Visible then
        UpdateScrollBars;
    end;procedure TScrollingWinControl.WMHScroll(var Message: TWMHScroll);
    begin
      if (Message.ScrollBar = 0) and FHorzScrollBar.Visible then
        FHorzScrollBar.ScrollMessage(Message) else
        inherited;
    end;procedure TScrollingWinControl.WMVScroll(var Message: TWMVScroll);
    begin
      if (Message.ScrollBar = 0) and FVertScrollBar.Visible then
        FVertScrollBar.ScrollMessage(Message) else
        inherited;
    end;
      

  2.   

    使用土办法解决了---就是使用一个panel遮挡着水平滚动条。