關于程序啟動畫面的控制(300分)

  • 主题发起人 主题发起人 Liber_Wu
  • 开始时间 开始时间
L

Liber_Wu

Unregistered / Unconfirmed
GUEST, unregistred user!
我的程序啟動畫面都只是一閃而過,我想在那個啟動畫面的Form中加入一個Ttimer控件
來控制這個啟動畫面的顯示時間,我該怎么寫這個DPR文件才能讓啟動畫面中的Ttimer
起作用???
 
在delphi6.0 win2000 下调试通过。
首先建立一个工程,新建一个窗体。
-设置name为 frmsplash 和frmmain
-frmsplash的borderstyle设为bsdialoge
-frmsplash中放一个timer控件
-timer的interval 设为3000
procedure tfrmsplash.Timer1Timer(Sender: TObject);
begin
timer1.enabled:=false;
end;
procedure TFrmsplash.FormCreate(Sender: TObject);
begin
SetWindowLong(Handle, GWL_STYLE,
GetWindowLong(Handle,GWL_STYLE) AND
NOT WS_CAPTION);
ClientHeight := Height;
Refresh;
end;
- 在工程的options中把frmsplash设为不是自动启动
- 在程序中加入:
program MyApp;
...
begin
Application.Initialize;
{ ---------- 加入这些:------------- }
frmSplash := TfrmSplash.Create(Application);
frmSplash.Show;
frmSplash.Refresh;
while frmsplash.timer1.enableddo
application.ProcessMessages;
{-----在此添加要启动的事件-----}
Application.CreateForm(tfrmmain,frmmain);
frmsplash.hide;
frmsplash.free;
Application.Run;
end;

运行程序看看效果。
 
program PrMain;
uses
sharemem,
Forms,
Windows,
UnitMain in 'UnitMain.pas' {Form1},
UnitExit in 'UnitExit.pas' {FormExit},
UnitLogin in 'UnitLogin.pas' {FormLogin},
Functions in 'Functions.pas';
{$R *.res}
//const classname = 'TForm1';
{声明为主窗体的类名}
{
var
handle : integer;
begin
}
// handle := findwindow(classname,nil);{查找是否有此类的窗体}
// if handle <> 0 then
{不为0则程序已运行}
// begin
// messagebox(0,'该程序已经在运行中!','运行',0);{提示程序已运行}
// halt;
{退出程序}
// end;
begin
Application.Initialize;
Application.CreateForm(TFormMain, FormMain);
FormLogin := TFormLogin.Create(FormLogin);
FormLogin.Show;
FormLogin.Update;
FormLogin.Timer1.enabled := true;
//sleep(5000);
////可以这样让FormLogin显示5秒钟,不用Timer
FormLogin.Free;
Application.Run;
end.
 
sleep(5000)
 
如果我還在啟動畫面上加上一個ProgressBar控件,也由Ttimewr空間控制,怎么保証
ProgressBar的position到達最大值時才關閉呢?
 
自己试试吧,没什么难度的。
 
那你就等到ProgressBar的Position到最大值再Close这个窗口阿?

Application.Initialize;
{创建启动窗口}
frmAbout := TfrmAbout.CreateAsSplash(nil);
SetSplashState('Starting application...');//这个函数更改启动画面的显示的字符串
frmAbout.Show;
frmAbout.Update;
......
{释放启动窗口}
SetSplashState('');
if Assigned(frmAbout) then
begin
frmAbout.Hide;
FreeAndNil(frmAbout);
end;
类似的,你也等到Position=MaxValue的时候再释放。
 
我搞好了。謝謝pink_wt
也謝謝各位給我的回答。謝謝了
 
begin
Application.Initialize;
Application.CreateForm(TFormMain, FormMain);
FormLogin := TFormLogin.Create(FormLogin);
FormLogin.Show;
FormLogin.Update;
FormLogin.MyProcess;//在formlogin里定义一procedure Myprocess
//sleep(5000);
////可以这样让FormLogin显示5秒钟,不用Timer
FormLogin.Free;
Application.Run;
end.
//在TFormLogin中
procedure TFormLogin.Myprocess;
begin
while ProgressBar.position <> ProgressBar.maxdo
application.HandleMessage;
end;
 
后退
顶部