Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

ProgressBar1 [D7, XP]


Страницы:   1 2

Chort ©   (2006-08-22 22:07:00) 

Вопрос таков.
Нужно чтоб по таймеру, кот. выставлен на 5 секунд происходило заполнение прогресс бара. или может без таймера. Короче говоря как сделать чтоб за пять секунд заполнился компонент ProgressBar1 таблетками?Спасибо.


хм...   (2006-08-23 07:19:00) [21]

о каких ресурсах может идти речь???
вы что тут все на 386 сидите???
если так то меняйте железо, а то прямо мазохисты какие-то...


Пусик   (2006-08-23 02:56:00) [22]


> Ketmar ©   (23.08.06 01:51) [10]
> > [9] Vovan#1   (23.08.06 01:39)зачем такой огород -- совершенно
> неясно. multimedia timers ещё никто не отменял.


И зачем ресурсоемкие мультимедийные таймеры использовать для интервалов в 50 миллисекунд?


Ketmar   (2006-08-23 01:51:00) [23]

> [9] Vovan#1   (23.08.06 01:39)
зачем такой огород -- совершенно неясно. multimedia timers ещё никто не отменял.


Vovan#1   (2006-08-23 01:39:00) [24]

Ketmar'у посвящается:


unit unitTest;

interface

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

type
 TformTest = class(TForm)
   ProgressBar: TProgressBar;
   Button: TButton;
   procedure ButtonClick(Sender: TObject);
 private
 public
   { Public declarations }
 end;

type
 TTimerThread = class (TThread)
  FPB: TProgressBar;
  FTickCount: Cardinal;
  FTickCount2: Cardinal;
  FUpdateTime: Cardinal;
  FFullTime: Cardinal;
  FMin: Integer;
  FMax: Integer;
  FDelta: Cardinal;
  FFinished: Boolean;
  procedure VisualWork;
 protected
  procedure Execute; override;
 public
  constructor Create(UpdateTime, FullTime: Cardinal; PB: TProgressBar);
 end;

var
 formTest: TformTest;

implementation

{$R *.dfm}

procedure TTimerThread.VisualWork;
begin
 If FFinished then
  begin
   FPB.Position := FMax;
  end
 else
  begin
   FPB.StepBy(FDelta);
  end;
end;

constructor TTimerThread.Create(UpdateTime, FullTime: Cardinal; PB: TProgressBar);
begin
 FPB := PB;
 FTickCount := GetTickCount;
 FTickCount2 := FTickCount;
 FUpdateTime := UpdateTime;
 FFullTime := FullTime;
 FMin := FPB.Min;
 FMax := FPB.Max;
 FDelta := Round(Abs(FMax - FMin) / FFullTime * FUpdateTime);
 FFinished := False;
 FreeOnTerminate := True;
 inherited Create(False);
end;

procedure TTimerThread.Execute;
var t: Cardinal;
begin
 while ((GetTickCount-FTickCount) < FFullTime) do
  begin
    t := GetTickCount;
    If t-FTickCount2 > FUpdateTime then
     begin
      FTickCount2 := t;
      Synchronize(VisualWork);
     end;
  end;
 FFinished := True;
 Synchronize(VisualWork);
end;

procedure TformTest.ButtonClick(Sender: TObject);
var T: TTimerThread;
begin
 Button.Enabled := False;
 TTimerThread.Create(100, 5000, ProgressBar);
end;

end.


Германн   (2006-08-23 01:20:00) [25]


> Chort ©   (22.08.06 22:07)
>
> Вопрос таков.
> Нужно чтоб по таймеру, кот. выставлен на 5 секунд происходило
> заполнение прогресс бара. или может без таймера. Короче
> говоря как сделать чтоб за пять секунд заполнился компонент
> ProgressBar1 таблетками?Спасибо.
>

Не надо было его ставить на 5 секунд. Поставь его на 5000/((Max-Min)/Step).
Это приближенный вариант реализации сабжа. Лучший ответ можно дать после более осмысленной постановки задачи.

P.S. K Ketmar. Кирпичи не кидать! Я Знаю, что Земля не круглая! Она имеет форму "геоида". :-)


Ketmar   (2006-08-23 00:45:00) [26]

> [6] ArtemESC ©   (23.08.06 00:42)
авотфиг. доставка события WM_TIMER в точное время (более того, даже просто доставка) виндой не гарантируется.


ArtemESC   (2006-08-23 00:42:00) [27]

Timer.interval := 1000;
В OnTimer'e
PB.Position :=  PB.Position + 1;


GeLLeR   (2006-08-23 00:11:00) [28]

Послушай пузырьки! Fanta подскажет :)))))) (c) Bamboocha


Chort   (2006-08-22 22:27:00) [29]

Да ну тебя . Или не понимаешь что за таблетки?:Синие прямоугольники :o<


Ketmar   (2006-08-22 22:23:00) [30]

нет, не так. скажите мне, как заполнить progress bar колёсами! а то от простых таблеток уже не так прёт...


Chort   (2006-08-22 22:21:00) [31]

Да при чем тут...
Про Position я понимаю, но как сделать чтоб это плавно заполнялось, и в течении 5 секунд.


Ketmar   (2006-08-22 22:09:00) [32]

а-а-а! мой бедный моск! господа, плиз, срочно поясните и мне, как заполнить progress bar таблетками!


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо