gpt4 book ai didi

forms - Delphi - 在第二台显示器上打开表单

转载 作者:行者123 更新时间:2023-12-02 15:38:54 25 4
gpt4 key购买 nike

我需要有关此解决方案的帮助。申请有多种形式。其中一个表单需要在选定的显示器上打开。例如:解决方案 1. OnCreate 表单检查是否使用了多个监视器,并在最后一个监视器上打开。我尝试了这段代码,但没有成功:

  Application.CreateForm(TfrmDashboard, frmDashboard);
for I := 0 to Screen.MonitorCount -1 do
begin
// Checking Screen Position
ShowMessageFmt('%d, %d, %d, %d',
[Screen.Monitors[i].BoundsRect.Left,
Screen.Monitors[i].BoundsRect.Top,
Screen.Monitors[i].BoundsRect.Right,
Screen.Monitors[i].BoundsRect.Bottom]);
end;

if Screen.MonitorCount > 1 then
begin
frmDashboard.Top:= Screen.Monitors[i].BoundsRect.Top;
frmDashboard.Top:= Screen.Monitors[i].BoundsRect.Left;
end;

解决方案2. 将表单拖至选定的显示器,并将OnDestroy 事件的顶部和左侧位置写入INI 文件。下次表单在同一显示器和同一位置打开。我尝试了这段代码,但也没有成功:

procedure TfrmDashboard.FormCreate(Sender: TObject);
var
ini: TIniFile;
begin
ini:= TIniFile.Create(extractfilepath(paramstr(0))+'Dashboard.ini');
Left:= StrToInt(ini.ReadString('Left', 'Form_Left', '0'));
Top:= StrToInt(ini.ReadString('Top', 'Form_Top', '0'));
ini.Free;
end;

procedure TfrmDashboard.FormDestroy(Sender: TObject);
var
ini: TIniFile;
begin
ini:= TIniFile.Create(extractfilepath(paramstr(0))+'Dashboard.ini');
ini.WriteString('Left', 'Form_Left', IntToStr(Left));
ini.WriteString('Top', 'Form_Top', IntToStr(Top));
ini.Free;
end;

最佳答案

frmDashboard.Top:= ...
frmDashboard.Top:= ...

这似乎是一个简单的复制粘贴错误。您两次都设置了Top。想必您的意思是:

frmDashboard.Top:= ...
frmDashboard.Left:= ...
<小时/>

这段代码犯了同样的错误:

if Screen.MonitorCount > 1 then
begin
frmDashboard.Top:= Screen.Monitors[i].BoundsRect.Top;
frmDashboard.Top:= Screen.Monitors[i].BoundsRect.Left;
end;

此外,当它定义不明确时,它指的是i。编译器会对此发出警告。我希望您启用了编译器警告和提示,并注意它们。

<小时/>

如果 INI 文件包含无效数据,您的 OnCreate 事件处理程序将引发异常。例如,如果用户将位置值编辑为非数字,则 StrToInt 将引发异常。您的程序应该对此具有弹性。

OnCreateOnDestroy 事件处理程序都无法正确管理 INI 文件对象的生命周期。如果 INI 文件访问失败,或者对 StrToInt 的调用失败(见上文),那么您将泄漏该对象。这是要遵循的模式:

obj := TMyObject.Create;
try
// do things with obj
finally
obj.Free;
end;

关于forms - Delphi - 在第二台显示器上打开表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41239730/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com