锚定TPanel使其保持在表单的顶部

时间:2016-12-16 02:21:35

标签: delphi lazarus

如何锚定TPanel以使其保留在拉撒路的表格顶部?当我在Delphi 7中这样做时,它工作正常。看起来TPanel成为画布的一部分,当您向下滚动TPanel滚动屏幕时。用户需要能够点击TPanel上的按钮,无论它在表单上滚动到何处。理想情况下,我喜欢像菜单下方菜单上的菜单一样,例如与顶部对齐。

以下是FormCreate程序:

procedure TfrmTestPanel.FormCreate(Sender: TObject);
var
  Bitmap: TBitmap;
begin
  Bitmap := nil;
  try
    Bitmap := TBitmap.Create;
    Bitmap.Width := 3000;
    Bitmap.Height := 2000; 
    imgTest.Picture.Graphic := Bitmap;
    imgTest.Width := 3000;
    imgTest.Height := 2000;
  finally 
    Bitmap.Free; 
  end;
end;

我在表单的右下方有滚动条,因此用户可以向上或向下或向左滚动图像。当用户向下或向右滚动时,工具栏将从屏幕上消失。我希望工具栏像菜单行一样保留在表单的顶部。我希望这可以帮助你理解这个问题。

2 个答案:

答案 0 :(得分:1)

为什么不简单地将图片放入ScrollBox而是将其直接放在表单上。

通过这种方式,您可以使用ScrollBox ScrollBars滚动图像,而无需像使用表单ScrollBars那样移动表单上的任何其他控件。

答案 1 :(得分:-1)

这是不可能的。表单的滚动条是表单窗口的standard scroll bars,因此它们滚动整个客户区域。无论你在表单上放置什么控件都在客户区,没有锚定会改变这一点。因此它将与客户区的其余部分一起滚动。

菜单不同,它是非客户区的一部分。您无法使用标准控件模拟窗口菜单的位置。

在您提到的问题的评论中,您已经使用GraphEx演示程序进行了测试。 GraphEx在顶部对齐的面板下方有一个客户区对齐的滚动框。滚动框是一个带滚动条的窗口,您可以将其放在窗体上。 Lazarus在"额外"调色板。通过使用滚动框,您可以使用与Lazarus相同的布局和GraphEx演示。