Wednesday, February 09, 2011

Zmizení kurzoru myši

Velice krátký a jednoduchý tip. Zmizení kurzoru myši docílíme takto:
ShowCursor(false);
a jeho opětovné zobrazení celkem logicky takto:
ShowCursor(true);
Je třeba něco dodávat ? Myslím, že určitě ne. Využití tohoto tipu nechám na vás.
Kopírování souboru se zobrazením průběhu
Chcete si vytvořit vlastní souborový manažer ? Pak se vám možná bude hodit tento tip, ve kterém si ukážeme kopírování souborů s ukazatelem průběhu celé akce. O stupínek výš bychom se s naším příkladem dostali, pokud by kopírování probíhalo v samostatném vlákně na pozadí, ale to poněkud přesahuje prostorové možnosti tohoto dílu seriálu. Takže nám opět pomůže obvyklé Application.ProcessMessages, aby nedošlo k "zamrznutí" aplikace po dobu kopírování.
procedure CopyFileWithProgressBar(Source, Destination : string);
var
FromF,
ToF : file of byte;
Buffer : array[0..4096] of char;
NumRead : integer;
FileLength : longint;
begin
AssignFile(FromF,Source);
reset(FromF);
AssignFile(ToF,Destination);
rewrite(ToF);
FileLength:=FileSize(FromF);
with Form1.Progressbar1 do
begin
Min := 0;
Max := FileLength;
while FileLength > 0 do
begin
BlockRead(FromF,Buffer[0],SizeOf(Buffer),NumRead);
FileLength := FileLength - NumRead;
BlockWrite(ToF,Buffer[0],NumRead);
Position := Position + NumRead;
Application.ProcessMessages;
end;
CloseFile(FromF);
CloseFile(ToF);
end;
end;

procedure TForm1.Button16Click(Sender: TObject);
begin
CopyFileWithProgressBar('c:\zdroj.exe','c:\cíl.exe');
end;
Jak vidíte, princip je velmi jednoduchý a snadno pochopitelný. Samozřejmě je nutné, aby byla formuláři umístěna komponenta ProgressBar.

Labels: