我想知道delphi 2010中的formhow在哪里,因为我只能在项目中看到formcreate.
我问的原因是因为我需要在FormShow事件处理程序中添加Randomize,如下所示:
procedure TfrmWinnaSpree.FormShow(Sender: TObject);
begin
Randomize;
end;
Run Code Online (Sandbox Code Playgroud)
Ken*_*ite 11
您可以像在Delphi中创建几乎每个事件处理程序一样创建事件处理程序,方法是双击该Events选项卡中的方法Object Inspector.
单击表单本身(不是表单上的任何控件),然后切换到Object Inspector.单击Events选项卡,然后向下滚动到该OnShow事件.双击事件名称旁边的右半部分,IDE将创建一个新的空事件处理程序,并将光标放在正确的位置以开始编写代码.

procedure TForm3.FormShow(Sender: TObject);
begin
|
end;
Run Code Online (Sandbox Code Playgroud)
但是,FormShow调用的地方是错误的Randomize,因为FormShow每次显示表单时都会执行,这可能会发生多次.这是一个例子(假设有两种形式,Form1和Form2,像往常一样在.dpr文件中使用默认变量名自动处理,这当然是个坏主意 - 这是为了证明你的问题的目的有问题):
procedure TForm2.FormShow(Sender: TObject);
begin
ShowMessage('In FormShow');
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Form2.Visible := not Form2.Visible;
end;
Run Code Online (Sandbox Code Playgroud)
运行程序并TForm1.Button1多次单击; 每隔一段时间你就会看到In FormShow消息.
调用Randomize的适当位置是:
在主窗体单元的初始化部分
unit uMainForm;
interface
...
implementation
...
initialization
Randomize;
end.
Run Code Online (Sandbox Code Playgroud)在您的项目源(.dpr)文件中
program MyGreatApp;
uses
Math,
Vcl.Forms,
uMainForm in 'uMainForm.pas' {Form1};
{$R *.RES}
begin
Randomize;
Application.Initialize;
Application.MainFormOnTaskbar := True;
Application.Title := 'My Super App';
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
4688 次 |
| 最近记录: |