如何在表单启动时执行以下操作:
RichEdit1.Lines.Add('sorry email@exemple.com is already in our database');
不要直到用户采取某些行动(按钮点击等)。
我尝试使用下面的代码并且它可以工作,但我不得不点击按钮一个,以便将该行添加到richEdit1中。
答案 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()
方法执行操作。