Delphi 2010如何在表单启动时执行某些操作,而无需用户执行某些操作(按钮单击等)

Delphi 2010如何在表单启动时执行某些操作,而无需用户执行某些操作(按钮单击等),delphi,delphi-2010,Delphi,Delphi 2010,如何在表单启动时执行以下操作: RichEdit1.Lines.Add('sorry email@exemple.com is already in our database'); 直到用户采取某些行动(按钮单击等…) 我尝试了下面的代码,它可以工作,但我必须单击按钮1才能将该行添加到richEdit1组件中。如果在设计时已将TRichEdit控件添加到表单中,则可以在表单的OnCreate事件中设置RichEdit控件的属性 这允许您在用户看到控件或有机会与控件交互之前设置控件的属性 O

如何在表单启动时执行以下操作:

  RichEdit1.Lines.Add('sorry email@exemple.com is already in our database');
直到用户采取某些行动(按钮单击等…)


我尝试了下面的代码,它可以工作,但我必须单击按钮1才能将该行添加到richEdit1组件中。

如果在设计时已将
TRichEdit
控件添加到表单中,则可以在表单的
OnCreate
事件中设置RichEdit控件的属性

这允许您在用户看到控件或有机会与控件交互之前设置控件的属性

OnCreate
在创建表单(包括子控件)之后和显示表单之前调用


要在IDE中打开OnCreate事件进行编辑,只需双击表单的空白部分。

您可以使用表单的
OnActivate
事件设置可视控件的属性。我通常是这样做的:

procedure TForm1.FormActivate(Sender: TObject);
begin
  //Allow this code to run only once
  OnActivate := nil;

  //Set RichEdit Properties
  RichEdit1.Lines.Add('sorry email@exemple.com is already in our database');
end;

有时,有必要延迟操作,直到消息循环开始运行。在这些情况下,我倾向于使用表单的构造函数或
OnCreate
事件,通过
PostMessage()
(有些人使用短时间间隔
TTimer
)将自定义异步消息发布到表单的窗口,然后在表单的
WndProc()中执行操作
收到消息时的方法。

使用表单的OnShow事件

但是:使用一个私有字段FShown:boolean,并在OnShow处理程序中测试它-如果它为真,立即退出

如果为FALSE,则将其设置为TRUE,然后继续执行您想要执行的操作


还有OnCreate事件,但在许多情况下,这还为时过早-当OnCreate处理程序中的代码运行时,许多可视化组件尚未正确初始化。

您是否尝试过该表单的
OnCreate
事件?实际上,我不确定您所说的“直到用户采取某些操作”到底是什么意思。你能试着更详细地解释一下你的问题吗?此外,您提到“我尝试使用下面的代码”,但我看不到该代码。您希望延迟添加行“直到用户采取某些操作(按钮单击)”,但不希望“被迫单击按钮”。这听起来很矛盾。请更好地解释您希望用户执行的操作的场景。这就是“OnActivate:=nil;”是给你的。”OnActivate'将只调用一次。