zoukankan      html  css  js  c++  java
  • 怎样制作像delphi一样的启动欢迎画面?

    //在工程里面写
      Application.Initialize;
      Application.Title := '管理系统';
      Application.ShowHint := True;
    
      //闪现窗体创建显示
    
      FormSplash := TFormSplash.Create(Application);
      FormSplash.Show;
      FormSplash.Update;
    
    
      Application.CreateForm(TFormMain, FormMain);
    
      FormSplash.Hide;
      FormSplash.Free;
      精心编写的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窗口。 
    
      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. 
    我的给你参考参考:
    program Project1;
    
    uses
      sharemem,Forms,windows,
      Unit1 in 'Unit1.pas' {main},
    .....
    
      yyzz in 'yyzz.pas' {yhzz},
      szsqmc in 'szsqmc.pas' {szsq};
    
    {$R *.res}
    var MutexHandle:Thandle;
    begin
    
      Application.Initialize;
      Application.Title := 'go';
      with tcover.create(application) do
        begin
          show;
          update;
    
          Application.CreateForm(Tmain, main);
    ........
          Application.CreateForm(Tszsq, szsq);
          hide;
          free;
      end;
      Application.Run;
    end.
    //启动画面:
    
    //建两个form,改写工程文件:
    program Project1;
    uses
     Forms,SysUtils,
     Unit1 in 'Unit1.pas' {Form1},  //主窗口
     Unit2 in 'Unit2.pas' {Form2};  //启动画面窗口
    {$R *.res}
    begin
     Application.Initialize;
     form2:=tform2.Create(application);
     form2.Show;
     form2.Update;
     Application.CreateForm(TForm1, Form1);
     application.Initialize;
     sleep(1000);    //显示启动画面的时间
     form2.Close;
     Application.Run;
    end.
  • 相关阅读:
    Redis持久化
    Redis进阶——事务、TTL、排序、消息通知、管道
    行为设计模式
    Redis数据类型
    ASP.NET并发处理
    c# 泛型有什么作用?
    IBatisNet 升级到 .Net Framework 4.0 时发现 IBatisNet 一小BUG
    【Python3】用for循环和while循环分别打印出如下格式“九九乘法表”
    Visual Studio 2010 SP1 WPF程序属性重命名BUG,小心!
    为什么用SOA架构?
  • 原文地址:https://www.cnblogs.com/jijm123/p/11568420.html
Copyright © 2011-2022 走看看