gpt4 book ai didi

delphi - 动态调整窗体大小以适应 Delphi 中框架的大小

转载 作者:行者123 更新时间:2023-12-03 19:35:06 24 4
gpt4 key购买 nike

我的应用程序有 5 个不同大小的框架。当我从一个框架移动到另一个框架时,我想动态调整主窗体的大小以适应框架。

我可以使用框架的 MinHeight/MinWidth 属性来强制主窗体适合框架,但是当移动到较小的框架时,主窗体不会调整其大小。

有什么想法吗?

--编辑

...
TFormMain = Class(TForm)
...
public
FrameImportPackage: TFrameImportPackage;
...

procedure TFormMain.MenuPackagesImportClick(Sender: TObject);
begin
if not (Assigned(FrameImportPackage)) then
begin
FrameImportPackage := TFrameImportPackage.Create(Self);
FrameImportPackage.LabelFrameCaption.Caption := 'Import or Edit a Package';
end
else
begin
FrameImportPackage.BringToFront;
end;

FrameImportPackage.Parent := Self;
end;

--编辑

问候,彼得

最佳答案

如果我正确理解你的问题,你的框架不会改变大小,你希望表单更新大小以适合你的框架。让 Delphi 使用 AutoSize 属性为您处理该问题。

为您的表单设置AutoSize = True


我已使用 Delphi 2010 使用以下代码测试了 AutoSize:

  • 创建一个新的 VCL 应用程序。在空白表单上放置一个面板,让它保留它的名称(Panel1)。确保面板不要太小,因为我们将编写代码来在运行时减小其大小。
  • 将表单的 AutoSize 属性设置为 True
  • 将两个按钮拖放到面板上:Button1Button2
  • 双击按钮,然后复制粘贴以下事件处理程序:

代码:

procedure TForm31.Button1Click(Sender: TObject);
var NewR: TRect;
begin
NewR := Panel1.BoundsRect;
Dec(NewR.Right, 32);
Dec(NewR.Bottom, 32);

Button1.Parent := Self;
Button2.Parent := Self;

Panel1.Free;
Panel1 := TPanel.Create(Self);
Panel1.BoundsRect := NewR;
Panel1.Parent := Self;

Button1.Parent := Panel1;
Button2.Parent := Panel1;
end;

procedure TForm31.Button2Click(Sender: TObject);
begin
Panel1.Height := Panel1.Height - 32;
Panel1.Width := Panel1.Width - 32;
end;

这本质上为您提供了两种减小面板大小的方法,以处理两种可能的情况:Button1 释放旧面板并创建一个新的、更小的面板。 Button2 直接调整现有面板的大小。两者都按预期工作!

关于delphi - 动态调整窗体大小以适应 Delphi 中框架的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6704695/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com