![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
ProgressBar1 [D7, XP]
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 таблетками!