Экран-заставка программно в Delphi

Что лучший способ состоит в том, чтобы реализовать экран-заставку в Delphi?

8
задан 3 revs, 2 users 100% 3 January 2019 в 05:38
поделиться

3 ответа

Создайте форму, сделайте ее FormStyle = fsStayOnTop, установите для нее стиль границы none, а для надписи - blank. Это создаст форму без верхней строки подписи. Бросьте 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.

(большая часть этого кода была написана из головы, он может не компилироваться сразу)

7
ответ дан 5 December 2019 в 20:12
поделиться

Вот как я это делаю: сначала создайте новый блок, добавив пустую форму в ваш проект (файл-> новый-> форма), позволяет называть этот модуль splashy, устанавливать его (формы) стиль границы на bsnone и устанавливать для его свойства name значение 'splashscreen' или что угодно, спроектируйте его (форму), сначала спроектировав изображение с помощью mspaint или чего-то еще, затем перетаскивая компонент timage в форму и открывая через него файл изображения, добавьте строку: 'splashscreen: Tsplashscreen; (вы можете называть его как хотите)' к единицам var , затем добавьте имя этого модуля в раздел using первого модуля. и приведенный ниже код для первых модулей формирует событие 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;
0
ответ дан 5 December 2019 в 20:12
поделиться

В заставке нет ничего технически сложного, это просто форма, которая появляется, а затем исчезает. Поэтому лучший способ реализовать заставку в Delphi - это: Попросите графического дизайнера нарисовать его для вас!

1
ответ дан 5 December 2019 в 20:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: