Vlastné menu

MainMenu
OpenDialog, SaveDialog
Úlohy na riešenie


MainMenu      Nahor


Aj v tejto lekcii budeme pracovať so súbormi, ale trochu inak. V okne aplikácie si vytvoríme vysúvacie menu - MainManu, akú poznáme z Windows aplikácií. Naše menu bude mať len niekoľko položiek, napríklad takýchto:
  • File - Open, Save, Exit
  • Edit - Clear
  • Statistic - Count Lines, Count spaces, Count words,...
Kedykoľvek môžeme zmeniť názvy položiek, doplniť či zmazať položku.
MainMenu

Ako teda vlastné menu vytvoríme?

Do formulára vložíme komponent MaimMenu z palety Standard. Dvojklikom naň vkladáme názvy jednotlivých položiek menu aj názvy položiek v podmenu.

V strome objektov Object TreeView sa ako podstrom v objekte MainMenu1 zobrazia názvy položiek menu (Caption) a ich mená (Name).
Object TreeView

Kliknutím na ľubovoľnú položku v podmenu sa v editovacom okne vloží hlavička procedúry pre ošetrenie položky. Napr. ak klikneme na pložku "Exit", chceme, aby sa aplikácia ukončila. Do tela procedúry vpíšeme príkazy pre ukončenie programu Alication.Terminate;
procedure TForm1.koniecClick(Sender: TObject);
begin
  Alication.Terminate;
end;



OpenDialog, SaveDialog      Nahor

Nato, aby sme mohli realizovať "klasické" otvorenie resp. uloženie súboru pomocou dialógového okna, musíme vložiť neviditeľné komponenty OpenDialog a SaveDialog z palety Dialogs. Pre oba komponenty nastavíme v Properties v položke Options položku ofFileMustExists na True. Ak chceme nastaviť typ súborov, klikneme na [...] pre Filter a do tabuľky zapíšeme, napr. Textový súbor a *.txt. Oba komponenty sa budú aktivizovať len pri volaní dialógového okna. Paleta Dialog

Nadefinujeme procedúry pre otváranie a ukladanie súboru (napr. textového). Na formulári v komponente MainMenu klikneme na položku Open a do tela procedúry TForm1.otvorClick dopíšeme potrebné riadky:

Otvorenie súboru
procedure TForm1.otvorClick(Sender: TObject);
var s:string;
    f:textfile;
begin
  GetDir(0,s);
  OpenDialog1.InitialDir := s;
  if not OpenDialog1.Execute then exit;
  AssignFile(f,OpenDialog1.Filename);
  reset(f);
     ...
  closefile(f);
end;
Neviditeľné komponenty
Metóda GetDir vloží do premennej s cestu aktuálneho adresára potrebného pre otvorenie dilógového okna. Ak užívateľ potvrdí v dialógovom okne vybraný súbor, jeho meno sa priadí do premennej f. Obsah súboru múžeme zobraziť napr. v Memo okne, prípadne v súbore vykonáme potrebnú štatistiku...

Rovnako postupujeme pri položke Save v MainMenu ak chceme nejaký (napr. textový) súbor uložiť:

Uloženie súboru
 procedure TForm1.ulozClick(Sender: TObject);
var s:string;
    f:textfile;
begin
  GetDir(0,s);
  SaveDialog1.InitialDir:= s;
  if not SaveDialog1.Execute then exit;
  AssignFile(f,SaveDialog1.Filename);
  rewrite(f);
  	...
  closefile(f);
end;

Príklad
Doplňte procedúry pre ostatné položky menu, pre zmazanie Memo okien, vložte štatistiky textového súboru, aké sú v úlohách v predchádzajúcej lekcie. Do projektu môžeme vložiť aj editovacie okna pre realizovanie vstupov, tlačidlo pre pridávanie údajov z editovacích okien do okna Memo a pod.

Výsledok môže mať napríklad aj takýto formát:
Výsledok projektu



Úlohy na riešenie      Nahor

1. Doplňte do príkladu do položky "Edit" možnosť nahrádzania textu iným textom v súbore.


2. Vytvorte menu pre farebné efekty s načítanými obrázkami z odpovedajúcej lekcie, pričom do objektu Image sa otvorí ľubovoľný bitmapový obrázok, zmenený obrázok istým ybraným algoritmom z menu budeme môcť uložiť.




Textové súbory Obsah Trieda, inštancia