Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi 最大化比桌面大的窗口_Delphi_Windows Xp - Fatal编程技术网

Delphi 最大化比桌面大的窗口

Delphi 最大化比桌面大的窗口,delphi,windows-xp,Delphi,Windows Xp,在一台XP机器上,我的表单最大化时比桌面大。这是否与Delphi有关,或者XP中有一些设置需要调整 编辑; 正如您所看到的,当边框图标就位时,大约15%的窗体被切断,而当窗体最大化时,这些图标正好位于它们应该位于的位置。没有第二个监视器。您确定屏幕偏移/大小正确吗?边缘可能位于桌面区域之外,但不明显。尝试进入监视器校准菜单并验证左上/右下偏移 也可以将屏幕大小设置为大于屏幕可处理的大小 在桌面上移动时,屏幕是否滚动 如果是这样的话,我想这就是问题所在,在这种情况下,您需要调整屏幕分辨率或桌面设置

在一台XP机器上,我的表单最大化时比桌面大。这是否与Delphi有关,或者XP中有一些设置需要调整

编辑;
正如您所看到的,当边框图标就位时,大约15%的窗体被切断,而当窗体最大化时,这些图标正好位于它们应该位于的位置。没有第二个监视器。

您确定屏幕偏移/大小正确吗?边缘可能位于桌面区域之外,但不明显。尝试进入监视器校准菜单并验证左上/右下偏移

也可以将屏幕大小设置为大于屏幕可处理的大小

在桌面上移动时,屏幕是否滚动

如果是这样的话,我想这就是问题所在,在这种情况下,您需要调整屏幕分辨率或桌面设置


不过,我打赌是第一种解决方案。

这是因为在旧版本的Windows(包括XP)中,一个最大化的窗口变得足够大,以至于窗口边框不可见。窗口边框没有被删除,只是窗口比屏幕稍微大一点,然后在屏幕上居中,所以边框不可见

如果您有多个显示器,您可以看到这一点:根据您的Windows版本,如果您在一个屏幕上最大化一个窗口,您可能会看到窗口的边缘显示在另一个显示器的侧面

这不是一个bug,也不是通过Windows设置或Delphi解决的问题

这在Vista中得到了直观的解决:边框仍然存在,窗口大小可能与屏幕大小不同,但未绘制悬垂边框


您可以阅读更多信息。

您的最终用户很可能正在使用用于扩展桌面空间的软件之一。这些程序的作用是,如果某些监视器和任何应用程序窗口总是根据工作区边界调整大小,它们会扩展工作区的大小

我建议您尝试在最终用户计算机上运行此代码,以获取有关屏幕大小、工作区大小、他使用多少屏幕等的更多信息

procedure CheckScreenInfo;
var I: Integer;
begin
  Memo1.Lines.Clear;
  Memo1.Lines.Add('Monitor count:'+IntToStr(Screen.MonitorCount));
  Memo1.Lines.Add('Form is on monitor:'+IntToStr(Form4.Monitor.MonitorNum));
  Memo1.Lines.Add('Desktop left:'+IntToStr(Screen.DesktopLeft));
  Memo1.Lines.Add('Desktop top:'+IntToStr(Screen.DesktopTop));
  Memo1.Lines.Add('Desktop width:'+IntToStr(Screen.DesktopWidth));
  Memo1.Lines.Add('Desktop height:'+IntToStr(Screen.DesktopHeight));
  Memo1.Lines.Add('Screen width:'+IntToStr(Screen.Width));
  Memo1.Lines.Add('Screen height:'+IntToStr(Screen.Height));
  Memo1.Lines.Add('Work area left:'+IntToStr(Screen.WorkAreaLeft));
  Memo1.Lines.Add('Work area top:'+IntToStr(Screen.WorkAreaTop));
  Memo1.Lines.Add('Work area width:'+IntToStr(Screen.WorkAreaWidth));
  Memo1.Lines.Add('Work area height:'+IntToStr(Screen.WorkAreaHeight));
  for I := 0 to Screen.MonitorCount -1 do
  begin
    Memo1.Lines.Add('#####-Monitor '+IntToStr(Screen.Monitors[I].MonitorNum)+'-#####');
    Memo1.Lines.Add('Monitor left:'+IntToStr(Screen.Monitors[I].Left));
    Memo1.Lines.Add('Monitor top:'+IntToStr(Screen.Monitors[I].Top));
    Memo1.Lines.Add('Monitor width:'+IntToStr(Screen.Monitors[I].Width));
    Memo1.Lines.Add('Monitor height:'+IntToStr(Screen.Monitors[I].Height));
    Memo1.Lines.Add('Monitor workarea top:'+IntToStr(Screen.Monitors[I].WorkareaRect.Top));
    Memo1.Lines.Add('Monitor workarea left:'+IntToStr(Screen.Monitors[I].WorkareaRect.Left));
    Memo1.Lines.Add('Monitor workarea width:'+IntToStr(Screen.Monitors[I].WorkareaRect.Width));
    Memo1.Lines.Add('Monitor workarea height:'+IntToStr(Screen.Monitors[I].WorkareaRect.Height));
    Memo1.Lines.Add('Monitor bounds top:'+IntToStr(Screen.Monitors[I].BoundsRect.Top));
    Memo1.Lines.Add('Monitor bounds left:'+IntToStr(Screen.Monitors[I].BoundsRect.Left));
    Memo1.Lines.Add('Monitor bounds width:'+IntToStr(Screen.Monitors[I].BoundsRect.Width));
    Memo1.Lines.Add('Monitor bounds height:'+IntToStr(Screen.Monitors[I].BoundsRect.Height));
  end;
end;

请提供一些细节。有关问题如何提供信息以使其所问内容显而易见的示例,请参见。你可以在访问时决定这是否是那个问题的副本。我已经看到了那个问题,但它对我没有帮助。通常,windows会根据屏幕自动调整最大化窗口,这意味着ClientWidth和ClientHeight是自动的。窗口的工作区由分辨率决定。那么为什么表单会跳出窗口的客户区呢?我不知道。如果有人知道这些信息,我会很惊讶。但这是你的…@SertacAkyuz我想知道为什么会发生这种情况,以及有没有办法纠正它。但是,你还需要什么其他的信息呢?我甚至不知道你是否只以一种特定的形式观察到这种行为。或者你正在观察的是什么。系统是否有多个监视器,并且您在其他监视器上看到客户端区域?或者只有一个监视器,但缺少内容?窗户有多大?应该是什么?总之,我们不是你,也不能和你做同样的观察。我们只知道你说了什么。这是一台网络上的电脑,我现在无法访问。他们刚刚给我发了打印屏幕。底部的工具栏似乎已经就位,所以桌面区域设置正确。我真的不知道你怎么能回答这个问题Q@DavidHeffernan我希望他/她昨天已经发布了所有这些信息。我为错误的问题写了一个漂亮正确的答案@大卫-所有这些信息?我猜你在开玩笑。。不管怎样,如果你碰巧读到第一个两个问题的评论,你就会知道阿斯克不认为这是解决的办法。但这足以让我们更清楚地知道问题不是什么,即使没有足够的信息知道问题是什么。我不认为我在发布这篇文章时读过这些评论——它们甚至可能还不存在。@DavidM——它们读过,但没关系,你不必读评论。我想很多人都不读。