Delphi VCL样式问题 - 最小化MDI子窗体,WinWidth约束不显示边框图标(恢复,最大化,关闭)

时间:2015-02-20 01:18:28

标签: delphi vcl vcl-styles

我正在运行Delphi XE5 - 也在Delphi XE7上测试过同样的问题

如果您将MinWidth Constraint设置为200以上的MDI子窗体最小化,则边框图标(最小最大关闭)不再可见 - 或者被切断

重现的步骤

创建一个新的VCL项目 设置主窗体" FormStyle"到fsMDIForm
在项目中添加新表格
设置" FormStyle"到fsMDIChild
将MDI子窗体"约束" .MinWidth设置为500
将样式应用于项目
项目 - 选项 - 应用程序 - 设置为启用运行时主题
项目 - 选项 - 应用 - 外观 - 选择"薰衣草古典"并将默认样式设置为" Lavender Classico"

运行申请书 打开儿童表格
尽量减少儿童形式
你会注意到(最小最大关闭按钮不再可见)

有没有人知道这方面的解决方法?


临时修复

这就是我现在正在做的事情,直到我找到更好的东西。 我不相信这就是答案,所以我把它放在这里

使用以下

创建了一个单元
procedure StyleFix_FormConstrainedResize(FormWindowState : TWindowState; var FormCurrentMinWidth : integer;Const MIN_WIDTH_VALUE : integer);

implementation

procedure StyleFix_FormConstrainedResize(FormWindowState : TWindowState; var FormCurrentMinWidth : integer;
          Const MIN_WIDTH_VALUE : integer);
begin
  if (FormWindowState = wsMinimized) then begin
    if  ( FormCurrentMinWidth > 0 ) then
      FormCurrentMinWidth := 0;
  end else if FormCurrentMinWidth <> MIN_WIDTH_VALUE then begin
    FormCurrentMinWidth := MIN_WIDTH_VALUE;
  end;
end;

以及具有最小宽度约束的任何表单,将该单元添加到uses子句并将该过程添加到

uses xStyleFixes;

...

procedure TfrmSubForm.FormConstrainedResize(Sender: TObject; var MinWidth,
          MinHeight, MaxWidth, MaxHeight: Integer);
begin
  StyleFix_FormConstrainedResize(self.WindowState, MinWidth, 500);
end;

我无法找到自动获取原始最小宽度设置的方法 因此,如果必须每次手动输入500以上硬编码,具体取决于你拥有的东西

0 个答案:

没有答案