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

时间:2011-12-21 15:04:52

标签: delphi delphi-2010

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

  RichEdit1.Lines.Add('sorry email@exemple.com is already in our database');

不要直到用户采取某些行动(按钮点击等)。

我尝试使用下面的代码并且它可以工作,但我不得不点击按钮一个,以便将该行添加到richEdit1中。

4 个答案:

答案 0 :(得分:3)

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

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

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

OnCreate

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

答案 1 :(得分:3)

您可以使用表单的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;

答案 2 :(得分:2)

使用表单的OnShow事件。

但是:使用私有字段FShown:boolean,并在你的OnShow处理程序中测试它 - 如果它是TRUE,立即退出。

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

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

答案 3 :(得分:0)

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