关于溅射屏幕的制作 ( 积分: 50 )

  • 主题发起人 主题发起人 shijiesun2
  • 开始时间 开始时间
S

shijiesun2

Unregistered / Unconfirmed
GUEST, unregistred user!
以前按以下方法制作过溅射屏幕,延时的修改也很方便,现在再作却不行了,溅射屏幕一闪即过,没有延时的效果,不知是怎么回事,我可以给200—300分。

巧用Delphi制作溅射屏幕

1 2 下一页
  精心编写的WINDOWS程序显示启动注意事项,称之为溅射屏幕(splash screen)。利用一点儿小小的内容,即可给程序的显示添加不少色彩。
  由于工程本身创建程序的主窗口,且启动溅射屏幕必须在创建主窗口之前出现,所以工程文件必须创建自己的启动屏幕。这意味着用户必须修改源代码来创建工程文件,而这通常在DELPHI编程中是不需要的。下面的过程介绍了溅射屏幕的建立过程。
  1、开始一个新的工程。将窗体命名为MainForm,同时将其Caption属性设置为SplashinDemo。把这个工程保存在一个目录中,如C:ProjectsSplashin。把MainForm的单元命名为Main,把工程文件命名为Splashin。
  2、在MainForm中插入一个Button组件。将Button的Name属性改为ExitButton,而将其Caption属性改为Exit。为ExitButton的OnClick事件创建一个处理器,在过程的begin
和end关键词之间插入Close;语句。
  3、选取File|New Form命令,或者单击New Form速度按钮。添加一个新的窗体。
  4、将这个窗体的Name属性改变为SplashForm,删除其Caption属性。此外,将其BorderStyle属性改变为bsnone,同时将BorderIcons下的三个子值设置为False。
  5、保存这个工程。当Delphi提示读者提供单元文件名时,要确信当前目录为正确的目录。为SplashForm的单元文件名输入Splash。
  6、将SplashForm的Enabled属性设置为False。这里不想让用户能够给窗口提供键盘和鼠标命令,这是极少见的情况之一。在这个例子中,我们想让程序对SplashForm的显示拥有完全的控制权。
  7、由于窗口没有轮廓,所以从Additional组件类中插入一个Bevel组件对象。这有助于定义窗口的边缘。将Bevel1的Align属性设置为alClient。同时,将对象的Shape属性改变为bsFrame,将其Style属性改变为bsRaised。这些值由使用者来确定。
  8、在SplashForm中插入想使用的组件,在这里不要插入任何按钮或者其他相互作用的控件。应用程序本身显示和去除启动溅射对话框。
  9、选择Project菜单。高亮显示Splash工程个弹出式菜单。选择Options命令。在所产生的Project Options对话框中,选取Forms页标签。注意,MainForm和SplashForm位于自动创建的窗体列表中。高亮显示每个窗体并单击鼠标右按钮来将其移动到Available窗体。所有的Delphi窗体在运行时都是在内存中自动创建的,这要消耗内存和系统资源。在这样的一个案例中,程序是在运行时创建窗体的,读者应该从自动创建的列表中删除窗体。关闭ProjectOptions窗口。

巧用Delphi制作溅射屏幕

2001-12-22· ·施路··  

上一页 1 2

  10、接下来,修改工程的源代码,以便在显示主窗口之前显示溅射对话框。这里需要在工程文件中插入语句,以便与Splash.dpr工程文件相匹配。工程源代码如下:
program Project3;

  uses
   Forms,
   main in ‘main.pas‘ {MainForm},
   splash in ‘splash.pas‘ {SplashForm};

  {$R *.RES}
  begin

   SplashForm:=TSplashForm.Create(Application);

   SplashForm.Show;

   SplashForm.Update;

   Application.CreateForm(TMainForm,MainForm);

   SplashForm.Close;

   Application.Run;

  end.


  
  11、如果这时编译和运行程序,它就非常快速地显示和去除启动溅射对话框,以至用户可能没机会见到它。为了强迫对话框保持几秒钟的可见时间,请选取程序的MainForm。为窗体的OnCreate命令创建一个处理器。在关键词的前面添加一个名为stopTime的长整型变量。在begin
