Turbo Vision Alapismeretek

A Programozás Wiki wikiből

Bevezetés[szerkesztés]

A maga idejében, a Turbo Vision nagymértékben megkönnyítette az objektumorientált programozást, melynek felhasználásával készült a Turbo Pascal 6 integrált környezete is. A Turbo Vision tulajdonképpen egy objektumorientált keretrendszer, amely segíti az ablakozó technikával működő programokat.

A Turbo Vision objektumorientált könyvtár az alábbi lehetőségeket tartalmazza:

  • többszörös, változtatható méretű, átfedéses ablakozás,
  • görgethető (pull-down) menü,
  • egérkezelés,
  • dialógus dobozok,
  • beépített színválasztás,
  • lapozható menü, input doboz, ellenőrző dobozok, állító gombok (radio buttons) kezelése,
  • a billentyűleütések és az egér (klikkelés) szabványos kezelése.

Tudni kell azt, hogy a Turbo Vision felhasználásával készített alkalmazások kiterjedten használják az objektumorientált technikát, az öröklődést és a sokalakúságot. Nagyon jellemző a "pointer"-ek és a dinamikus változók használata, majdnem mindegyik Turbo Vision objektum példány dinamikusan foglal helyet a heapben. Célszerű a New függvény kiterjesztett változatának alkalmazása, amely a konstruktort, mint paramétert használja.

A Turbo Vision eseményvezérelt keretrendszer, mellyel könnyen készíthetünk ablakozó technikát alkalmazó programokat. Ezt a keretrendszert kell felruházni a célnak megfelelően, felhasználva a Turbo Pascal objektumorientált programozás lehetőségeit.

A Turbo Vision-ben találhatóak az un. alkalmazói objektumok, a TApplication-ök, melyekből létrehozhatunk a saját alkalmazásunknak megfelelő leszármazottakat. Példaként hozzunk létre egy leszármazottat és nevezzük célszerűen MyApplication-nek. Természetesen a MyApplication-höz hozzá kell adni még a szükséges kiegészítéseket, amelyek az alkalmazás-specifikus feladat végrehajtásához elengedhetetlenek.

A legmagasabb szinten az alkalmazói program nagyon egyszerű:

Begin
  MyApplication.Init; {inicializálja az alkalmazást}
  MyApplication.Run;  {futtatja}
  MyApplication.Done; {azután megszünteti}
End;

A felhasználók nagy része programjaihoz könyvtárat készít, amelyben a számára szükséges eljárásokat és függvényeket tárolja. Ha módosítani kell egy programon, akkor a megfelelő eljárás forráskódjában kell a változtatásokat elvégezni, majd az új verziót újra kell könyvtárazni.
A Turbo Vision használatával soha sem kell módosítani az aktuális forráskódot. Változtatni a Turbo Vision-nek a kiterjesztésével, azaz a TApplication leszármazottjainak (mint amilyen pl. a MyApplication) újabb tulajdonságokkal való felruházásával lehet. A TApplication keretrendszer változatlanul marad az APP.TPU-n belül. A módosítás úgy történik, hogy új objektum típusokat hozunk létre, és a szükséges változtatásokat úgy végezzük el, hogy új metódusokkal írjuk felül az örökölt metódusokat.

A Turbo Vision fejlesztési filozófia alapja:

 objektumorientált technikát kell alkalmazni és elfogadni a teljes Turbo Vision-t

A felhasználói felületek létrehozásával kapcsolatban nagy mennyiségű, programról programra ismétlődő, szükségtelen munkát takaríthatunk meg a Turbo Vision alkalmazásával.

A Turbo Vision keretrendszer elemei[szerkesztés]

Mielőtt rátérnénk a Turbo Vision keretrendszer ismertetésére, először tekintsünk bele "vajon mi van a dobozban" - melyek a Turbo Vision eszközei. Három fontos eszköze van:

  • a látvány (view),
  • az esemény (event), és
  • a nem látható, un. néma objektumok (mute objects).

Látvány (view)[szerkesztés]

Bármely objektum jellegű programelemet látványnak nevezünk, amely látható a képernyőn. A mezők, a mezők fejléce, az ablak kerete, görgető sor, menü, és a dialógus dobozok megjelennek a képernyőn, láthatóak, ezeket összefoglalva csoportoknak nevezzük. Ezek együttműködnek és mind a View (látvány) objektumra épülnek. Egy view általában téglalap alakú, egy karaktert, vagy egy sort tartalmaz és egy karakter magas, vagy karakter széles.

Esemény (event)[szerkesztés]

Az event olyan fajta esemény, amelyre az alkalmazói programnak reagálni kell. Eseményeket kelt a klaviatúra , az egér vagy a Turbo Vision más részei. Esemény tehát egy billentyű leütése, vagy az egér klikkelése, egy ablak áthelyezése, mozgatása. Az események sorban állnak a működés következtében, amelyeket az esemény végrehajtó sorrendben kezel le. A TApplication objektum, amelyre az alkalmazói program ráépül, tartalmazza az esemény végrehajtót.

Néma objektumok[szerkesztés]

