将表单设置为WindowState = wsMaximized有时会使表单最大化但不会:

长期错误:这是我在2003年首次在Borland新闻组中提出的一个问题:
然后在2006年:
然后在2008年再次:
有人在2012年的Embarcadero论坛上提出这个问题:
现在是时候将18岁的bug移植到Stackoverflow了.也许某人终于想出了一个解决方法.
重现的步骤:
我的帖子包含了六种失败模式,但最简单的是:
删除表单上的a Label和Edita:

为以下内容添加OnEnter活动TEdit:
procedure TForm1.Edit1Enter(Sender: TObject);
begin
Label1.Font.Style := Label1.Font.Style + [fsBold];
end;
Run Code Online (Sandbox Code Playgroud)并设置表格:
WindowState到wsMaximizedAutoScroll为假而bazinga,失败了.
2008年帖子的另一组步骤之一:
- 创建一个新的应用程序和一个表单.
- 在设计时将表单设置为最大化(WindowState = wsMaximized).
- 删除窗体上的ListView控件
在OnShow期间,将20个空项添加到列表视图中:
Run Code Online (Sandbox Code Playgroud)procedure TForm1.FormShow(Sender: TObject); var i: Integer; begin for i := 1 to 20 do ListView1.Items.Add; end;在设计时将表单的AutoScroll属性设置为false(AutoScroll = False)
当然,我没有追求的是"在n …
我有一个小应用程序,大多数时候在Start-button后面有一个动作,应该从命令行参数/ AUTORUN触发.如果缺少该参数,用户也可以手动按下该参数.
我的问题是我应该在哪里对命令行进行此检查,以便在给出GUI时仍然更新.目前的解决方案是这样,但在动作完成之前不会更新GUI.
procedure TfrmMainForm.FormShow(Sender: TObject);
begin
if FindCmdLineSwitch('AUTORUN') then
btnStart.Click;
end;
Run Code Online (Sandbox Code Playgroud)