delphi – 重建窗口时锚点被破坏的解决方法?
发布时间:2020-12-15 04:13:34 所属栏目:大数据 来源:网络整理
导读:这种情况发生在直到XE3的所有Delphi中: 创建一个表单并在其上放置一个面板.将面板锚定到[akLeft,akTop,akRight,akBottom],但在它和边框之间留出空间. 添加一个调用RecreateWnd()的按钮 运行应用程序.调整窗体大小以隐藏面板,因为它由于锚定而小于0像素.按下
这种情况发生在直到XE3的所有Delphi中:
>创建一个表单并在其上放置一个面板.将面板锚定到[akLeft,akTop,akRight,akBottom],但在它和边框之间留出空间. 只要我记得自己使用Delphi,就会因此无法使用锚点.调整表单大小,然后停靠它:重新创建窗口,您的布局被破坏. 我想知道是否有某种解决方法? 更新 评论中提供了两种解决方法,一种是经证实且稳定但形式眨眼,另一种是实验性但可能更彻底和清洁. 我暂时不会投票给任何一个,因为其中一个是我的,我甚至不确定它是否稳定.相反,我会等待一些公众意见. 解决方法
我使用的两个选项对于底部和右侧锚点的问题都不是非常理想的:
>在调用或导致调用RecreateWnd();之前再次使窗口变大,然后再将其缩小.然而,在你再次变小之前必须可见. 闪烁较大表单的示例,使用高度和宽度足够大的值,以便不隐藏面板: procedure TForm1.Button1Click(Sender: TObject); Var OldWidth,OldHeight : integer; begin OldWidth := Form1.Width; OldHeight := Form1.Height; Form1.Visible := false; Form1.Width := 1000; Form1.Height := 800; RecreateWnd(); Form1.Visible := true; Form1.Width := OldWidth; Form1.Height := OldHeight; end; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |