Вниз
Скачать: CL | DM;

Splash Screen с прогрессбаром   Найти похожие ветки 

← →
Alex Bakulin   (2006-07-24 19:40) [0]

На форму заставки помещаю прогрессбар и таймер. По таймеру двигаю позицию Position прогрессбара. А вот изменений никаких не наступает... При отладке даже не заходит в процедуру...

 Application.Initialize;
 frmSplash := TfrmSplash.Create(nil);
 frmSplash.Show;
 Application.ProcessMessages;
 Application.CreateForm(TfrmMain, frmMain);
 frmSplash.Free;
 Application.Run;


← →
Loginov Dmitry ©   (2006-07-24 20:03) [1]

А где код таймера?


← →
KilkennyCat ©   (2006-07-24 20:08) [2]

вероятно, надо сделать так:

procedure frmSplash.onShow(sender: TObject);
begin
 timer1.enabled := true;
end;

если не помогает,
то в событии таймера после смены позиции прогрессбара добавить application.proccessmessage


← →
Loginov Dmitry ©   (2006-07-24 21:35) [3]

достаточно будет Update


← →
Alex Bakulin   (2006-07-24 21:41) [4]

код таймера (он enabled):

ProgressBar.Position := ProgressBar.Position + 1;
if  ProgressBar.Position = ProgressBar.Max then ProgressBar.Position := 0;
ProgressBar.Repaint;
Application.ProcessMessages;

Да только он туда НЕ ЗАХОДИТ, таймер включен


← →
KilkennyCat ©   (2006-07-24 21:48) [5]

> [3] Loginov Dmitry ©   (24.07.06 21:35)

мерцать может некрасиво...


← →
KilkennyCat ©   (2006-07-24 21:59) [6]

И вообще, я бы главный дпр сделал бы так:

program SplashDemo;

uses
 Forms,
 Main in "Main.pas" {MainForm},
 Splash in "Splash.pas" {SplashForm};

{$R *.RES}

begin
 Application.Initialize;
 with TSplashForm.Execute do
   try
     Application.CreateForm(TMainForm, MainForm);
   finally
     Free;
   end;
 Application.Run;
end.


unit Splash;

interface

uses
 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls;

type
 TSplashForm = class(TForm)
   ProgressBar1: TProgressBar;
 private

 public
   class function Execute: TSplashForm;
 end;

implementation

{$R *.DFM}

class function TSplashForm.Execute: TSplashForm;
begin
 Result := TSplashForm.Create(nil);
 with Result do
 begin    
   Show;
   Update;
  ... Эффекты ...
 end;
end;
end.


← →
GrayFace ©   (2006-07-24 23:22) [7]

В frmMain.OnCreate понатыкай Application.ProcessMessage. А перед ними ставь позицию прогресса соразмерно с пройденной частью загрузки. Если основное время занимает само создание формы, а не то что делается в OnCreate, то выкинь сторонние компоненты. Или создай доп. поток, в котором либо вызывай Application.ProcessMessages (чуревато ошибками), либо устраивай цикл выборки сообщений только для splash окна (не так черевато). А если совсем чисто, то напиши splash screen на чистых апях.



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.027 c
15-1155239556
TGX
2006-08-10 23:52
2006.09.03
Проблемы с монитором!


15-1155403783
VirEx
2006-08-12 21:29
2006.09.03
Система управления сайтом BinN S.Builder 3.6


3-1151210776
antoxa2005
2006-06-25 08:46
2006.09.03
Можно ли как-нибудь обратиться к базе Access на дрегом компьютере


2-1155477729
AlexanderMS
2006-08-13 18:02
2006.09.03
Изменение стандартных диалогов.


15-1154698756
HeadHunter
2006-08-04 17:39
2006.09.03
Приглашаем на работу программистов (Qulix Systems, Minsk)




   Наверх