Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.09.10;
Скачать: CL | DM;

Вниз

ProgressBar1   Найти похожие ветки 

 
Chort ©   (2006-08-22 22:07) [0]

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


 
Ketmar ©   (2006-08-22 22:09) [1]

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


 
Chort ©   (2006-08-22 22:21) [2]

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


 
Ketmar ©   (2006-08-22 22:23) [3]

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


 
Chort ©   (2006-08-22 22:27) [4]

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


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

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


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

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


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

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


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


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

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

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


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

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.


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

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


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


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


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


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

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


 
Chort ©   (2006-08-23 09:50) [13]

Уточняю(или дополняю) вопрос.
По закрытию главной формы у меня идет сохранение конфигурации в .ini файл . Это занимает около 5 секунд. Вот чтоб не было так скучно я и решил сделать заставку на закрытие. В главной форме написал
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
CloseForm.showModal;
end;

На формочку CloseForm кинул таймер , поставил 5000
procedure TCloseform.Timer1Timer(Sender: TObject);
begin
close
end;

И бросил на эту форму ProgressBar.
Теперь по закрытию главной формы показывается CloseForm на пять секунд и закрывается(вместе с главной). Так вот как добавить к этому и ProgressBar.


 
PSPF2003 ©   (2006-08-23 09:57) [14]


> По закрытию главной формы у меня идет сохранение конфигурации
> в .ini файл

Ни фига себе конфиг!


 
Наиль ©   (2006-08-23 10:08) [15]


> procedure TCloseform.Timer1Timer(Sender: TObject);
> begin
> close
> end;

procedure TCloseform.Timer1Timer(Sender: TObject);
begin
// Заполнение до 100% за 5 сек :o)
progressbar.position:=100;
close
end;
А если серьёзно, то ставь интервал на 50мс, прибавляй по 1%, при достижении 100% закрывай форму. Всё.


 
Chort ©   (2006-08-23 10:54) [16]

to PSPF2003
Да, занимает сохранение много, так как конфигурации не мало + сохранение базы данных.


 
Ketmar ©   (2006-08-23 11:20) [17]

> [11] Пусик ©   (23.08.06 02:56)
уважаемая, mm-timer -- это не что иное, как отдельный поток с кодом, похожим на [9]. не вижу разницы, кто будет создавать поток -- непосредственно программа, или виндовая DLL. только в последнем случае писать меньше.


 
alex_*** ©   (2006-08-23 14:26) [18]

отражай в прогрессе реальный ход сохранения данных - прикинь сколько операций сохранения и пиши "сохраняется ххх", после чего наращивай progress


 
Пусик ©   (2006-08-23 14:48) [19]


> Ketmar ©   (23.08.06 11:20) [17]


Да вот хотя бы обсуждение почитай, чтобы из пустого в порожнее не переливать.
http://www.megalib.com/books/461/data/discission434.htm

PS.
Анекдотов мне не надо. Здесь не курилка.


 
Anatoly Podgoretsky ©   (2006-08-23 14:50) [20]

Ketmar ©   (23.08.06 11:20) [17]
Это вообще то аппаратный таймер.


 
Ketmar ©   (2006-08-23 16:14) [21]

> [19] Пусик ©   (23.08.06 14:48)
почитал. "The multimedia timer runs in its own thread". отсюда и мои выводы. из win32.hlp. а то, что они меряют интервалы, предположим (предположим!) через QueryPerformanceCounter(), а не через GetTickCount() -- сути не меняет.

зыж тон не сбавите, уважаемая? я понимаю, вам всё вокруг не нравится, но выдержку всё же полезно тренировать.

> [20] Anatoly Podgoretsky ©   (23.08.06 14:50)
то есть, он вызывается прерыванием от часиков или подобным? возможно, но я такой информации не встречал. впрочем, спорить не стану -- именно поэтому. %-)


 
Anatoly Podgoretsky ©   (2006-08-23 16:21) [22]

Да есть такая штука в компьютере, как CMOS память, частью ее является MM Timer, есть поддержка в БИОС и в ОС, минимальный интервал чуть менее 1 мс. На уровне АПИ поддержаны callback фунции, поэтому точность очень высокая, в отлии от обычного трехканального таймера, цикл которого 55 ms или 10 мс в НТ, низкоприоритетный таймер.


 
Ketmar ©   (2006-08-23 16:36) [23]

