Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.09.03;
Скачать: 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 вся ветка

Текущий архив: 2006.09.03;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.056 c
15-1154599583
atruhin
2006-08-03 14:06
2006.09.03
Вопрос по настройке маршрутизации в сетях


2-1155298868
dera
2006-08-11 16:21
2006.09.03
Как узнать, что форма свернута (развернута)?


1-1153308395
Youta
2006-07-19 15:26
2006.09.03
Как расположить окно поверх другого, когда выполняется длинный пр


4-1146633463
Виииктариной
2006-05-03 09:17
2006.09.03
Отсылка нажатых кнопок в другую прогу


2-1155627240
ronyn
2006-08-15 11:34
2006.09.03
Alias