我注意到Delphi 11.1 Windows应用程序中有一个奇怪的问题。
我需要在屏幕右下角显示Form3,5分钟后一个按钮被点击:
procedure TForm1.Timer2Timer(Sender: TObject);
begin
Timer2.Enabled := False;
// Set form position on bottom right of the screen
with Form3 do
begin
Top := Screen.Height - Form3.Height - GetTaskBar_Y_Bottom_Height();
Left := Screen.Width - Form3.Width - GetTaskBar_X_Right_Width();
end;
// Now show the form
Form3.Show;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Timer2.Enabled := True;
end;
它工作正常,表格显示在屏幕的右下角...嗯,大多数时候都是这样。
因为在某些情况下,它显示在屏幕的左上角:
即使Screen.Height和Screen.Width是正确的:
Screen.Height = 1080
Screen.Width = 1920
你有什么建议吗?
一些其他详细信息:
- 我使用的是1920 x 1080分辨率的单显示器。
- 应用程序的清单使用“Per Monitor v2”。
1条答案
按热度按时间hec6srdp1#
由于您还没有响应我对
GetTaskBar...
函数的请求,我们可以放弃它们,使用更好的方法来评估可用的工作区。此外,您没有考虑到任务栏的位置。许多用户(如果不是大多数的话)让它保持在底部,但用户可能更喜欢将它保持在显示器的左侧、顶部或右侧边缘。
要考虑不同的布局,可以使用类似
Form3
的OnShow
事件:您可以从
Form1
中的计时器事件调用它