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

Вниз

заполнение ПрогрессБара за заданный промежуток времени   Найти похожие ветки 

 
CaLL|ok   (2007-01-11 23:18) [0]

Здравствуйте. Подскажите как можно сделать постепенное заполнение  ПрогрессБара за заданный промежуток времени(5 сек).Т.е таблеточки в Прогрессбаре должны постепенно появлятся и под конец полностью заполнить его. Спасибо.


 
try ©   (2007-01-11 23:42) [1]

Делай цикл на 5 секунд. В нём и заполняй...


 
CaLL|ok   (2007-01-11 23:51) [2]

Я пробовал так

procedure TForm1.Button1Click(Sender: TObject);
var
 i: integer;
begin
 randomize;
 for i:=0 to 10000 do
 begin
   ProgressBar1.Position:=Random(100);
   Application.ProcessMessages;  
 end;
end;


Но ведь это неправильно.В прогрессбаре появляется всякая белибирда


 
RASkov   (2007-01-12 00:02) [3]

Попробуй так...
procedure TForm1.Button1Click(Sender: TObject);
var
i: integer;
begin
ProgressBar1.Max:=40;
for i:=1 to 40 do
begin
  ProgressBar1.Position:=ProgressBar1.Position+1;
  Sleep(100);
  Application.ProcessMessages;
end;
end;


 
Johnmen ©   (2007-01-12 00:03) [4]


> В прогрессбаре появляется всякая белибирда


Не всякая, а случайная. Ты её и заказывал ProgressBar1.Position:=Random(100);


 
Johnmen ©   (2007-01-12 00:23) [5]

Со временем интересней.

begin;
ProgressBar1.Max:=50;
ProgressBar1.Position:=0;
StartDT:=Now;
TempDT:=Now;
while Now<=StartDT+5/24/60/60 do begin;
 if Now>TempDT+(5/24/60/60)/ProgressBar1.Max then begin;
   ProgressBar1.Position:=ProgressBar1.Position+1;
   TempDT:=Now;
   end;
 Application.ProcessMessages;
 end;


 
RASkov   (2007-01-12 01:46) [6]

> Со временем интересней.

Точно, Вот еще извращенный вариант.....

var Tm, Tmp: TTimeStamp; TmMes: TTime;
const N = 5000;
begin
   TmMes:=Time;  
   Tm:=DateTimeToTimeStamp(Time);
   Tmp:=Tm;
   ProgressBar1.Min:=Tmp.Time;
   ProgressBar1.Position:=Tmp.Time;
   ProgressBar1.Max:=Tmp.Time+N;
   while Tmp.Time<Tm.Time+N do begin
     ProgressBar1.Position:=Tmp.Time;
     Application.ProcessMessages;
     Tmp:=DateTimeToTimeStamp(Time);
   end;
   ShowMessage(TimeToStr(Time-TmMes));
end;


 
Германн ©   (2007-01-12 01:56) [7]


> Johnmen ©


> RASkov

Извращенцы :)
Телепатор мне подсказывает, что автор хочет пойти по пути IE и показывать хоть и случайное, но всё-таки последовательное заполнение прогрессбара :)


 
RASkov   (2007-01-12 02:04) [8]

> [7] Германн ©   (12.01.07 01:56)


> пойти по пути IE

Ну да... и по заполнении полностью, и время не вышло, начать приблизительно с середины :)

> последовательное заполнение прогрессбара


> [2] CaLL|ok   (11.01.07 23:51)
> ProgressBar1.Position:=Random(100);

Ну здесь можно типа ченить так тогда уж
ProgressBar1.Position:=ProgressBar1.Position+Random(10);

Да... спать пора.


 
Германн ©   (2007-01-12 02:10) [9]


>
> > пойти по пути IE
>
> Ну да... и по заполнении полностью, и время не вышло, начать
> приблизительно с середины :)

Переведу на русский - изобразить "как-бы процесс работы", либо при полном отсутствии таковой, либо при полной "непонятке", что, где,когда и как деется :)


 
RASkov   (2007-01-12 02:15) [10]

> Переведу на русский - изобразить "как-бы процесс работы",
> либо при полном отсутствии таковой, либо при полной "непонятке",
> что, где,когда и как деется :)

Здесь нужен компонент, что бы был похож на циферблат часов и стрелка бы по кругу бегала, вместо ПрогрессБара :))


 
Джо ©   (2007-01-12 06:40) [11]

Если я правильно понял, то мы подойдем по-серьезному к этому вопросу:


type
 TIntervals = array of Integer;

procedure AddInterval (var Intervals: TIntervals; Max: Integer);
 function Summ: Integer;
 var
   I: Integer;
 begin
   Result := 0;
   for I := Low(Intervals) to High(Intervals) do
     Result := Result + Intervals[I]
 end;

 function SummPred: Integer;
 var
   I: Integer;
 begin
   Result := 0;
   for I := Low(Intervals) to High(Intervals)-1 do
     Result := Result + Intervals[I]
 end;

var
 Sm: Integer;
begin
 Sm := Summ;
 if Sm = Max then
   Exit;

 if Sm > Max then
 begin
   Intervals[High(Intervals)] := (Max - SummPred);
   Exit;
 end;

 SetLength(Intervals,Length(Intervals)+1);
 Intervals[High(Intervals)] :=  Random (Max div 5);

 AddInterval(Intervals, Max);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
 I: Integer;
 Intervals: TIntervals;
begin
 Randomize;
 ProgressBar1.Max := 5000;
 ProgressBar1.Position := 0;
 AddInterval(Intervals,5000);
 for I := Low(Intervals) to High(Intervals) do
 begin
   Memo1.Lines.Add(IntToStr(Intervals[I]));
   ProgressBar1.Position := ProgressBar1.Position + Intervals[I];
   Sleep (Intervals[I]);
 end;
end;


 
Джо ©   (2007-01-12 06:44) [12]

Или же заменим цикл на такой, так более гладко :)

 for I := Low(Intervals) to High(Intervals) do
 begin
   ProgressBar1.StepBy(5000 div Length(Intervals));
   Sleep (Intervals[I]);
 end;


 
CaLL|ok   (2007-01-12 09:19) [13]

Огромное всем спасибо.



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

Форум: "Начинающим";
Текущий архив: 2007.01.28;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.039 c
2-1167928170
Vovan #2
2007-01-04 19:29
2007.01.28
Чем отличаются GlobalAlloc от VirtualAlloc? И про PChar.


2-1168212195
koha
2007-01-08 02:23
2007.01.28
Модуль Compress.pas - распаковка ресурсов в файл


15-1167800015
Pas
2007-01-03 07:53
2007.01.28
Как перевести на Паскаль ?


15-1168298335
Робот Вертер
2007-01-09 02:18
2007.01.28
Программистов в 2020 году заменят роботы


15-1168256520
Empleado
2007-01-08 14:42
2007.01.28
Что можно показать иностранцам?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский