在Delphi中以编程方式启动启动画面

时间:2010-07-29 05:15:54

标签: delphi

在Delphi中实现启动画面的最佳方法是什么?

3 个答案:

答案 0 :(得分:7)

创建表单,将其设为FormStyle = fsStayOnTop,将其边框样式设置为无,并将其标题设置为空白。这将创建一个顶部没有标题栏的表单。在表单上放一个TImage并将位图加载到其中。

在表单上删除一个TTimer(这将用于确保启动屏幕在至少某段时间内保持不变。

以下是我在启动表格中的代码:

TSplashForm = class (TForm)
  Image1: TImage;
  CloseTimer: TTimer;
  procedure CloseTimerTimer(Sender: TObject);
  procedure FormCreate(Sender: TObject);
  procedure FormClose(Sender: TObject; var Action: TCloseAction);
  procedure FormDestroy(Sender: TObject);
private
  FStartTicks: integer;
  FOKToClose: boolean;
public
  property OKToClose: boolean read FOKToClose write FOKToClose;
end;

var
  SplashForm: TSplashForm;

在FormCreate中:

procedure TSplashForm.FormCreate(Sender: TObject);
begin
  FStartTicks := GetTickCount;
end;

procedure TSplashForm.CloseTimerTimer(Sender: TObject);
const
  CTimeout = 3000;
begin
  if (GetTickCount - FStartTicks > CTimeout) and OKToClose then
    Close;
end;

procedure TSplashForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Action := caFree;
end;

procedure TSplashForm.FormDestroy(Sender: TObject);
begin
  SplashForm := nil;
end;

在项目文件中,执行以下操作:

begin

  SplashForm := TSplashForm.Create(nil)

  Application.Initialize;
  Application.Title := 'My Program';

  //create your forms, initialise database connections etc here
  Application.CreateForm(TForm1, Form1);

  if Assigned(SplashForm) then
    SplashForm.OkToClose := True;

  Application.Run;

end.

(这些代码的大部分内容都是我的头脑,它可能无法直接编译)

答案 1 :(得分:1)

启动画面在技术上并不困难,它只是一个弹出然后消失的形式。因此,在Delphi中实现启动画面的最佳方法是:让图形设计师为您绘制一个!

答案 2 :(得分:0)

这就是我这样做的方法:首先通过向项目中添加一个空表单来创建一个新单元(file-> new->表单),让我们调用这个单元splashy,将其(表单的)边框样式设置为bsnone并将其名称属性设置为'splashscreen'或者你想要的东西,设计它(形式)首先使用mspaint或某些东西设计图片然后在表单上删除一个timage组件并通过它打开图像文件,添加一行:'splashscreen :Tsplashscreen;(agian,你可以根据需要命名)'到单位 var 部分然后将这个单位的名字添加到第一个单位的使用条款 以下代码中的第一个单元形成oncreate事件:

  procedure TForm1.FormCreate(Sender: TObject);
    var
     splash :  Tsplashscreen;
   begin
     Splash := TSplashScreen.Create(Application);
     Splash.Show;
    Sleep(1000); //as long as you want screen to be displayed 1000 = 1 second
     Splash.Hide;
     Splash.Free;
    end;