Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2006.09.03;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.039 c
2-1155462065
Creater
2006-08-13 13:41
2006.09.03
Странный глюк


15-1154623948
Petr V. Abramov
2006-08-03 20:52
2006.09.03
Система "Аллегро"


15-1155286578
Furyz
2006-08-11 12:56
2006.09.03
PHP MP3 DB FREE ENGINE FOR MYSQL


15-1155203846
ArtemESC
2006-08-10 13:57
2006.09.03
Все время хочу спросить и забываю...


2-1155641597
Zilog
2006-08-15 15:33
2006.09.03
Как в ListBox программно поменять цвет выделенной строчки?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский