Форум: "Основная";
Текущий архив: 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