我现在需要在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本身的水平滚动条呢?
请教大家有什么方法使Scrollbar能够控制Scrollbox的隐藏着的水平滚动条呢?
我的原有代码如下:
procedure TForm1.ScrollBar1Change(Sender: TObject);
begin
ScrollBox1.HorzScrollBar.Position:= scrollBar1.position ;
end; 或有没有其他方法控制scrollbox的内容滚动而不使用scrollbox本身的水平滚动条呢?
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;