> [22] Anatoly Podgoretsky ©   (23.08.06 16:21)
э-э-э... а разве CMOS умеет стрелять прерываниями в таком стиле? можно ссылочку, или хотя бы ключевые слова для поиска, чтобы не продираться через кучу страниц, содержащих буквы CMOS?
просто интересно, я о таких фактах не знаю. досадный пробел.


 
Anatoly Podgoretsky ©   (2006-08-23 16:47) [24]

Смотри описание БИОС и устройство IBM PC компьютеров.
Пробел конечно досадный, связан с терминологией MultiMedia - ну хотелось им использовать громкое слово, и вот так всех запутали, когда это обычный таймер от часов. 2^15 от частоты 32768 кгц (кварц) получается одна секунда, а один из промежуточных выходов (2^5) идет на прерывание (номер не помню).


 
Chort ©   (2006-08-23 16:50) [25]

Я извиняюсь, что прерываю вашу дискуссию, но можно пример?


 
Ketmar ©   (2006-08-23 16:57) [26]

> [24] Anatoly Podgoretsky ©   (23.08.06 16:47)
понял. tnx.


 
Anatoly Podgoretsky ©   (2006-08-23 16:57) [27]

Тебе достаточно написали, чтобы все написать, задумайся хотя бы насчет 50 мс


 
Ketmar ©   (2006-08-23 16:57) [28]

вдогон: извиняюсь перед Пусик ©. был неправ.


 
Германн ©   (2006-08-23 16:58) [29]


> Anatoly Podgoretsky ©   (23.08.06 16:47) [24]
>
> Смотри описание БИОС и устройство IBM PC компьютеров.
> Пробел конечно досадный, связан с терминологией MultiMedia
> - ну хотелось им использовать громкое слово, и вот так всех
> запутали, когда это обычный таймер от часов. 2^15 от частоты
> 32768 кгц (кварц) получается одна секунда, а один из промежуточных
> выходов (2^5) идет на прерывание (номер не помню).
>

Чего-то я такого по IBM PC не помню. Помню только, что можно было использовать RTC как будильник. Он тогда вызывал прерывание 4Ah.


 
Пусик ©   (2006-08-23 16:59) [30]


> Ketmar ©   (23.08.06 16:14) [21]
> > [19] Пусик ©   (23.08.06 14:48)почитал. "The multimedia
> timer runs in its own thread". отсюда и мои выводы. из win32.
> hlp. а то, что они меряют интервалы, предположим (предположим!
> ) через QueryPerformanceCounter(), а не через GetTickCount()
> -- сути не меняет.зыж тон не сбавите, уважаемая? я понимаю,
>  вам всё вокруг не нравится, но выдержку всё же полезно
> тренировать.


Прошу прощения, но побеспокойся о своей выдержке прежде.

PS.
Анекдотов не предлагать. Здесь не курилка.

PPS.
КРоме всего прочего, MMT как раз из-за ресурсоемкости в системе тоже может быть весьма ограниченное количество.


 
Anatoly Podgoretsky ©   (2006-08-23 17:00) [31]

Ну я написал, что уже не помню - давно это было, RTC это как раз он и есть.


 
Ketmar ©   (2006-08-23 17:00) [32]

> [29] Германн ©   (23.08.06 16:58)
так я тоже не помню. но пока извиняюсь. %-) если найду опровержение -- буду  сражаться более предметно. %-)



Страницы: 1 вся ветка

Текущий архив: 2006.09.10;
Скачать: CL | DM;

Наверх




Память: 0.55 MB
Время: 0.043 c
2-1156062211
4izh
2006-08-20 12:23
2006.09.10
передача данных в чужое адрессное пространство


2-1156319784
zorik
2006-08-23 11:56
2006.09.10
Подсветка синтаксиса в RichEdit


15-1154246296
Ega23
2006-07-30 11:58
2006.09.10
С Днём рождения! 30 июля


15-1155503563
Джо
2006-08-14 01:12
2006.09.10
Поздравляю россиян с победой Маскаева


15-1155873787
kolyann..
2006-08-18 08:03
2006.09.10
?!