Pie*_*Wyk 2 delphi resize dynamic frame
我有一个具有 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;
Run Code Online (Sandbox Code Playgroud)
- 编辑
问候, 彼得
如果我正确理解您的问题,那么您的框架尺寸不会改变,您希望表单更新尺寸以适合您的框架。让 Delphi 使用该AutoSize属性为您处理。
AutoSize = True为您的表单设置。
我已经AutoSize使用以下代码进行了测试Delphi 2010:
Panel1)。确保面板不会太小,因为我们将编写代码以在运行时减小它的大小。AutoSize属性设置为True.Button1然后Button2。代码:
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;
Run Code Online (Sandbox Code Playgroud)
这实质上为您提供了两种减小面板大小的方法,以处理两种可能的情况:Button1释放旧面板并创建一个新的、更小的面板。Button2直接调整现有面板的大小。两者都按预期工作!
| 归档时间: |
|
| 查看次数: |
13383 次 |
| 最近记录: |