Delphi – prvý program

21.09.2009 23:17

Delphi – prvý program

Spustíme Delphi v menu File zvolíme NewApplication. Otvorí sa nový prázdny projekt. Vytvorí sa prázdny formulár Form1. Delphi je teraz pripravené na to, aby sme mohli začať tvoriť náš nový program - editovacie okno obsahuje len zopár základných predpísaných konštrukcií a formulár je prázdny.
 

Objektový inšpektor a vlastnosti formulára

Formulár vymedzuje priestor, na ktorý môžeme položiť komponenty. Je to miesto, na ktorom sa odohráva komunikácia medzi programom a užívateľom
Objektový inšpektor

Vlastnosti formulára ako aj iných komponent sa dajú nastaviť v Objektovom inšpektore, ktorý je po ľavej strane formulára. Ak sa tak nestane, ukážete ho príkazom View - Object Inspector alebo klávesom F11. Objektový inšpektor ukazuje vlastnosti vybraného komponentu.
Okno Objektového inšpektora pozostáva z 2 kariet (a každá karta je ďalej rozdelená na 2 stĺpce - mená vlastností a ich hodnoty):

Karta Properties
- verejné vlastnosti danej komponenty (formulára). Môžu byť 4 typov:

  • Text - hodnotou môže byť ľubovoľné slovo, napr. Caption alebo číslo, napr. Width
  • Enumerated - hodnotu vlastnosti si môžeme vybrať z určenej množiny hodnôt, napr. Cursor - pri kliknutí na takúto vlastnosť, sa objaví samorozbaľovací zoznam
  • Set - takáto vlastnosť môže nadobúdať ľubovoľné množstvo hodnôt z dopredu definovanej množiny. Rozbaľovaní zoznam dvojíc True/False pre každý element množiny, napr. BorderIcons
  • Object - vlastnosť je sama o sebe objektom a zobrazuje sa ako rozbaľovaní zoznam vlastností, pričom každú možno editovať samostatne. Napr. Font - pri kliknutí na vlastnosť sa objaví tlačidlo s 3 bodkami, to slúži na otvorenie dialógového okna, v ktorom si môžeme nastaviť napr. farbu, veľkosť, rez písma

Karta Events
- zoznam udalostí, ktoré môžu nastať vo formulári alebo vo vybranom komponente. Obsahujú odkaz na časť programového kódu zapísaného v editore kódu, ktorý sa prevádza pri spustení tejto udalosti.
 

Vlastnosti formulára

Vyskúšame si nastaviť niektoré vlastnosti formulára:

  • Názov formulára - text, ktorý sa zobrazuje v titulku formulára. Ten sa nastavuje vo vlastnosti Caption. Napíšme do tejto vlastnosti text: Moja prvá aplikácia.
    Dá sa zmeniť aj vnútorný názov formulára zmenou jeho vlastnosti Name.
    Ak nenapíšete nový titulok, nová hodnota vlastnosti Name bude použitá aj pre vlastnosť Caption.
  • Veľkosť formulára, t.j. jeho výšku a šírku môžeme meniť ťahaním myškou alebo nastavením vlastností Height a Width - udávané v pixeloch
  • Vlastnosť BorderStyle definuje vzhľad titulnej lišty formulára, zobrazenie ikoniek v okraji formulára, chovanie okraja formulára a pod.
    • bsSizeable - (default) okno s možnosťou zmeny veľkosti a bez obmedzení na ikonky na okrajoch - takto vyzerajú hlavné okná väčšiny aplikácií vo Windows (napr. Prieskumník, Notepad)
    • bsDialog - dialógové okno. Dialógové okná sa používajú v situáciách, keď program vyžaduje od užívateľa určitú reakciu, po ktorej až môže pokračovať v činnosti. Nemožno meniť veľkosť okna, a v pravom hornom rohu je iba ikonka x
    • bsSingle - formulár, ktorého veľkosť sa nedá meniť, ale neobmedzuje ikonky, tlačidlo pre maximalizovanie je zablokované (napr. Kalkulačka)
    • bsSizeToolWin - zmenšené záhlavie, nepodporuje okrajové ikonky biMinimize, biMaximize a biHelp. Takéto okno sa používa napr. ako panel nástrojov v produktoch Microsoftu
    • bsToolWindow - ako predchádzajúce, ale veľkosť okna sa počas behu nedá meniť
    • bsNone - okno bez okraja a záhlavia (napr. pre úvodné obrazovky) aj takéto okno sa dá zatvoriť kombináciou [Alt + F4]
  • Vlastnosť BorderIcons definuje ikonky, ktoré sa zobrazia v titulku formulára
    • hodnoty biMinimize a biMaximize sa uplatnia len ak je vlastnosť BorderStyle rovná bsSizeable alebo bsSizeToolWin
    • hodnota biSystemmenu vytvorí ikonu v ľavej časti titulku okna, po kliknutí - systémová ponuka
    •  hodnoty biMinimize, biMaximize a biHelp sa uplatnia len ak vlastnosť BorderIcons obsahuje hodnotu biSystemMenu
  • Vlastnosť AutoScroll - ovláda automatické zobrazenie posuvníkov, ak je formulár príliš malý pre komponenty
  • Vlastnosť Name - kľúčová vlastnosť objektu, jeho názov - v rámci projektu musí by jedinečný.

