Главная страница
    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.056 c
15-1168183981
kaZaNoVa
2007-01-07 18:33
2007.01.28
Философия познания или возможности непознанного


2-1168192483
Khabibulin
2007-01-07 20:54
2007.01.28
Засветить некоторые ячейки StringGrid а


3-1162996659
Megabyte
2006-11-08 17:37
2007.01.28
Помогите составить запрос или подскажите что другое


1-1165306590
Lovd_E
2006-12-05 11:16
2007.01.28
Текст в Stringgride


2-1168349527
Литейщик
2007-01-09 16:32
2007.01.28
Открытие файла (Excel,Access,txt и т.п.) из проекта Delphi





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