A program összes egyéb objektuma néma objektum (mute object). Azért nevezzük némának, mert működésük a képernyőn nem látható. A feladatuk közé tartoznak számítások végrehajtása, kommunikáció a perifériákkal, és egyéb, az alkalmazói programra nézve specifikus feladat. Ha a néma objektumnak szüksége van arra, hogy megjelenítsen valamit a képernyőn, ezt csak egy view objektum segítségével teheti meg. Ezt a koncepciót nagyon fontos betartani a Turbo Vision alkalmazásában.

Turbo Vision alkalmazói programok[szerkesztés]

Ebben a fejezetben részletesen foglalkozunk a Turbo Vision alkalmazásával. Segítségünkre szolgálnak a TVGUID01 - TVGUID22 pascal demonstrációs programok, amelyeket abból a célból fejlesztettek ki, hogy a magas szintű programozás a felhasználó számára érthetőbbé váljék. Az első egy szinte keretprogram, majd a további programok lépésről lépésre kisebb részlettel bővülnek. Futtassuk egymás után a programváltozatokat, így jobban megértjük a programok működési menetét.

Menütervezés[szerkesztés]

TVGUID01.pas[szerkesztés]

Kezdjük el az ismerkedést a TVGUID01 programmal. Az alkalmazói objektum az APP unitban található, ez az úgynevezett TApplication. Hozzuk létre a leszármazottját, melyet nevezzünk el TMyApp-nek. Majd ennek metódusait fogjuk a későbbiekben felülírni.

 A TVGUID01 FORRÁSFÁJL TARTALMA:
Program TFirst;
Uses App;     {<-- ez az alkalmazói objektum az APP.TPU unit-ból}
Type         
   TMyApp = Object(TApplication)  {<-- saját alkalmazói típus definiálása}
            End;
Var MyApp : TMyApp;  {<-- leszármazott deklarálása}
Begin {main}
  MyApp.Init;  {<-- inicializálás, vagyis kezdeti értékadás}
  MyApp.Run;   {<-- interaktív kapcsolat a felhasználóval}
  MyApp.Done;  {<-- törlések, memória felszabadítás}
End.

Ebben a feladatban a TMyApp objektumot még nem egészítjük ki újabb funkciókkal. Tulajdonképpen soha nem kell új objektumot létrehoznunk a mezőikkel és a metódusaikkal, hanem egyszerűen deklarálnunk kell egy MyApp változót, mint a TApplication leszármazott példányát. Abból a célból hoztuk létre a TMyApp típust, hogy a programot flexibilisen fejleszthessük tovább és a feladatoknak megfelelően újabb és újabb funkciókkal (metódusokkal) bővíthessük.

A program összesen három utasításból áll,

  • a kezdeti értékadást végzi el a MyApp.Init,
  • a felhasználóval való interaktív kapcsolatot a MyApp.Run intézi,
  • majd a program befejezése előtt a képernyőtörlést, a memória felszabadítást a MyApp.Done hajtja végre.

A TVGUID01 program tehát üres menüsort jelenít meg, a státuszsorban pedig közli, hogy az ALT-X hatására megszakítja a program futását. Ez a program többet nem tud, bővíteni kell ahhoz, hogy más funkciókat is végre tudjon hajtani.

a TVGUID01 program futásának eredménye

TVGUID02.pas[szerkesztés]

Bővítsük tovább a TVGUID01 programot, hozzunk létre menüpontokat, bővítsük a státuszsorát is. A TVGUID01 program desktop-ját, az üres menüsort és a státuszsort a TApplication objektum InitDesktop, InitMenuBar és az InitStatusLine metódusai hozták létre. Ezt a három metódust a TApplication.Init aktiválta. Ezeket nem kell közvetlenül hívnunk, helyette írjunk egy saját Init metódust, amely első utasításként meghívja a TApplication.Init metódust.

Procedure TMyApp.Init;
Begin
  TApplication.Init;  {először az ős metódusát kell hívni}
  {...}               {itt kell inicializálni a saját alkalmazást}
End;

Természetesen, ha a program használja a menüsort, a státuszsort és a billentyűzetet, akkor a Uses utasítássorban még meg kell adni az Object, a Menus és a Drivers unitokat.


Ha a program semmilyen speciális inicializálást nem hajt végre, akkor egyszerűen az örökölt Init metódust használja. Mivel az Init, InitDesktop, InitMenuBar és az InitStatusLine metódusok virtuálisak, amikor hívjuk az örökölt Init-et, az hívja a megfelelő InitStatusLine és InitMenuBar metódusokat. Ezek bemutatására szolgál a TVGUID02.pas program. Az InitDesktop, InitMenuBar és az InitStatusLine kezdeti értéket ad a Desktop, MenuBar és a StatusLine globális változóknak.

Mivel a desktop nagyon fontos objektum, ezért ügyeljünk a következőkre:

  • Sohasem szabad felülírni az örökölt inicializáló metódust, az TApplication.InitDesktop-ot.
  • Legyen a MyApp-nak egy saját Desktop-ja.
  • A MyApp-nak saját példányai jelennek meg a menüpontokon való klikkelés hatására, az új view-nak csatlakoznia kell a Desktophoz.
  • A Desktop saját maga tudja, hogy hogyan kell kezelni a view-kat.

A TDialog objektum származása[szerkesztés]

Rövid példaként nézzük meg honnan származik a TDialog.


TDialog származása

Külső hivatkozások[szerkesztés]