Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.01.2008, 14:06   #1
Stanislav
Квадрокоптерист
Участник клуба Подтвердите свой е-майл
 
Регистрация: 29.09.2007
Сообщений: 1,824
По умолчанию Обратный отсчет в прогрессбар

Здравствуйте..
Мучает такой вопрос....
Вот листинг обратного отсчета

Код:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    Timer1: TTimer;
    Label1: TLabel;
    Label2: TLabel;
    Edit1: TEdit;
 
    procedure Button1Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

const
XorStrings: array [0..7] of byte =
($64,$25,$61,$7B,$61,$64,$73,$25);

implementation

function XorLite (a,b:word):string;
var i:integer; str:string;
begin
for i:=a to b+a-1 do
str:=str+Chr(XorStrings[i] xor $EC7AB041);
result:=str;
end;

{$R *.dfm}

var Min3: integer;
 time:integer;
procedure TForm1.Button1Click(Sender: TObject);
begin

   time:=StrToInt(Edit1.Text);
   timer1.enabled:=true;
   Min3:=time*60;



  end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
 Label1.Caption:=Format(XorLite(0,8),[Min3 div 60, Min3 mod 60 ]);
  Dec(Min3);
  if Min3 < 0 then
     form1.Close;

    end;
Вопрос в том как туда прогрессбар прикрутить чтоб в нем отображалось сколько времени использованно?
Я часть той силы, что вечно хочет зла, но вечно совершает благо..
Stanislav вне форума Ответить с цитированием
Старый 09.01.2008, 14:48   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну прикрути прогрессбар с параметрами
Min=0
Max=min3

а в таймере позиция равна Min3

Это даст обратный отчет на прогрессе, а если нужно чтоб прогресс заполнялся по мере прохождения времени то

min:=-min3
max:=0;

и позиция в таймере должна быть равна Progress.min+min3
I'm learning to live...

Последний раз редактировалось Stilet; 09.01.2008 в 14:52.
Stilet вне форума Ответить с цитированием
Старый 09.01.2008, 14:51   #3
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Дык вроде просто все...
Код:
procedure TForm1.Button1Click(Sender: TObject);   
begin   
   time:=StrToInt(Edit1.Text);   
   timer1.enabled:=true;   
   Min3:=time*60;   
//Добавляем начальные установки для ProgressBar1
   ProgressBar1.MaxValue:=Min3;
   ProgressBar1.Position:=Min3; 
   Application.ProcessMessages;
end;   
  
procedure TForm1.Timer1Timer(Sender: TObject);   
begin   
 Label1.Caption:=Format(XorLite(0,8),[Min3 div 60, Min3 mod 60 ]);   
  Dec(Min3); 
  if Min3 < 0 then   
     form1.Close;   
//Отрисовываем новое положение ProgressBar1 
ProgressBar1.Position:=Min3;
Application.ProcessMessages;  
end;
mihali4 вне форума Ответить с цитированием
Старый 09.01.2008, 16:49   #4
Stanislav
Квадрокоптерист
Участник клуба Подтвердите свой е-майл
 
Регистрация: 29.09.2007
Сообщений: 1,824
По умолчанию

Спасибо, действительно просто...
Я часть той силы, что вечно хочет зла, но вечно совершает благо..
Stanislav вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сделать отсчет времени? Aboltus Общие вопросы Delphi 11 24.05.2011 20:45
Прогрессбар... Лёка Общие вопросы Delphi 12 18.03.2010 14:41
Отсчет времени в С Raptor Помощь студентам 13 29.12.2007 16:32
Как сделать отсчет дней от заданной даты в Excel? ru16 Microsoft Office Excel 1 22.11.2007 11:13