有没有办法在delphi 2010中更改滚动条样式?

时间:2011-07-25 22:01:32

标签: delphi scrollbar delphi-2010

我刚刚在构建delphi 2010应用程序时注意到滚动条在显示时始终具有相同的大小。无论实际滚动多少,条形图中间的滚动条总是大小相同。相比之下,大多数现代应用程序使用滚动条,其中滚动条的大小与可滚动的数量成比例,因此通过查看可以清楚地滚动多少。有没有办法在我的delphi控件上更改滚动属性,还是需要自定义控件?

编辑: 此特定实例中的组件是TDBGrid,它水平滚动。我没有意识到窗户正在绘制这些滚动条。也许沃伦是正确的,问题是无法回答的。比例滚动条可能在Windows上无处不在,但我还没有在我的Windows机器上找到一个不使用它们的程序。甚至delphi 2010 IDE都使用它们。

1 个答案:

答案 0 :(得分:1)

这是我在我的自定义组件(简单的文本查看器)中执行此操作的方法:

procedure TCustomViewer.UpdateScrollInfo;
var
  ScrollInfo: TScrollInfo;
begin
  with ScrollInfo do
  begin
    cbSize := SizeOf(ScrollInfo);
    fMask := SIF_POS or SIF_PAGE or SIF_RANGE or SIF_DISABLENOSCROLL;
    nMin := 0;
    nMax := 1023;
    nPage := PageWidth;
    nPos := FTopLeft.X;
  end;
  SetScrollInfo(Handle, SB_HORZ, ScrollInfo, True);
  with ScrollInfo do
  begin
    nMax := FLines.Count - 1;
    nPage := PageHeight;
    nPos := FTopLeft.Y;
  end;
  SetScrollInfo(Handle, SB_VERT, ScrollInfo, True);
  UpdateCaretPos;
  Update;
end;

IOW,您使用TScrollInfo,填写您需要更改的值,包括nMaxnPage,并使用SetScrollInfo调用它,表明滚动条你想改变。我确信大多数带滚动条的控件都在内部控制它们,但如果控件没有,则可以尝试SetScrollInfo。它可能适用于其中一些。 TScrollInfoSetScrollInfoWindows.pas中定义。这是the MSDN link