和end之间插入两个语句:一个为对Windows GetTickCount函数的调用。来将stopTime设置为Windows已在运行的秒数;另一个语句为while语句,这个语句另外延迟2秒钟。程序清单如下:
 unit main;

  interface
  uses
   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
   StdCtrls;

  type
   TMainForm = class(TForm)
    Exitbutton: TButton;

    procedure ExitbuttonClick(Sender: TObject);

    procedure FormCreate(Sender: TObject);

   private
    { Private declarations }
   public
    { Public declarations }
   end;

  var
   MainForm: TMainForm;

  implementation
  {$R *.DFM}
  procedure TMainForm.ExitbuttonClick(Sender: TObject);

  begin

   close;

  end;

  procedure TMainForm.FormCreate(Sender: TObject);

  var
   stopTime:LongInt;

  begin

   stopTime:=GetTickCount div 1000;

   while ((GetTickCount div 1000)<(stopTime+2))do

   Sleep(1);

  end;

  end.

 
  12、按F9编译、运行程序。
 
以前按以下方法制作过溅射屏幕,延时的修改也很方便,现在再作却不行了,溅射屏幕一闪即过,没有延时的效果,不知是怎么回事,我可以给200—300分。

巧用Delphi制作溅射屏幕

1 2 下一页
  精心编写的WINDOWS程序显示启动注意事项,称之为溅射屏幕(splash screen)。利用一点儿小小的内容,即可给程序的显示添加不少色彩。
  由于工程本身创建程序的主窗口,且启动溅射屏幕必须在创建主窗口之前出现,所以工程文件必须创建自己的启动屏幕。这意味着用户必须修改源代码来创建工程文件,而这通常在DELPHI编程中是不需要的。下面的过程介绍了溅射屏幕的建立过程。
  1、开始一个新的工程。将窗体命名为MainForm,同时将其Caption属性设置为SplashinDemo。把这个工程保存在一个目录中,如C:ProjectsSplashin。把MainForm的单元命名为Main,把工程文件命名为Splashin。
  2、在MainForm中插入一个Button组件。将Button的Name属性改为ExitButton,而将其Caption属性改为Exit。为ExitButton的OnClick事件创建一个处理器,在过程的begin
和end关键词之间插入Close;语句。
  3、选取File|New Form命令,或者单击New Form速度按钮。添加一个新的窗体。
  4、将这个窗体的Name属性改变为SplashForm,删除其Caption属性。此外,将其BorderStyle属性改变为bsnone,同时将BorderIcons下的三个子值设置为False。
  5、保存这个工程。当Delphi提示读者提供单元文件名时,要确信当前目录为正确的目录。为SplashForm的单元文件名输入Splash。
  6、将SplashForm的Enabled属性设置为False。这里不想让用户能够给窗口提供键盘和鼠标命令,这是极少见的情况之一。在这个例子中,我们想让程序对SplashForm的显示拥有完全的控制权。
  7、由于窗口没有轮廓,所以从Additional组件类中插入一个Bevel组件对象。这有助于定义窗口的边缘。将Bevel1的Align属性设置为alClient。同时,将对象的Shape属性改变为bsFrame,将其Style属性改变为bsRaised。这些值由使用者来确定。
  8、在SplashForm中插入想使用的组件,在这里不要插入任何按钮或者其他相互作用的控件。应用程序本身显示和去除启动溅射对话框。
  9、选择Project菜单。高亮显示Splash工程个弹出式菜单。选择Options命令。在所产生的Project Options对话框中,选取Forms页标签。注意,MainForm和SplashForm位于自动创建的窗体列表中。高亮显示每个窗体并单击鼠标右按钮来将其移动到Available窗体。所有的Delphi窗体在运行时都是在内存中自动创建的,这要消耗内存和系统资源。在这样的一个案例中,程序是在运行时创建窗体的,读者应该从自动创建的列表中删除窗体。关闭ProjectOptions窗口。

