Консультация № 172525
23.09.2009, 13:33
0.00 руб.
0 6 1
Здравствуте уважаемые эксперты!
Возникла проблема с заставкой на делфи.прошу вашей помощи.
Сделал две пустые формы: одна главная а вторая заставка которая появляется перед ней и держится 5 секунд
Не получяется сделать отображение на заставке процесса загрузки в компоненте progressbar(по таймеру )
вот ссылка на проект (167 кбайт) http://slil.ru/28008512
в строке Length:=100; выдает ошибку и без нее так же не компилируется(

Приложение:
//основная форма
unit Unit1;

interface

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

type
TForm1 = class(TForm)
procedure SHOWMODAL(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation
uses unit2;

{$R *.dfm}

procedure TForm1.SHOWMODAL(Sender: TObject);
begin
LOGO.SHOWMODAL;
end;

end.
////////////////////////////////////////////
//та самая заставка
unit Unit2;

interface

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

type
TLOGO = class(TForm)
Timer1: TTimer;
StatusBar1: TStatusBar;
ProgressBar1: TProgressBar;
procedure Timer1Timer(Sender: TObject);

procedure Formcreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
LOGO: TLOGO;

implementation

{$R *.dfm}

procedure TLOGO.Timer1Timer(Sender: TObject);
begin
ProgressBar1.Position:=ProgressBar1.Position+20;//таймер на 5000 и включен
If ProgressBar1.Position=100 then Timer1.Enabled := false;
close;
end;



procedure TLOGO.Formcreate(Sender: TObject);
begin
LOGO.Height:= Round(Screen.Height / 3); {высота формы}
LOGO.Width:= Round(LOGO.Height * 1.618); {ширина формы}
with ProgressBar1 do
begin
Parent := StatusBar1;
Position := 0;
//Length:=100;
Top := 2;
Left := 0;
Height := StatusBar1.Height - Top;
Width := StatusBar1.Panels[0].Width - Left;
end;
end;
end.
//////////////////////////
файл проекта
program Project1;

uses
Forms,
Unit1 in 'Unit1.pas' {Form1},
Unit2 in 'Unit2.pas' {Form2};

{$R *.res}

begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TLOGO, LOGO);
Application.Run;
end.

Обсуждение

Неизвестный
23.09.2009, 14:21
общий
Непонятно что за строка
Length:=100;
Length(s); {это определение длины строки s}
Неизвестный
23.09.2009, 14:28
общий
Я взял этот код здесь http://forum.vingrad.ru/topic-43028.html
но что то не работает
Неизвестный
23.09.2009, 14:29
общий
это ответ
Здравствуйте, Иванов Руслан Иванович.
Попробуйте так.
Исправленный код для двух процедур в приложении.
Удачи.

Приложение:
procedure TLOGO.Timer1Timer(Sender: TObject);
begin
ProgressBar1.Position:=ProgressBar1.Position+20;
If ProgressBar1.Position=100 then
begin
Timer1.Enabled := false;
close;
end;
end;



procedure TLOGO.Formcreate(Sender: TObject);
begin
LOGO.Height:= Round(Screen.Height / 3); {âûñîòà ôîðìû}
LOGO.Width:= Round(LOGO.Height * 1.618); {øèðèíà ôîðìû}
with ProgressBar1 do
begin
Parent := StatusBar1;
Position := 0;
Top := 2;
Left := 0;
Height := StatusBar1.Height - Top;
Width := StatusBar1.Width - Left;
end;
5
Неизвестный
23.09.2009, 14:36
общий
Если имеете ввиду последний код, то похоже это какая-то опечатка.
Проверьте мои исправления.
Неизвестный
23.09.2009, 14:38
общий
Шичко Игорь
Отлично!!! Спасибо за помощь заработало :)
P.S. я имел ввиду ошибку в коде на web странице, ссылку которой я привел
Неизвестный
23.09.2009, 14:45
общий
Удачи
Форма ответа