软件启动画面中启动状态的显示(2)

2008-04-09 04:21:45来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折


try
Instance.Create();
FManagerList.Add(@AManager);
Instance.OnAppLoading:=OnAppLoading;
Instance.Initialize();
Instance.OnAppLoading:=nil;
except
TCustomManager(AManager):= nil;
raise;
end;
end;
它用来启动一个Manager,并将其加入TAppLoader的一个FManagerList列表中,在TAppLoader析构时,它会自动按照这个列表,来释放所有的Manager。
在Manager的Initialize()结束后,比较保险的是将它的OnAppLoading重新设为空,这样如果在程序运行过程中,由其它功能来调用Manager的Initialize()时,就不会再回调到显示启动文字的部分了。

最后,看一下DoLoad()函数:
function TAppLoader.DoLoad: Boolean;
begin
Result:=false;
Application.Title:=''''Ultra Album'''';
FSplashForm:=TfrmSplash.Create(nil);
try
try
FSplashForm.Show;
OnAppLoading(nil,''''Starting...'''');
Sleep(100);

InitializeManager(GOptionManager,TOptionManager);
InitializeManager(GRdItemClassManager,TRdItemClassManager);
InitializeManager(GImageManager,TFileImageManager);
InitializeManager(GThemeManager,TFileThemeManager2);
InitializeManager(GMaskManager,TFileMaskManager);

OnAppLoading(nil,''''Ending...'''',0);

Application.CreateForm(TfrmMain, frmMain);
if ParamCount>=1 then begin //deal with the filename in the parameter
FSplashForm.Hide;
frmMain.Show;
frmMain.DoOpenFile(ParamStr(1));
end;

Result:=true;
except
on E:Exception do begin
MessageBox(Application.Handle,PChar(E.ClassName '''':'''' #13 #10 E.Message),
PChar(Application.Title),MB_ICONERROR);
end;
end;
finally
FreeAndNil(FSplashForm);
end;
end;
这个函数是我的一个软件中的代码,它首先构造并显示一个启动画面,然后使用InitializeManager()分别初始化了5个Manager类,其中的GOptionManager,GRdItemClassManager。。。都是全局对象,在今后需要访问时,都使用这个全局对象来进行访问,这里我没有使用Singleton模式,因为我觉得这几个对象都必须在程序主窗体创建前完全初始化,而Singleton的设计思路是在对象第一次使用时才创建它的实例,在我的这个使用中不需要这样的功能。当然,你也可以自己改造这些Manager类成为Singleton的,改动代码不会很多。
最后,再将程序的主界面创建出来,可以看到这个主界面的创建代码就是我们从dpr文件中删除的那行。

好了,介绍到这里,最后再看一下这个类在实际软件中的使用画面吧:
AppLoader

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:在Delphi里播放Flash

下一篇:支持多线程的日志类,可以在线程中使用,用来与主窗口通讯