Vymenovali sme si iba niekoľko vlastností formulára. Všetky ostatné si možno naštudovať v príslušnej literatúre alebo z Helpu, ktorý spustíme stlačením kombinácie Ctrl + F1 v Objektovom inšpektore

Pridanie komponentu na formulár

Komponent vložíme do formulára nasledujúcimi spôsobmi:

  • Na Palete komponentov klikneme na ikonku príslušného komponentu
    • o Klikneme do formulára na miesto, kde chceme komponent vložiť.
      alebo
    • o Klikneme do formulára a ťahaním myšou nastavujeme veľkosť komponentu.

alebo

  • Dvojklikom na ikonku na Palete komponentov sa komponent vloží do stredu formulára.

Ak chceme do formulára vložiť viac rovnakých komponentov:

  • so Shiftom si z Palety komponentov vyberieme komponent
  • klikáme myšou na formulár
  • výber zrušíme kliknutím na ikonku

Vytvoril sa nový objekt s názvom, ktorý je už súčasťou formulára a my môžeme modifikovať jeho vlastnosti v Objektovom inšpektore.

Ak sa vám podarí vložiť do formulára komponent, ktorý tam nechcete, kliknite naň a stlačte Delete.

Modifikácia vlastností

Ak chceme modifikovať vlastnosti nejakého objektu, musíme ho najprv myšou označiť. Vtedy sa aj v hornom riadku Objektového inšpektora objaví jeho meno a pod ním jeho vlastnosti. Objekt si môžeme vybrať aj v hornom rozbaľovacom riadku Objektového inšpektora.


 

Vlastnosti základných komponentov
  • Align - pozícia a veľkosť objektu v rámci formulára napr. ak nastavíme túto vlastnosť na allRight, bude objekt vždy, t.j aj po zväčšení, či zmenšení okna, v pravej časti formulára
  • Caption - popisok ovládacieho prvku - text, ktorý bude na objekte vypísaný
  • Color - základná farba objektu
  • Enabled - či je prvok prístupný myši a klávesnici, ak je vlastnosť rovná False - objekt je zobrazený ako neaktívny, t.j  svetlosivo, nedá sa editovať apod.
  • Font - definícia písma pre Text alebo Caption
  • ParentColor, ParentFont, ParentShowHint - indikujú, že objekt preberá hodnoty Color, Font a ShowHint od svojho rodičovského ovládacieho prvku
  • TabOrder - číselná pozícia prvku v poradí prepínania klávesom Tab
  • TabStop - či má poradie rešpektovať alebo sa preskočí
  • Text - reťazec, ktorý môže užívateľ priamo editovať
  • Visible - či bude komponent viditeľný alebo nie

