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


Автор: Олег_Игоревич 13.2.2006, 16:03
Здравствуйте!
Подскажите пожалуйста как можно отобразить ход течения времени на progressbar'e.
Например задаю время =10 секундам , после чего форма закрывается.
И эти 10 секунд отображаются на progressbar'e.
Заранее спасибо!

Автор: _hunter 13.2.2006, 16:18
вешаеш на форму таймер. задаеш ему интервал 1000. в обработчике тика увеличиваеш какую-нить переменную на 1. и когда эта переменная == 10 -- выходиш

Автор: z-END 13.2.2006, 16:18
в JEDI для этого есть специальный компонент jvWaitingProgress - ему просто задаешь время и всеsmile

Автор: SomlicH 13.2.2006, 17:23
Я в Gauges - отображал, но делал так: если таймер выставить на секунду, то увеличение полоски будет слишком резко и некрассиво.

Делаем так - пусть искомое время 10с, добавлять в Gauges будем по единице с помощью метода
Gauge1.AddProgress(1); а значение таймера высчитаем по формуле 10000 (т.е. 10с) /100, получается интервал срабатывания таймера равен 100.

Включаем программу, высчитываем интервал, активизируем таймер и полоска плавно ползет до 10с.

Крассиво и эффектно. Причем секунды - ставь сколько хочь, формула работает.

Пусть не изящно, зато без специальных компонентов.

Кстати если Gauge1.Progress:=100; то останавливаем таймер и Form1.Close;

Автор: SoWa 13.2.2006, 19:52
Ставим progressbar`у max=100 и все то же что и с gauge.

Автор: Foley 13.2.2006, 23:14
настрой таймер
и на событии ОнТайм пишы:
прогрессбар.позитион:=прогрессбар.позитион+1(или скока те надо, в зависимости от времени);
несложно в принцыпе...

Автор: Олег_Игоревич 14.2.2006, 12:55
Можно пример!

Автор: Демо 14.2.2006, 13:08
Код

procedure TForm1.Button1Click(Sender: TObject);
begin
  ProgressBar1.Position := 0;
  ProgressBar1.Max := 100;
  ProgressBar1.Min := 0;
  Timer1.Interval := 100;
  Timer1.Enabled := True;
end;

procedure TForm1.TimerTimer1(Sender: TObject)
begin
  ProgressBar1.Position := ProgressBar1.Position + 1;
  if ProgressBar1.Position=100 then
  begin
     Timer1.Enabled := False;
     Form1.Close;
  end;
end;

Автор: Олег_Игоревич 26.2.2006, 12:56
Скажите пожалуйста , а как можно реализовать процедуру, чтобы например форма закрылась через ,например, 3 месяца или 1 год.То есть при непрерывной работе приложения через 3 месяца или 1 год форма должна закрыться.
Заранее спасибо.

Автор: Guedda 26.2.2006, 13:24
Кидаешь таймер, и люое значение в интервал пишешь...
В коде таймера прописываешь:
Код

procedure TForm1.Timer1Timer(Sender : TObject);
var
  StartDate : TDateTime;
  dd,mm,yyyy : Word;
  dd2,mm2,yyyy2 : Word;
begin
  StartDate := StrToDate('26.02.2006');
  DecodeDate(StartDate, dd,mm,yyyy);
  DecodeDate(Now, dd2,mm2,yyyy2);
  if mm+3 = mm2 then Close; //если прошло 3 месяца, то закрываемся...
end;


Есть конечно, и побыстрее методы, но я их не помню smile

Автор: Олег_Игоревич 27.2.2006, 12:36
Guedda, спасибо.Тема исчерпана.

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