巧用Delphi制作溅射屏幕

2001-12-22· ·施路··  

上一页 1 2

  10、接下来,修改工程的源代码,以便在显示主窗口之前显示溅射对话框。这里需要在工程文件中插入语句,以便与Splash.dpr工程文件相匹配。工程源代码如下:
program Project3;

  uses
   Forms,
   main in ‘main.pas‘ {MainForm},
   splash in ‘splash.pas‘ {SplashForm};

  {$R *.RES}
  begin

   SplashForm:=TSplashForm.Create(Application);

   SplashForm.Show;

   SplashForm.Update;

   Application.CreateForm(TMainForm,MainForm);

   SplashForm.Close;

   Application.Run;

  end.


  
  11、如果这时编译和运行程序,它就非常快速地显示和去除启动溅射对话框,以至用户可能没机会见到它。为了强迫对话框保持几秒钟的可见时间,请选取程序的MainForm。为窗体的OnCreate命令创建一个处理器。在关键词的前面添加一个名为stopTime的长整型变量。在begin
和end之间插入两个语句:一个为对Windows GetTickCount函数的调用。来将stopTime设置为Windows已在运行的秒数;另一个语句为while语句,这个语句另外延迟2秒钟。程序清单如下:
 unit main;

  interface
  uses
   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
   StdCtrls;

  type
   TMainForm = class(TForm)
    Exitbutton: TButton;

    procedure ExitbuttonClick(Sender: TObject);

    procedure FormCreate(Sender: TObject);

   private
    { Private declarations }
   public
    { Public declarations }
   end;

  var
   MainForm: TMainForm;

  implementation
  {$R *.DFM}
  procedure TMainForm.ExitbuttonClick(Sender: TObject);

  begin

   close;

  end;

  procedure TMainForm.FormCreate(Sender: TObject);

  var
   stopTime:LongInt;

  begin

   stopTime:=GetTickCount div 1000;

   while ((GetTickCount div 1000)<(stopTime+2))do

   Sleep(1);

  end;

  end.

 
  12、按F9编译、运行程序。
 
肯定还是你的主窗口创建时间太短了
 
以前改动(stopTime+2)里面的数值,会发生变化,这回不知怎么就不行了。
 
是不是少了两句(如下):
SplashForm:=TSplashForm.Create(Application);
   SplashForm.Show;
   SplashForm.Update;
Application.Initialize;//第一句
   Application.CreateForm(TMainForm,MainForm);
   SplashForm.Close;
SplashForm.Free.//第二句
   Application.Run;
 
[工程文件]
var
frmFlash: TfrmFlash;
begin
Application.Initialize;
...
frmFlash := TfrmFlash.Create(Application);
frmFlash.Show;
frmFlash.Update;
Application.CreateForm(TfrmMain, frmMain);
frmFlash.Hide;
frmFlash.Free;
Application.Run;
end.

[untFlash]
private
{ Private declarations }
StartTime: Cardinal;
FClose: Boolean;
...
const
ShowTime = 2000;
...
procedure TfrmFlash.FormHide(Sender: TObject);
begin
while (GetTickCount<(StartTime + ShowTime))do
begin
Application.ProcessMessages;
Sleep(1);
if FClose then
break;
end;
end;

procedure TfrmFlash.imgFlashClick(Sender: TObject);

begin
FClose := true;
Close;
end;

procedure TfrmFlash.FormShow(Sender: TObject);
begin
StartTime:=GetTickCount;
end;

1.做闪屏时默认显示两秒(这是正常最少显示时间,具体要看主窗口打开时间),或在窗口上单击马上关闭.
2.做关于窗(在程序中用showmodal打开)时直到你在窗口上单击才关闭.
 
接受答案了.
 
后退
顶部