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

Вниз

Анимация "пожалуйста ждите"   Найти похожие ветки 

 
Гарри Поттер ©   (2006-10-21 11:21) [0]

Нужно обозначить ожидание выполнения процесса в программе какой-нибудь анимацией. Хотелось бы посимпотичнее. Курсор часиками не пойдет - форма небольшая. Может у кого-нибудь есть красивая гифка, иконка или набор кадров, поделитесь? Или ссылкой на ресурс, а то чето мне гугль не то выдает, может спрашиваю криво..


 
Ученик чародея ©   (2006-10-21 15:29) [1]

А чем прогресс бар и таймер с запасом времени со сбрасыванием в 0 при дохождении до конца прогресбара не подходит. Просто, стандартно, сердито...


 
TUser ©   (2006-10-21 16:45) [2]

{
 Печатает в консоль, даже если вывод перенаправлен,
 функциональность реализована только для Windows, Linux - сделоаю потом
}
unit uPrinter;

interface

// C - print in console, also when output was redirected
// A - print twice in console and (if redirection was used) to file
procedure WriteC (Value: string);
procedure WriteA (Value: string);
procedure WriteLnC (Value: string);
procedure WriteLnA (Value: string);

// write(ln) to a stdout if it was redirected
procedure WriteIfC (Value: string);
procedure WriteLnIfC (Value: string);

// true if standart output was redirected
var OutputWasRedirected: boolean;

implementation
{$ifdef WINDOWS}
uses Windows;
{$endif}

var Cons: textfile;

{$ifdef WINDOWS}
procedure SetRedirected;
var lpMode: dword;
begin
 OutputWasRedirected:=not GetConsoleMode(GetStdHandle(STD_OUTPUT_HANDLE),lpMode);
end;
{$else}
procedure SetRedirected;
begin
// do nothing; set OutputWasRedirected manually
 OutputWasRedirected:=false;
end;
{$endif}

{$ifdef WINDOWS}
function Handler (dw: dword): bool;
begin
 FlushFileBuffers (GetStdHandle(std_output_handle));

 if OutputWasRedirected then
   closefile (Cons);

 result:=false;
end;
{$endif}

procedure WriteC (Value: string);
begin
 if OutputWasRedirected then
   write (Cons, Value)
   else write (Value);
end;

procedure WriteA (Value: string);
begin
 write (Value);
 if OutputWasRedirected then
   write (Cons, Value);
end;

procedure WriteLnC (Value: string);
begin
 if OutputWasRedirected then
   writeln (Cons, Value)
   else writeln (Value);
end;

procedure WriteLnA (Value: string);
begin
 writeln (Value);
 if OutputWasRedirected then
   writeln (Cons, Value);
end;

procedure WriteIfC (Value: string);
begin
 if OutputWasRedirected then
   write (Value);
end;

procedure WriteLnIfC (Value: string);
begin
 if OutputWasRedirected then
   writeln (Value);
end;

initialization
 SetRedirected;
{$ifdef WINDOWS}
//  SetConsoleCtrlHandler (@Handler,true);
{$endif}
 if OutputWasRedirected then begin
   assignfile (Cons, "con");
   rewrite (Cons);
   end;
finalization
{$ifdef WINDOWS}
 if OutputWasRedirected then
   closefile (Cons);
{$endif}
{$warnings off}
end.

(*
program test;
{$apptype console}
uses uPrinter;

begin
 WriteC ("In ");
 WriteLnC ("console");

 WriteA ("In console ");
 WriteLnA ("and in file");

 Write ("In ");
 Writeln ("standart output");

 WriteIfC ("In file ");
 WriteLnIfC ("if redirected");
end.
*)

//  ===========================================

{
 Этот модуль управляет отображением информации о состоянии программы
}
unit uState;

interface

var StateCount: integer = 500;

procedure waNewState (Caption: string);
procedure waAddProgress;
procedure waDone;

implementation
uses SysUtils, DateUtils, uPrinter;

var InState: boolean = false;
   Progress: integer;
   StartTime: TDateTime;

procedure EraseProgress;
var i: integer;
begin
 for i:=1 to 4 do
   writec(#8);
end;

procedure WriteProgress;
var s: string;
begin
 s:="....";
 s[4-(Progress mod 4)]:=" ";
 writec(s);
end;

procedure waNewState (Caption: string);
begin
 if InState then
   waDone;
 InState:=true;
 writea (Caption+" ... ");
 Progress:=0;  
 StartTime:=now;
end;

var AddProgress_staticvar: integer = 0;
procedure waAddProgress;
begin  
 inc (AddProgress_staticvar);
 if AddProgress_staticvar < StateCount then Exit;
 AddProgress_staticvar:=0;

 if MilliSecondsBetween(StartTime,now) > 250 then begin
   inc (Progress);
   EraseProgress;
   WriteProgress;
   StartTime:=now;
   end;
end;

procedure waDone;
begin
 Progress:=0;
 EraseProgress;
 WriteProgress;
 writelna("done");
 InState:=false;
end;

end.


 
MeF Dei Corvi ©   (2006-10-21 16:54) [3]

А что за программа?


 
TUser ©   (2006-10-21 16:55) [4]

Юзинг

waNewState ("Wait, please, mamu vashu");
for  ... do begin
 ...
 waAddProgress;
 end;
waDone;


 
Гарри Поттер ©   (2006-10-21 17:26) [5]

> [2] TUser ©   (21.10.06 16:45)

Спасибо, конечно :) Но это не то.
> [1] Ученик чародея ©   (21.10.06 15:29)
> Просто, стандартно, сердито...

Потому и неохота, что "стандартно и сердито".
-
Лана, сам че-нибудь нарисую с фотошопе.. Хлопну коньяка сотку и нарисую.. :)


 
Ketmar ©   (2006-10-21 17:47) [6]

2TUser: а почему "con", а не "CONOUT$", как полагается? %-)


 
Leonid Troyanovsky ©   (2006-10-21 17:50) [7]


> Гарри Поттер ©   (21.10.06 17:26) [5]


%windir%\clock.avi

--
Regards, LVT.


 
Ученик чародея ©   (2006-10-21 19:01) [8]


> Leonid Troyanovsky ©   (21.10.06 17:50) [7]
>
>
> > Гарри Поттер ©   (21.10.06 17:26) [5]
>
>
> %windir%\clock.avi
>
> --
> Regards, LVT.


В конце БАБАХ-а не хватает...


 
Думкин ©   (2006-10-21 19:23) [9]

TGauge можно вместо TProgressBar.


 
Gero ©   (2006-10-21 19:50) [10]

> [7] Leonid Troyanovsky ©   (21.10.06 17:50)

Никогда, кстати не понимал, что это и где этот файл используется?


 
Percent   (2006-10-21 22:26) [11]

Никогда, кстати не понимал, что это и где этот файл используется?

Значит, еще время не настало...
Но Билл - предусмотрительный парень...


 
Gero ©   (2006-10-21 22:27) [12]

> [11] Percent   (21.10.06 22:26)

LOL :)



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

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

Наверх




Память: 0.5 MB
Время: 0.076 c
3-1158303765
syte_ser78
2006-09-15 11:02
2006.11.12
вложенный запрос


15-1161339330
ArtemESC
2006-10-20 14:15
2006.11.12
Язык, который всем нравится...


15-1161632789
cyborg
2006-10-23 23:46
2006.11.12
Может кто нибудь по русски объяснить


1-1159106424
fs_more
2006-09-24 18:00
2006.11.12
Передача данных в сообщении (SendMessage / PostMessage)


2-1161612916
evgenij_
2006-10-23 18:15
2006.11.12
tab.Filter