Label

– komponent ktorý zobrazí vo formulári text – nadpis (menovka). Pridáme ho na formulár:

  • Na Palete komponentov na karte Štandard klikneme na ikonku

Okrem predtým vymenovaných spoločných  vlastností, má komponent Label vlastnosti:

  • Alignment - špecifikuje, ako sa bude správať text v rámci menovky. Efekt je najviac viditeľný, ak je vlastnosť WordWrap rovná True a menovka obsahuje text dlhší ako jeden riadok.
  • Autosize - automatické prispôsobenie výšky a šírky pri zmene textu; ak je True, nemajú vlastnosti Alignment a WordWrap zmysel
  • Transparent - či Label bude mať transparentné pozadie
  • WordWrap - špecifikuje, či text presahujúci šírku komponenty bude vo viacerých riadkoch

 

Edit (editovacie okienko)

• tento komponent sa využíva na zadávanie vstupov od užívateľa
• nájdeme ho na palete komponentov Standard
• klikneme na ikonku a vložíme do formulára

Niektoré vlastnosti komponentu Edit:

  • AutoSelect - či sa v okamihu aktivácie editovacieho poľa klávesom Tab má automaticky vybrať celý jeho obsah
  • CharCase - zápis celého textu malými resp. veľkými písmenami
  • Modified - či sa text zmenil od okamihu, keď sa tejto vlastnosti priradila hodnota False
  • PasswordChar - znak, ktorý sa má zapisovať namiesto písmen. Ak je jeho hodnotou #0, vypisujú sa znaky, ktoré užívateľ skutočne zadáva.
  • ReadOnly - ak je True, nemožno editovať

 

Tlačidlo Button a udalosť OnClick

Komponent Button nájdeme ho na palete komponentov Standard - ikonka
Program s tlačidlom je zaujímavejší, ako čisté okno, ale tlačidlo zatiaľ nerobí žiadne akcie. Každé tlačidlo môže mať priradenú nejakú akciu, ktorá sa spustí, keď naň počas behu programu klikneme - spustí sa zakaždým, keď naň klikneme.
Priradenie akcie sa robí nasledovne:

  • na dané tlačidlo vo formulári dvojklikneme (nech to bolo tlačidlo Button1)
  • objaví sa editovacie okno, v ktorom sú automaticky pripísané tieto riadky:

Pre nás je dôležité si všimnúť slovo Button1Click - toto označuje, že to čo naprogramujeme medzi slová begin a end sa spustí vždy, keď sa klikne na tlačidlo Button1

Pre otestovanie tlačidla sa naučíme jednoduchý príkaz na zmenu popisu na tlačidle:

procedure TForm1.Button1Click(Sender: TObject);
begin
  Button1.Caption := 'zmena';
 end;

Program spustíme (F9) a keď na tlačidlo teraz klikneme myšou, jeho popis sa zmení na slovo zmena. Ak máme v programe viac tlačidiel, každému môžeme naprogramovať inú akciu - dvojkliknutím sa predpripraví časť programu, do ktorej dopíšeme nové akcie.

Ďalším jednoduchým príkazom je volanie štandardnej procedúry Close - spôsobí zatvorenie našej aplikácie a teda koniec programu, napr.

procedure TForm1.Button2Click(Sender: TObject);
begin
  Close;
end;

POZOR! ak chceme akciu na tlačidle zrušiť, nikdy nezmažeme celú konštrukciu, ale len príkazy medzi begin a end - najbližšie uloženie projektu (napr. Ctrl+S), takéto zbytočné konštrukcie korektne odstráni.

Kompletný Unit1.pas teraz vyzerá takto:

unit Unit1;

interface

uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics,
  Controls, Forms, Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
   public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  Button1.Caption := 'zmena';
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
   Close;
end;

end.

