Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Звук, графика и видео > ProgressBar


Автор: windy 19.2.2005, 20:59
проблема в следующем: когда запускается эта форма, то прогресБар уже полностью заполнен и дальше ни одна форма не запускается, а если запускается, то вот эта не закрывается. что с этим делать?



object Form4: TForm4
Left = 195
Top = 182
BorderStyle = bsNone
Caption = 'logo'
ClientHeight = 360
ClientWidth = 786
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
FormStyle = fsStayOnTop
OldCreateOrder = False
Position = poScreenCenter
PrintScale = poNone
ScreenSnap = True
Visible = True
OnCreate = FormCreate
PixelsPerInch = 96
TextHeight = 13
object Image1: TImage
Left = 0
Top = 0
Width = 786
Height = 343
AutoSize = True
Picture.Data = {картинка }
end
object StatusBar1: TStatusBar
Left = 0
Top = 341
Width = 786
Height = 19
Panels = <
item
Width = 200
end
item
Width = 20
end
item
Width = 20
end
item
Alignment = taCenter
Style = psOwnerDraw
Width = 50
end>
end
object ProgressBar1: TProgressBar
Left = 0
Top = 344
Width = 201
Height = 17
Min = 10
Position = 10
TabOrder = 1
end
object Timer1: TTimer
Interval = 5000
OnTimer = Timer1Timer
Left = 88
Top = 56
end
end

Автор: Stalker Ghost 19.2.2005, 23:59
А как ты реализируешь отображение Splash Screen'а (заставка в смысле)?¿

P.S: в DRKB была статья про Splash Screen'ы, посмотри

Автор: The MASTER 20.2.2005, 00:01
Выложи код выполнения действий твоего прогресс бара!

Автор: windy 23.2.2005, 18:17
Код

unit logoform;

interface

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

type
  TForm4 = class(TForm)
    Image1: TImage;
    StatusBar1: TStatusBar;
    ProgressBar1: TProgressBar;
    Timer1: TTimer;
    procedure FormCreate(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form4: TForm4;

implementation

uses raketa3;

{$R *.dfm}

procedure TForm4.FormCreate(Sender: TObject);
begin
with ProgressBar1 do
  begin
    Parent := StatusBar1;
    Position := 100;
    Top := 2;
    Left := 0;
    Height := StatusBar1.Height - Top;
    Width := StatusBar1.Panels[0].Width - Left;
  end;
if ProgressBar1.Max=100 then Form3.Show;
end;
procedure TForm4.Timer1Timer(Sender: TObject);
begin
Timer1.Enabled := false;
end;

end.








из сборника статей dw6 с сайта www.delphiworld.ru



Перед появлением главного окна во всех серьёзных приложениях сначала появляется заставка. Теперь и у Вас есть возможность повыёживаться! Для создания заставки выполняем следующую последовательность действий:

Начинаем создание нового приложение командой “New Application” (“Новое приложение”) из меню “File” (“Файл”)

Добавьте ещё одну форму: “New Form”(“Новая форма”) из меню “File” (“Файл”). Это окно и будет заставкой. У него нужно убрать рамку с полосой заголовка, установив свойство “BorderStyle” в “bsNone”. Теперь можно смело разработать дизайн окна заставки.

Из меню “Project” (“Проект”) выбрать команду “Options”(“Опции”). Зайти на закладку “Forms”(“Формы”) и Form2 из списка автоматически создаваемых форм (Auto-Create forms) перенести в список доступных форм (Available forms)

На форму-заставку с закладки System вынести компонент Timer. В его свойстве Interval установить значение 5000, а в событии OnTimer написать:



Timer1.Enabled := false;




Это сделано для того, чтобы заставка была видна в период указанного времени – 5000 миллисекунд, т.е. 5 секунд.

Перейти в файл проекта, нажав Ctrl+F12 и выбрав Project1. Исходный код должен выглядеть так:



Код

program Project1;

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

{$R *.RES}

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





Теперь мы внесём сюда немного изменений и код должен стать таким:



Код

program Project1;

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

{$R *.RES}

begin
  Application.Initialize;
  Form2 := TForm2.Create(Application);
  Form2.Show;
  Form2.Update;
  while Form2.Timer1.Enabled do
    Application.ProcessMessages;
  Application.CreateForm(TForm1, Form1);
  Form2.Hide;
  Form2.Free;
  Application.Run;
end.

Автор: Stalker Ghost 24.2.2005, 18:08
Прости критику но криво однако. Надо бы так:
Код


procedure TForm4.FormCreate(Sender: TObject);
begin
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;

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


Код проекта:
Код

program Project1;

//здеся файли где формы
uses
Forms,
Unit1 in 'Unit1.pas' {Form3!!!!!!},
Unit2 in 'Unit2.pas' {Form4!!!!!};

{$R *.RES}

begin
Application.Initialize;
Form4 := TForm4.Create(Application);
Form4.Show;
Form4.Update;
while Form4.Timer1.Enabled do
Application.ProcessMessages;
Application.CreateForm(TForm3, Form3);
Form4.Hide;
Form4.Free;
Application.Run;
end.




Пробуй, если что обращайся smile

Автор: DrBugy 15.12.2005, 17:13
А кто нибудь знает как сделать это без форм?

Автор: Snowy 15.12.2005, 17:33
Цитата(DrBugy @ 15.12.2005, 17:13)
А кто нибудь знает как сделать это без форм?

ProgressBar без форм?
А смысл?
Что ты хочешь получить в результате?

Автор: VVSF 16.12.2005, 00:56
DrBugy, попытайся простосделатьпрогрессбар невидимым, после того, как он отработал свою ф-ю.Т.е. помести его на нужную форму, а потом скрой его. Тебе просто надо сделать вид "загрузки"??? Если да - то могу подсобить...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)