我的Delphi-7应用程序显示:
Screen.DesktopWidth
Screen.DesktopHeight
Screen.Monitors[0].Width
Screen.Monitors[0].Height
Run Code Online (Sandbox Code Playgroud)
并且,如果选择了第二台显示器,还:
Screen.Monitors[1].Width
Screen.Monitors[1].Height
Run Code Online (Sandbox Code Playgroud)
随着应用程序在我的WinXP-Pro PC上运行,我转到控制面板/显示/设置,并更改第二台显示器的设置(添加或删除它).
然后,我单击"刷新"按钮以显示4(或6)个参数的新值,并发生意外情况:Screen.DesktopWidth和Screen.DesktopHeight显示正确的新值,但其他2(或4)的值参数非常错误.
像Screen.Monitors [0] .Width = 5586935,而它应该是1680.
在Delphi 7中使用TScreen是否有一些特殊规则?
我写了一个D7应用程序来测试Application.OnActivate的行为.
这是相关部分:
procedure TMainForm.FormCreate (Sender: TObject);
begin
Memo1.Lines.Add (IntToStr (Memo1.Lines.Count + 1) + ' - MainForm.FormCreate - Begin');
Application.OnActivate := AppActivate;
Memo1.Lines.Add (IntToStr (Memo1.Lines.Count + 1) + ' - MainForm.FormCreate - End');
end;
procedure TMainForm.AppActivate (Sender: TObject);
begin
Memo1.Lines.Add (IntToStr (Memo1.Lines.Count + 1) + ' - MainForm.AppActivate - Begin');
ShowWidthsHeights (Sender);
Memo1.Lines.Add (IntToStr (Memo1.Lines.Count + 1) + ' - MainForm.AppActivate - End');
end;
procedure TMainForm.ShowWidthsHeights (Sender: TObject);
begin
Memo1.Lines.Add (IntToStr (Memo1.Lines.Count + 1) + ' - MainForm.ShowWidthsHeights - Begin');
Memo1.Lines.Add …
Run Code Online (Sandbox Code Playgroud)