Dnes to bude o FileNamech souborů, změně pozice kurzoru a zastavení přeblikávání obrázku.
Dnešní díl bude zaměřen převážně na funkce, jež budou pracovat s cestami k souboru. Ale předtím si ještě řekneme trik na zrušení otravného přeblikávání obrázku, je-li s ním programově zacházeno. Do události OnCreate formuláře napíšeme:
procedure TForm1.FormCreate(Sender: TObject);
begin
Image1.Parent.DoubleBuffered := True; // tímto jsme zrušili přeblikávání obrázku
end;
S následujícím kouskem kódu zapsaném například do Timeru by už už neměl obrázek blikat:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Image1.Left := Image1.Left + 1;
end;
A teď k slibovaným funkcím pro práci s tzv. Filename. Tyto funkce jsou dobré, znáte-li úplnou cestu k souboru (C:\Program Files\neco\program.exe
), ale uživateli chcete pouze zobrazit jméno souboru (program.exe
), nebo pouze adresář, v němž je dotyčný soubor uložen (C:\Program Files\neco\
), atd. Mohli bychom si to zařídit sami pomocí spousty jiných funkcí, jenže proč to dělat složitě – Delphi již má pro tuto příležitost připraveno plno nijak složitých funkcí. Nejprve uvedu seznam s popisem těchto f-cí, poté si napíšeme i nějaký zdrojový kód na ukázku.
- function ExtractFileDrive(const FileName: string): string;
- Tato funkce nám ze zadané cesty (
C:\Program Files\neco\program.exe
) vrátí pouze označení disku (C:
). - function ExtractFilePath(const FileName: string): string;
- Vrátí nám ze zadané cesty pouze adresáře, přes které se k souboru dostaneme, např.
C:\Program Files\neco\
. - function ExtractFileDir(const FileName: string): string;
- Skoro stejná funkce jako ExtractFilePath až na to, že výstup je bez lomítka na konci (
C:\Program Files\neco
). - function ExtractFileName(const FileName: string): string;
- Vrací nám název souboru ze zadané cesty (
program.exe
). - function ExtractFileExt(const FileName: string): string;
- Vrací příponu souboru (
.exe
). - function ExtractShortPathName(const FileName: string): string;
- Vrací krátký název, jenž je využíván např. v DOSu(
C:\Progra~1\Borland\Delphi\Bin\Delphi32.exe
). - function FileExists(const FileName: string): Boolean;
- Když zadaný filename existuje, vrací True, jinak False.
- function GetCurrentDir: string;
- Vrací název složky, ve které se zrovna nacházíme.
- function DeleteFile(const FileName: string): Boolean;
- Vymaže soubor. Pokud soubor nelze vymazat, vrací False.
- function FileAge(const FileName: string): Integer;
- Vrací stáří souboru. Když soubor neexistuje, pak je návratovou hodnotou číslo −1.
- function RenameFile(const OldName, NewName: string): Boolean;
- Změní název souboru. Když přejmenování proběhne úspěšně, vrátí False.
- function RemoveDir(const Dir: string): Boolean;
- Vymaže adresář. Pozor! Tento adresář musí být prázdný před vymazáním, jinak funkce vrátí False a adresář nevymaže.
Teď něco z kódu. Nejprve si na formulář přidáme komponentu OpenDialog z palety Dialogs. Na formuláři klikneme na nově vzniklou ikonku a v okně Properties na vlastnost Filter. Zobrazí se dialogové okno, co chce po nás zadat hodnoty do Filter Name a Filter. Filter Name nám obsluhuje to, co se bude u dialogu dole zobrazovat. Zadáme tam „Všechny soubory“. Položka Filter znamená, jaké typy souborů chceme v našem dialogu vidět. Jelikož ve Filter Name máme „Všechny soubory“, zvolíme i příslušný Filter, a to „*.*“. Pro zobrazení pouze textových souborů bychom do Filter napsali „*.txt“. Dále přidáme ještě jeden Edit, Label a Button. Do události OnClick Button1 napíšeme:
procedure TForm1.Button1Click(Sender: TObject);
var
s:string; //deklarace proměnné pro uložení cesty k souboru
begin
If OpenDialog1.execute Then begin
s := OpenDialog1.FileName; // proměnné přiřadíme filename zvoleného souboru
If trim(s) <> '' then begin //pokud se 's' nerovná ničemu :)
Label1.caption := ExtractFileName(s); //z filename si vybereme jen jméno souboru
end else
exit; //když jsme nevybrali žádný soubor, tak pryč
end;
end;
Zdrojový kód je dnes poměrně jednoduchý. Místo funkce ExtractFileName můžeme dosadit kteroukoliv z výše uvedeného výčtu.
Další zajímavou funkcí je GetCursorPos a SetCursorPos.
Funkce GetCursorPos nám najde aktuální souřadnice kurzoru. Její návratová hodnota je typu TPoint, což vypadá takto:
type TPoint = packedrecord
X: Longint;
Y: Longint;
end;
Nyní si napíšeme zdrojový kód aplikace, která bude zobrazovat v titulku okna souřadnice myši. Přidáme si na formulář Timer z palety System, dáme mu interval 1 (milisekunda) a do události OnTimer Timer1 napíšeme:
procedure TForm1.Timer1Timer(Sender: TObject);
var
s:TPoint;
begin
GetCursorPos(s);
Form1.Caption := 'X = '+ IntToStr(s.X) + ', Y = '+ IntToStr(s.Y);
end;
Jestliže byste chtěli programově změnit pozici kurzoru, poslouží vám funkce SetCursorPos. Do nového tlačítka na formuláři napište do jeho události OnClick následující:
procedure TForm1.Button2Click(Sender: TObject);
begin
SetCursorPos(0,0);
end;
Po kliknutí tlačítkem myši se kurzor objeví na souřadnicích 0,0 – levý horní roh.