【问题标题】:delphi 5 apps display something wrong on the panel in win7 x64delphi 5应用程序在win7 x64的面板上显示错误
【发布时间】:2011-07-22 09:14:37
【问题描述】:

我将 delphi 5 应用程序移至 win 7 x64。但是我看到面板的显示不如 Win XP 中的那样好。我试图在 OnResize 中修复高度和调整大小,但失败了。假设一个表单中有 2 个面板,面板 1 和面板 2。 panel1.align=alleft 和 panel2.align=alclient。面板 2 在面板 1 中。但在 Win 7 x64 中,panel2 并没有完全填满它的父级。是不是因为delphi太旧了需要换新版本?

【问题讨论】:

  • 请发截图。
  • 还有一些代码。您没有足够的代表来截屏,但只需将一张放在文件共享网站上,我将在此处上传。

标签: delphi


【解决方案1】:

我见过这样的东西,尽管通常会涉及一些比两个面板更复杂的布局。在适当的地方添加几个panel.Realign; 调用(即在表单的OnShow 事件中)已经为我修复了它。

【讨论】:

    【解决方案2】:

    我认为当表单显示在屏幕上时会出现此类问题,其状态为最大化。是你的情况吗?

    我所做的解决方法是我创建的表单不是最大化,而是在屏幕中心,然后在显示表单后添加一条自定义消息:

    TMyForm = class(TForm)
     (...)
        procedure WMUser(var Msg: TMessage); message WM_USER;
     (...)
    
    
    procedure TMyForm .FormShow(Sender: TObject);
    begin
      (...)
      PostMessage(Handle,WM_USER,0,0); // avoid Vista and Seven screen refresh bug
    end;
    
    procedure TMyForm .WMUser(var Msg: TMessage);
    begin
      WindowState := wsMaximized;
    end;
    

    【讨论】:

    • WindowState := wsMaximized; in onShow 适合我(Win7)。请您详细说明什么时候会出现问题?
    • 我已经看到它是 Windows 7 的问题(至少在 Delphi 7 中,以及一些第三方组件,如 TMS 功能区)。将一个专用的自定义消息设置为 after OnShow 起到了作用,因为它是在 之后处理的,表单实际上是第一次完全创建和绘制。据我所知,我发现在最大化之前调用了一些事件。
    • 这很有趣,我在问你 2 天后第一次遇到了这个问题 :)。一位用户在 Win7 中有自定义的简化外观,并且不知何故,DBGrid 的锚点、按钮等工作错误 - 最大化窗口,但所有元素都保留在原来的位置,因此右侧和向下有很多空白区域。但是在显示形式之后,锚点开始起作用,并且调整大小会移动并缩小它,以及所有空白空间。丑陋。我已经通过随机点击随机属性解决了这个问题:),也许我应该使用你的建议,但坦率地说我害怕碰它。德尔福6顺便说一句
    • 以防万一。我发现我的问题是什么。 Form.BorderStyle 在最大化之前应该是 bsSingle,而不是 bsSizeable
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-29
    相关资源
    最近更新 更多