Ďalšie vlastnosti komponentu Button

  • Cancel - ak je True, vyvolá udalosť OnClick aj po stlačení Esc
  • Default - ak je True, vyvolá sa udalosť OnClick aj po stlačení Enter
  • Ak má zameranie iný komponent ako Button, po stlačení Enter sa stáva implicitným 1. tlačidlo v poradí prepínaní komponentov, ktorých vlastnosť Default = True

Úloha č. 1:
Vytvorte jednoduchú aplikáciu. Po stlačení tlačidla sa v okne vypíše veľký nápis: "Hello, wolrd."

Riešenie:
Do formulára vložíme komponenty Label a Button. Nastavíme vlastnosť Font komponentu Label. Do vlastnosti Caption tejto komponenty dáme prázdny reťazec.
Dvojklikom vo formulári na tlačidlo Button1 sa v editovacom okne sa objaví úsek programu, do ktorého môžeme zapísať postupnosť príkazov. Táto postupnosť sa bude vykonávať vždy, keď klikneme na tlačidlo.


Na miesto kurzora napíšeme príkaz:

Label1.Caption := 'Hello, world';

Tento príkaz znamená, že do komponentu Label sa má vložiť text Hello, world.
Teraz program spustime klávesom F9. Program sa spustí a po kliknutí na tlačidlo sa objaví nápis.


Úloha č. 2:
Vytvorte nasledujúci program: Na formulári je vypísaná otázka, napr. Kto je najmúdrejší na svete? Užívateľ môže zadať odpoveď a po zatlačení tlačidla sa vypíše aj na formulári.
Riešenie:
Do formulára vložíme komponent Label1, jeho vlastnosť Caption zmeníme na text: Kto je najmúdrejší na svete?
Potom do formulára pridáme druhý Label2Edit1, zmažeme text vo vlastnostiach Caption a Text. Nakoniec vložíme do formulára komponent Button1. Dvojklikneme na tlačidlo a na mieste kurzora v editore kódu napíšeme jeden riadok programu:

Label2.Caption := Edit1.Text;

Spustíme program a výsledok by mal byť približne takýto:

Pre uľahčenie ovládania, nastavme vlastnosť Default komponentu Button1 na True. Vtedy sa bude vykonávať udalosť OnClick aj po stlačení Enter v editovacom okne.

Úprava:
Po stlačení tlačidla sa odpoveď sa nebude premazávať, ale bude sa do nej dopisovať ďalší text. Toto urobíme jednoducho. Predchádzajúci riadok programu prepíšeme na:

Label2.Caption := Label2.Caption + ',' + Edit1.Text;

Týmto príkazom sme povedali aby sa do komponentu Label2 vložilo to čo tam už bolo, za to nech sa napíše čiarka a nakoniec text, ktorý je v editovacom okne.

Zapamätajme si:

  • Na začiatku, počas návrhu formulára nastavujeme všetky vlastnosti v Objektovom inšpektore.
  • Ak chceme naprogramovať, čo sa má udiať po stlačení tlačidla, dvojklikneme na tlačidlo a otvorí sa nám editor kódu na mieste, kam máme príkazy napísať. Hovoríme, že sme naprogramovali udalosť OnClick.
  • Priraďovací príkaz zapisujeme := (dvojbodka a rovnítko - bez medzery)
  • Za príkazom musíme napísať bodkočiarku.

Úlohy:

1. Aplikáciu z úlohy č. 2 doplňte o jedno tlačidlo s nápisom Zmaž. Po kliknutí na toto tlačidlo sa zmaže odpoveď.

2. Upravte predchádzajúci príklad tak, že po stlačení jednej odpovede ostane na ploche viditeľné iba tlačidlo Zmaz. Po stlačení tohto tlačidla budú opäť viditeľné všetky tlačidla.

Príkaz na ukrytie objektu je: NázovObjektu.Hide;
Príkaz na ukázanie objektu je: NázovObjektu.Show;

3. Vysvetlite, aký je rozdiel medzi:

Label1.Caption := Edit1.Text;
Label1.Caption := 'Edit1.Text';

Späť

Vyhľadávanie

(c) 2008 Všetky práva vyhradené.