Programujeme v Delphi: Nevizuálne komponenty

Lukáš Kuzmiak  /  04. 07. 2003, 00:00

Na moju otázku či súhlasíte s domácimi úlohami som sa nedočkal veľkej odozvy, vlastne žiadnej - Domáce úlohy teda nezavádzam. Dnes si ukážeme nový komponent, a to OpenDialog. Keď ho vložíme na formulár (nachádza sa na záložke Dialogs) tak ako ostatné komponenty uvidíme len malý štvorček. Takýchto komponentov je viac, hovoríme im nevizuálne komponenty. Takže tento komponent na formulári máme, pridáme ešte Button, Edit a Memo. Takto som to poukladal ja:



Tu je obsluha Buttonu:

procedure TForm1.Button1Click(Sender: TObject);
begin
if OpenDialog1.Execute = true then begin
Edit1.Text := OpenDialog1.FileName;
Memo1.Lines.LoadFromFile(OpenDialog1.FileName);
end;
end;

Tento program je veľmi jednoduchý. Ak bol OpenDialog otvorený (vyvolaný) tak sa otvorí ľubovoľný textový súbor a potom ho funkciou LoadFromFile() komponentu Memo načítame. Text obsiahnutý v súbore sa vypíše do komponentu Memo. Možno ste si na záložke Dialogs všimli ďalší nevizuálny komponent SaveDialog. Myslím, že všetci vedia čo bude vykonávať - áno presne tak bude ukladať do súboru. Memo má taktiež funkciu SaveToFile() takže to nebude problém. Oba dialógy majú vlastnosť Filter - tu si môžme nastaviť z/do akých súborov budeme načítavať/ukladať napr. Textové súbory. Pre nastavenie tejto vlastnosti 2x klikneme do políčka - otvorí sa nám okno na upravenie filtra. Na ľavú stranu napíšeme popis napr. "Textové súbory (*.txt)" aby používateľ programu vedel čo môže otvárať/ukladať. Do políčka na pravej strane napíšeme napr. pre Textové súbory *.txt, no proste *. a prípona súboru. Do vlastnosti SaveDialogu DefaultExt (Default Extension - prednastavená prípona) napíšte *. a príponu súboru, do ktorého ukladáte. Ak máte vo filtri viac typov súborov nastavte vlasnosť ofExtensionDifferent (nachádza sa v Options) na True a do DefaultExt napíšte *.* !!! Takýmito dialógmi zachádzame k vytvoreniu textového editora, no ak chceme aby bol dobrý musíme sa naučiť ešte veľa vecí. Ešte si ukážeme FontDialog. Ak 2x klikneme na akýkoľvek dialóg zobrazí sa nám jeho podoba (neviem ako to funguje v starších verziách Delphi, no v Delphi 7 to ide). Ako už určite väčšine z Vás došlo tento dialóg budeme používať na zmenu Atribút písma. Na formulár vložíme komponenty Memo, Button a FontDialog. Obsluha Buttonu bude vyzerať takto:

procedure TForm1.Button1Click(Sender: TObject);
begin
if FontDialog1.Execute = true then Memo1.Font := FontDialog1.Font;
end;

Takto je to jednoduché, ale ak chceme zmeniť len označený text ???? Takúto možnosť komponent Memo nemá, ale má ju jeho "brat" RichEdit - je to to isté čo Memo, ale má viac dôležitých funkcií (ak by ste v textovom editore použili ako hlavné editovacie okno Memo Editor by to bol dosť "suchý"). Takže Memo vymeníme za RichEdit a obsluhu Buttonu Prepíšeme na:

procedure TForm1.Button1Click(Sender: TObject);
begin
if FontDialog1.Execute = true then RichEdit1.SelAttributes.Assign(FontDialog1.Font);
end;

Ešte jedno vylepšenie podmienok, na ktoré som v minulej časti zabudol a síce: Ak "zisťujeme" hodnotu BOOLEAN tak nemusíme vypisovať if x = true then ..., ale stačí len if x then ... POZOR !!! Platí len pre hodnotu TRUE !!! Ak chceme niečo podobné pre hodnotu FALSE napíšeme: if not x then .... Nie je to nič ťažké a nemusíme to používať, no je tam menej vypisovania. Ak nerozumiete nerobte si s tým ťažkú hlavu je to len vylepšenie a zaobídete sa aj bez neho.

A na záver ešte "oddychovka": ColorDialog. Color je po Anglicky farba, čo vie snáď každý, takže týmto dialógom budeme meniť farbu napr.

if ColorDialog1.Execute then Memo1.Color := ColorDialog1.Color;

Každý z dialógov má svoje "Options". Tu môžeme nastaviť rôzne zaujímavé veci napr. pri ColorDialogu cdFullOpen - to znamená, že pri vyvolaní sa dialóg zobrazí aj s voliteľnými vlastnými farbami.

Do programovania o týždeň !!

-LuKaSh_88-


Odporúčame:

Programujeme v Delphi: Podmienky a matematické funkcie

Programujeme v Delphi: Premenné a Podmienky

Programovanie v DELPHI

Programujeme v PHP

Programujeme v jazyku C

Neprehliadnite: