|
为方面描述,我们假设应用程序里面有两个Form:Form_Login、Form_Main
1. 我在登录界面的Button事件中创建主界面,OK
[mw_shl_code=delphi,true]
Application.CreateForm(TForm_Main, Form_Main);
Application.MainForm := Form_Main;
Application.Title := Form_Main.Caption;
Form_Main.Show;
[/mw_shl_code]
但是,由于Form_Main“内容丰富”,所以从登录界面切换到主界面的执行时间过长,导致用户体验较差,于是有了下面的2
2. 我在登录界面的OnCreate事件中使用多线程技术创建主Form
(1) 线程函数CreateMainForm:
[mw_shl_code=delphi,true]
procedure CreateMainForm();
begin
Sleep(1000);//延时1秒.
Application.CreateForm(TForm_Main, Form_Main);
end;
[/mw_shl_code]
(2) 登录Form的调用代码
[mw_shl_code=c,true]
procedure TForm_Login.FormCreate(Sender: TObject);
begin
Form_Main := nil;
TThread.CreateAnonymousThread(CreateMainForm).Start;
end;
[/mw_shl_code]
(3) 然后在登录界面的Button事件中直接使用主界面
[mw_shl_code=delphi,true]
procedure TForm_Login.ButtonLoginClick(Sender: TObject);
begin
// do something here.
Application.MainForm := Form_Main;
Application.Title := Form_Main.Caption;
Form_Main.Show;
Close();
end;
[/mw_shl_code]
其结果是登录界面消失了,但是主界面没有出来,应用程序还在,感觉已经无界面了。
问题:这种做法是否可行,具体操作问题在哪里?
|
|