Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.09.10;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.54 MB
Время: 0.037 c
9-1134643594
Рикитикитави
2005-12-15 13:46
2006.09.10
Насчет спрайтов в DelphiX


15-1155632454
Карелин Артем
2006-08-15 13:00
2006.09.10
Еще вопрос по Екселю. Как получить список именованных ячеек?


1-1153814246
gear
2006-07-25 11:57
2006.09.10
Динамическое создание TFrame и доступ к определёному объекту...


15-1155628249
Сувалки
2006-08-15 11:50
2006.09.10
Проблемы с Delphi!!!


6-1145945534
tigra
2006-04-25 10:12
2006.09.10
Добавить файл к письму





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский