【问题标题】:Disable Form maximize on double click双击禁用表单最大化
【发布时间】:2013-03-19 13:05:56
【问题描述】:

我希望在用户调整表单大小时按比例调整表单大小。我在事件OnCanResize 中使用以下代码完成了此操作:

NewHeight := Round(Height / Width* NewWidth);

为了防止用户通过单击最大化按钮来最大化表单,我设法禁用它,使用以下代码处理消息WMSysCommand

if (AMsg.CmdType = SC_MAXIMIZE) then MessageBeep(0);

我没有做的是防止用户双击标题栏时最大化表单。 Delphi有什么办法吗?

我希望很清楚我不想阻止用户调整表单的大小。我只想在单击最大化按钮并双击标题栏时防止调整大小。

【问题讨论】:

    标签: delphi resize


    【解决方案1】:

    首先,删除您在 WM_SYSCOMMAND 消息处理程序中使用的解决方法,然后只需从表单的 BorderIcons 属性中删除 biMaximize 选项,或者换句话说,将 BorderIcons.biMaximize 设置为 False对象检查器,您将获得最大化按钮以及表单标题双击最大化禁用。

    在运行时您可以简单地使用:

    BorderIcons := BorderIcons - [biMaximize]
    

    【讨论】:

      【解决方案2】:

      @TLama 显而易见的answer 的替代方案:

      SetWindowLong(Handle, GWL_STYLE, 
        GetWindowLong(Handle, GWL_STYLE) and not WS_MAXIMIZEBOX);
      

      与设置BorderIcons 不同,这不会强制重新创建窗口句柄(不会调用RecreateWnd)。这在动态切​​换/更改窗口样式而不丢失窗口状态/句柄时可能很有用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-01-24
        • 1970-01-01
        • 2013-04-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多