【问题标题】:Delphi: handling multiple monitors and TForm.Left relative propertyDelphi:处理多个监视器和 TForm.Left 相关属性
【发布时间】:2014-06-18 09:08:40
【问题描述】:

当我显示一个表单时,我使用我保存在 ini 文件中的 TForm.Left 属性将其显示在上次的位置。

我想添加对多台显示器的支持,因为如果有 2 台显示器,Left 可以是 2500,所以 2 台显示器被视为一个非常宽的显示器。

我想将监视器编号 (TForm.Monitor.MonitorNum) 保存到 ini 文件,但要保存相对的 Left。 有没有根据监视器告诉Left的属性?

例如我有 2 个 1024x768 显示器,一个在右侧(主),一个在左侧(辅助/扩展),如果我将右侧显示器上的表单从左侧移动 2 个像素,Left 属性为 1026。我想要说“这是监视器 2,左边是 2”。

谢谢。

【问题讨论】:

    标签: delphi delphi-xe2 multiple-monitors


    【解决方案1】:

    TForm 没有属性可以告诉它与它所在的监视器的相对位置。你必须减去:Left - Monitor.Left。在您的示例中,这将是 1026 - 1024。

    无论如何,与仅存储/设置表单左侧(即 1026)相比,我认为这种方法没有任何优势。如果您担心监视器安排可能会在会话之间发生变化,您可以使用MakeFullyVisible

    【讨论】:

    • +1 这是中肯的建议。只需存储Left。您关心的问题仅在用户更改布局时出现,但您的解决方案也不好。如果 2 号监视器不见了怎么办?如果现在有 3 个显示器怎么办?存储LeftTop 并使用MakeFullyVisible
    • 非常感谢MakeFullyVisible 似乎是完美的解决方案,正如 David Heffernsan 所说“您关心的问题仅在用户更改布局时出现” - 这是我关心的问题。非常感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多