这个全屏是怎么做的

解决方案 »

  1.   

    无标题无边框的窗口,里面一个TImage,窗体里可以加个定时器,延迟一定时间后显示下一个窗体,并隐藏自己。image上onclick如定时器执行一样的代码。
      

  2.   

    窗体form1上放一张背景图片image,最好是动画的;设置:
    form1.borderstyle:=bsNone;
    image.align:=alClient;还要有个按扭用来退出程序或者进入主画面
    (图片作为按扭也行,或者用快捷键,或者是定时器...都可以自己设计)
      

  3.   

    那可以做成DLL文件,然后用EXE调用吗
      

  4.   

    可以做成DLL 我写注册窗口都是放在DLL里边
      

  5.   

    bpl也行,,呵呵,这类功能都是在窗体放一个图片做的,然后窗体居中
      

  6.   


    感觉是splash,在网络上搜索的代码。前言:网上有很多介绍delphi创建闪屏的代码,大多只是在程序开启前显示一个闪屏,但是却没有说如何在闪屏上显示程序加载的进度,于是笔者有意思介绍一下这种闪屏方式。
    1.创建一个窗体(TfrmSplash),放入一个TImageBox,加载一幅图片,调整好TImageBox与图片的大小,然后在其上放入一个TLabel,name=LblStatus,用于显示加载进度文字。然后将TfrmSplash设置为不自动创建。
    2.加入如下代码(代码很简单,就不用解释太多)Delphi代码
    unit UntFormSplash;    
       
    interface    
       
    uses    
       Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,    
       Dialogs, ExtCtrls, StdCtrls;    
       
    type    
       TfrmSplash = class(TForm)    
         Image1: TImage;    
         LblStatus: TLabel;    
       private    
         { Private declarations }    
         FParam:Pointer;    
       public    
         { Public declarations }    
         class function Execute(AParam:Pointer):Boolean;    
         procedure SetStatusText(Value: string);    
       published    
         property StatusText : string write SetStatusText;    
       end;    
       
    var    
       SplashForm: TfrmSplash;    
       
    implementation    
       
    {$R *.dfm}    
       
    { TfrmSplash }    
       
    class function TfrmSplash.Execute(AParam:Pointer): Boolean;    
    begin    
       with TfrmSplash.Create(nil) do    
       try    
         FParam := AParam;    
         Result := ShowModal = mrOk;    
       finally    
         Free;    
       end;    
    end;    
       
    procedure TfrmSplash.SetStatusText(Value: string);    
    begin    
       LblStatus.Caption := Value;    
       Update;   //这句非常重要,不加的话,界面会阻塞,文字也就不会更新显示    
       Sleep(1000); //这句根据自己实际情况来调整,主要是怕闪屏太快关闭,达不到效果    
    end;    
       
       
    end.   unit UntFormSplash;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, ExtCtrls, StdCtrls;type
      TfrmSplash = class(TForm)
        Image1: TImage;
        LblStatus: TLabel;
      private
        { Private declarations }
        FParam:Pointer;
      public
        { Public declarations }
        class function Execute(AParam:Pointer):Boolean;
        procedure SetStatusText(Value: string);
      published
        property StatusText : string write SetStatusText;
      end;var
      SplashForm: TfrmSplash;implementation{$R *.dfm}{ TfrmSplash }class function TfrmSplash.Execute(AParam:Pointer): Boolean;
    begin
      with TfrmSplash.Create(nil) do
      try
        FParam := AParam;
        Result := ShowModal = mrOk;
      finally
        Free;
      end;
    end;procedure TfrmSplash.SetStatusText(Value: string);
    begin
      LblStatus.Caption := Value;
      Update;  //这句非常重要,不加的话,界面会阻塞,文字也就不会更新显示
      Sleep(1000); //这句根据自己实际情况来调整,主要是怕闪屏太快关闭,达不到效果
    end;end.3. 在项目的.dpr文件中加入如下代码:Delphi代码
    begin    
       
       Application.Initialize;    
       
       SplashForm := TfrmSplash.Create(Application);    
       SplashForm.Show;    
       SplashForm.Update;    
       
       SplashForm.StatusText := '准备启动...';    
       SplashForm.Update;    
          
       Application.CreateForm(TDM, DM);    
       Application.CreateForm(TfrmMain, frmMain);    
          
       SplashForm.Hide;    
       SplashForm.Free;    
       
       Application.Run;    
    end.   begin  Application.Initialize;  SplashForm := TfrmSplash.Create(Application);
      SplashForm.Show;
      SplashForm.Update;  SplashForm.StatusText := '准备启动...';
      SplashForm.Update;
      
      Application.CreateForm(TDM, DM);
      Application.CreateForm(TfrmMain, frmMain);
      
      SplashForm.Hide;
      SplashForm.Free;  Application.Run;
    end.4.这一步就是主窗体加载数据的时候,边加载边更新闪屏的进度文字了:Delphi代码
    procedure TfrmMain.FormCreate(Sender: TObject);    
    begin    
       
       with SplashForm do    
       try    
         StatusText := ('开始初始化内存...');    
         FCacheHash := TStringHashMap.Create(CaseInsensitiveTraits, 255);    
         FCurrentClients := TList.Create;    
         //VST.NodeDataSize := SizeOf(TTagCustomListItem);    
         //VST.RootNodeCount := 2;    
         VST.NodeDataSize := SizeOf(TMyTreeNodeDate);    
         StatusText :=('初始化内存完成');    
       
         StatusText :=('开始加载客户端列表...');    
         BuildGroupTree;    
         StatusText :=('加载客户端列表完成');    
       
         StatusText :=('开始加载分组信息...');    
         AddELVDefaultGroup;    
         StatusText :=('开始初始化内存');    
       
         StatusText :=('开始初始化数据...');    
         G_DefNetImpl := TDefNetImpl.Create();    
         G_DefNetImpl.RegisterObserver(Self);    
         StatusText :=('全部数据加载完毕,程序即将启动...');    
       
       finally    
       
       end;    
       
       
    end;   procedure TfrmMain.FormCreate(Sender: TObject);
    begin  with SplashForm do
      try
        StatusText := ('开始初始化内存...');
        FCacheHash := TStringHashMap.Create(CaseInsensitiveTraits, 255);
        FCurrentClients := TList.Create;
        //VST.NodeDataSize := SizeOf(TTagCustomListItem);
        //VST.RootNodeCount := 2;
        VST.NodeDataSize := SizeOf(TMyTreeNodeDate);
        StatusText :=('初始化内存完成');    StatusText :=('开始加载客户端列表...');
        BuildGroupTree;
        StatusText :=('加载客户端列表完成');    StatusText :=('开始加载分组信息...');
        AddELVDefaultGroup;
        StatusText :=('开始初始化内存');    StatusText :=('开始初始化数据...');
        G_DefNetImpl := TDefNetImpl.Create();
        G_DefNetImpl.RegisterObserver(Self);
        StatusText :=('全部数据加载完毕,程序即将启动...');  finally  end;end;收功,试着运行一下吧,一个漂亮的splash诞生了.