Delphi   发布时间:2022-04-10  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了delphi – 正确的方法来确保mainform在应用程序加载之前显示一个模态形式,已经最大化并完全重绘大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
在应用程序首次加载之前显示模态窗体之前,建议的方法是确保主窗体完全最大化,并重新绘制所有控件.

当应用程序启动时(不是登录屏幕),我需要显示一个模态对话框,但是如果我在窗口最大化的时候将窗体设置为wsmaximized,那么控件就没有机会重绘,而是被遗忘了.

目前我使用以下方式显示模态屏幕:

procedure TForm1.FormActivate(Sender: TObject);
var
  frmOrderLookup:TfrmOrderLookup;
begin
  onactivate := nil;
  frmOrderLookup:=TfrmOrderLookup.Create(nil);
  try
    frmOrderLookup.showmodal;
  finally
    frmOrderLookup.Free;
  end;
end;

解决方法

我通常做的是将自定义消息发回我的表单.这样,在表单的其他消息已经被处理之前,它将不会被处理.在此消息被处理之前,您的表单应该已经完成​​重绘.
type
  TMyForm = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    procedure HandleLookupmessage(var message: TmessagE); message WM_USER + 1;
  end;

procedure TMyForm.HandleLookupmessage(var message: TmessagE);
var
  frmOrderLookup: TfrmOrderLookup;
begin
  frmOrderLookup := TfrmOrderLookup.Create(Application);
  try
    frmOrderLookup.ShowModal;
  finally
    frmOrderLookup.Release;
  end;
end;

procedure TMyForm.FormCreate(Sender: TObject);
begin
  // Maximise form here if needed
  Postmessage(Handle,WM_USER + 1,0);
end;

如果您担心再次发送到您的应用程序的消息,您可以随时添加一个私有布尔变量来指示它已被处理一次.

大佬总结

以上是大佬教程为你收集整理的delphi – 正确的方法来确保mainform在应用程序加载之前显示一个模态形式,已经最大化并完全重绘全部内容,希望文章能够帮你解决delphi – 正确的方法来确保mainform在应用程序加载之前显示一个模态形式,已经最大化并完全重绘所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。