Interfészek használata delphiben. A Delphi interfészeivel való munka jellemzői. Szabványos interfész elemek

A cikk a csoportunk fiatal fejlesztői által írt programelemzések eredményei alapján készült.

Helyesen rendezzük el az alkatrészek kapcsolási sorrendjét

Sok felhasználónak, különösen azoknak, akik korábban DOS-ban dolgoztak, megvan a szokásuk, hogy a beviteli mezők között nem az egérrel váltanak, hanem a billentyűzetet a Tab billentyűvel használják. Ráadásul sokkal gyorsabb, mint az egyes mezők egérrel történő kijelölése. Ezért az alkatrészek kapcsolási sorrendjét helyesen kell beállítani. Ez vonatkozik mind az összes konténer-összetevőn belüli komponensekre (panelek, GroupBox-ok és hasonlók), mind magukra a konténer-összetevőkre, ha több van belőlük az űrlapon.

A tárolón belüli összetevők váltási sorrendjét a TabOrder tulajdonság határozza meg. Az első olyan komponens válik aktívvá, amelynek TabOrder értéke 0, a második 1 stb., amíg az összes összetevőt fel nem sorolják. Ezenkívül az összetevő TabStop tulajdonsággal rendelkezik, amely jelzi, hogy az összetevő fókuszba kerül-e, ha a Tab billentyűvel váltja. Ha meg kell tiltania a váltást bármely összetevőre, állítsa be a TabStop = false értékét. Ebben az esetben erre az összetevőre csak az egér segítségével lehet váltani.

Vannak esetek, amikor azok a felhasználók, akik hozzászoktak ahhoz, hogy egy bizonyos kulccsal váltsanak az egyik programban, megszokásból, továbbra is használják azt másokban. Ez gyakran előfordul az 1C felhasználóknál, ahol az Enter billentyűvel lehet navigálni a beviteli mezők között. Nos, ilyen lehetőséget adunk nekik a programjainkban, ha kérik. Állítsa az űrlap KeyPreview tulajdonságát true értékre, és írjon egy OnKeyPress eseménykezelőt:

Eljárás TForm1.FormKeyPress(Sender: TObject; var Key: Char);
kezdődik
if ord(key)=vk_Return then
Form1.SelectNext(PriemForm.ActiveControl, true, true);
vége;

Ez a kezelő navigációt biztosít az űrlapelemek között az Enter billentyű lenyomásakor. Megjegyzendő, hogy ez a módszer gombokkal nem működik, mert... Ha egy gombot megnyomja az Enter billentyűt, akkor a kattintás megtörténik, míg a Tab megnyomásával a beviteli fókusz a váltási sorrend következő összetevőjére kerül.

Alapértelmezett gombok

Ugyanazok a felhasználók gyorsan megszokják, hogy az alkalmazások párbeszédpaneleiben rendszerint az Enter billentyűvel megerősítheti a választását, és az Esc billentyűvel törölheti. Ne okozzunk nekik csalódást a programjainkban, pláne, hogy ez nagyon egyszerű. Az Enterre reagáló gomb esetén állítsa az Alapértelmezett tulajdonságot igaz értékre. Az Esc-re reagáló gombnál állítsa a Mégse tulajdonságot igaz értékre. Ez minden.

igen vagy nem

Minden párbeszédpanelek, felhasználói műveleteket kérő, legalább két gombbal kell rendelkeznie: a művelet megerősítése és a művelet elutasítása (Igen/Nem, Mentés/Mégse stb.). A művelet megszakítható az ablak bezárásával az ablak címében található [X] gombbal. Elfogadhatatlan, ha csak egy gomb van a művelet megerősítésére, az elutasítás pedig a címben szereplő [X] gombbal zárja be az ablakot, vagy egyáltalán nincs visszautasítási lehetőség. Ez megzavarja a felhasználót, és felveti a logikus kérdést: hogyan utasítsa el?

Ne felejtse el a fenti „Alapértelmezett gombok” bekezdésben leírtakat sem.

Minden párbeszédpanelnek meg kell nyílnia a képernyő közepén

Középre helyezve, nem oda, ahol tervezési módban létrehozták. Először is, vizuálisabb, másodszor pedig automatikusan kiküszöböli a különböző képernyőfelbontások problémáját a különböző felhasználók számára.

Kivételt képez, ha a párbeszédablak nem modális, és a felhasználó ebben az ablakban végzett munkája következtében a főablakban azonnal bekövetkeznek a változások (például adathalmaz szűrése, grafikonok átrajzolása stb.).

Az ablakok mérete nem haladhatja meg a képernyő méretét

Semmilyen esetben sem. Szégyen, ha az ablak egy része túlnyúlik a képernyőn. Ez a követelmény nem függ a felhasználó képernyőfelbontásától, pl. az olyan kifogások, mint a „hadd állítsanak be nagyobb felbontást”, nem működnek.

Az ablakelemek helyes átméretezése

Az ablakelemeknek megfelelően át kell méretezniük vagy el kell mozogniuk az ablak átméretezésekor, az ablak nagy méretűre állításakor és az ablak visszaállítása esetén a maximalizálás után.

Mindig minden látható

Az ablak méretének csökkentése nem vezethet az ablakelemek eltűnéséhez, és lehetőleg nem vezethet görgetősávok (görgető) megjelenéséhez magának az ablaknak. Korlátozhatja a minimális ablakméretet, hogy minden elem látható és hozzáférhető legyen. Ha nem lehetséges úgy elhelyezni az összetevőket, hogy azok mind láthatóak legyenek az ablakban, akkor a könyvjelzők (például a PageControl) segítségével csoportokra oszthatja az összetevőket. Nem hagyjuk figyelmen kívül a képernyőfelbontással kapcsolatos kifogásokat sem.

Tanácsok mindenhol, tippek mindig

A gombokhoz, különösen az eszköztárakon (például az eszköztáron) célszerű tippeket megadni, hogy mindig világos legyen, miért van szükség erre vagy arra a gombra.

Színspektrum

Nem szabad az űrlapon lévő alkatrészeket a szivárvány összes színére festeni. Ez fárasztja a szemet és elvonja a felhasználó figyelmét. Nem néz ki "menőnek". A kiemelést akkor használjuk, ha fel kell hívni a felhasználó figyelmét egy adott elemre vagy az ablak egy bizonyos részére. Például a hibákat tartalmazó színes rekordok világos piros színnel, vagy fordítva, a sikeresen ellenőrzött rekordok világoszöld színnel.

Következtetés

Van egy nagyon jó módszer, amely lehetővé teszi, hogy megtalálja a hibákat általában a programban és különösen a felületen. Egyszerű: képzeld magad a felhasználó helyébe, és fél óráig próbálj úgy dolgozni, ahogy ő dolgozik. Még jobb, ha a felhasználó hatótávolságon belül van (például ugyanabban a szervezetben dolgozik). Ebben az esetben ülj mellé, vagy még jobb, ha helyette, és próbáld elvégezni a dolgát. Adatok bevitele, módosítása, jelentések megjelenítése stb. Ha nem tudja, hogyan kell helyesen csinálni, kérdezze meg felhasználóját. Ne csak egy vagy két azonos típusú műveletet végezzen, mint a hibakeresési módban, hanem 20-30, vagy akár több különböző műveletet, különböző sorrendben. Ne felejtsen el beírni valamit, vagy hibásan írja be, és nézze meg, hogyan reagál rá a program. Gyorsan látni fogja a program gyengeségeit.

A cikk írója automatizálta a felvételi bizottság munkáját az egyetemen, és a program bevezetésének első évében napi 3-4 órát töltött a felvételi bizottságban, regisztrálta a jelentkezőket, kitöltötte és megadta a személyes adatait. vizsgajelentések. És a többiért munkaidő kijavította a hibákat és hiányosságokat. Higgye el, jövőre gyakorlatilag nem lesz probléma. Ugyanez történt a személyzeti modul bevezetésekor is.

Ezért tartsa szem előtt a felhasználói élményt. Tedd egyszerűvé és kellemessé számukra a programokkal való munkát.

Az egyik és a legtöbb erősségeit környezet Delphi programozás a nyílt architektúrája, amelynek köszönhetően a Delphi egyfajta metaprogramozást tesz lehetővé, lehetővé téve a „programozási környezet programozását”. Ez a megközelítés a Delphi-t kiváló minőségre fordítja új szint alkalmazásfejlesztő rendszereket, és lehetővé teszi további eszközök beágyazását ebbe a termékbe, amelyek támogatják a létrehozás szinte minden szakaszát alkalmazási rendszerek. Ilyen széles lehetőségek nyílnak meg a Delphiben megvalósított, úgynevezett nyílt interfészek koncepciójának köszönhetően, amelyek összekötő kapcsot jelentenek az IDE (Integrated Development Environment) és a külső eszközök között.

Ez a cikk a Delphi nyílt felületeivel foglalkozik, és áttekintést nyújt az általuk nyújtott lehetőségekről. A Delphi hat nyitott felületet határoz meg: Eszközfelület, Tervezőfelület, Szakértői felület, Fájlfelület, Szerkesztőfelület és Verzióvezérlő felület. Nem valószínű, hogy ennek a cikknek a keretein belül sikerülne részletesen kitérni és bemutatni mindegyik képességét. A Delphi forrásszövegei segítenek a vizsgált kérdések alaposabb megértésében, szerencsére a fejlesztők részletes megjegyzésekkel látták el őket. A nyilvános interfészeket képviselő osztályok deklarációi a megfelelő modulokban találhatók a...\Delphi\Source\ToolsAPI könyvtárban. A Tervezési felület (DsgnIntf.pas modul) eszközöket biztosít tulajdonságszerkesztők és komponensszerkesztők létrehozásához.

A tulajdonság- és komponensszerkesztők külön tárgyalásra érdemes témát képeznek, ezért ne felejtsük el, hogy a tulajdonságszerkesztő az Object Inspector viselkedését szabályozza, amikor megpróbálja megváltoztatni a megfelelő tulajdonság értékét, és a komponensszerkesztő akkor aktiválódik, amikor dupla kattintás bal egérgombbal az űrlapon elhelyezett komponens képére. A Version Control Interface (VCSIntf.pas modul) verzióvezérlő rendszerek létrehozására szolgál. A 2.0-s verzió óta a Delphi támogatja az Intersolv PVCS integrált verziókezelő rendszert, így a legtöbb esetben nincs szükség saját rendszer fejlesztésére. Emiatt a Verzióvezérlő felületet is figyelmen kívül hagyjuk. A Fájlinterfész (FileIntf.pas modul) lehetővé teszi az IDE működő fájlrendszerének felülbírálását, amely lehetővé teszi a fájlok saját tárolási módjának kiválasztását (például az adatbázis-kiszolgáló Memo mezőiben). Az Edit Interface (EditIntf.pas modul) hozzáférést biztosít a forrásszöveg pufferhez, amely lehetővé teszi a kód elemzését és generálását, a kurzor pozíciójának meghatározását és megváltoztatását a kódszerkesztő ablakban, valamint a forrásszöveg szintaktikai kiemelésének szabályozását.

A speciális osztályok interfészt biztosítanak az űrlapon elhelyezett komponensekhez (összetevő típusának meghatározása, hivatkozások beszerzése szülő- és gyermekkomponensekre, tulajdonságok elérése, fókusz átvitel, törlés stb.), magához az űrlaphoz és a projekt erőforrásfájljához. A Szerkesztőfelület lehetővé teszi az úgynevezett moduláris értesítők azonosítását is, amelyek meghatározzák az eseményekre adott reakciókat, mint például egy modul forrásszövegének megváltoztatása, űrlap módosítása, komponens átnevezése, modul mentése, átnevezése vagy törlése, projekt erőforrásfájl módosítása, stb. A Tool Interface (ToolIntf modul. pas) eszközt biztosít a fejlesztők számára Általános információ az IDE állapotáról és olyan műveletek végrehajtásáról, mint projektek és egyedi fájlok megnyitása, mentése és bezárása, modul létrehozása, információk beszerzése az aktuális projektről (modulok és űrlapok száma, neve stb.), regisztráció fájlrendszer, interfészek szervezése az egyes modulokhoz stb. A moduláris értesítők mellett a Tool Interface kiegészítő értesítőket is definiál, amelyek értesítenek olyan eseményekről, mint például fájlok és projektek megnyitása/bezárása, asztali projektfájl betöltése és mentése, projektmodulok hozzáadása/kizárása, csomagok telepítése/eltávolítása, projekt összeállítása, és in A moduláris értesítőkkel ellentétben a bővítményértesítők lehetővé teszik bizonyos események végrehajtásának megszakítását.

Ezen túlmenően az eszközfelület lehetővé teszi a Delphi IDE főmenüjének elérését, lehetővé téve további elemek beágyazását. Az Expert Interface (ExtIntf.pas modul) az alapja a szakértők létrehozásának – az IDE-be épített szoftvermodulok a funkcionalitás bővítése érdekében. A szakértő példája a Delphi Database Form Wizard, amely egy űrlapot generál az adatbázistábla tartalmának megtekintésére és módosítására. Miután meghatároztuk a szakértői osztályt, meg kell győződnünk arról, hogy a Delphi „tanul” a szakértőnkről. Ehhez regisztrálni kell a RegisterLibraryExpert eljárás meghívásával, paraméterként átadva neki a szakértői osztály egy példányát. Szemléltetésképpen készítsünk egy egyszerű szakértőt az esStandard stílusban, amely a megfelelő Delphi menüpont kiválasztásával egy üzenetet jelenít meg, hogy fut. Amint a fenti táblázatból látható, az esStandard stílus hat módszer felülbírálását igényli:

Ahhoz, hogy a szakértőt „műveletbe hozzuk”, ki kell választani a Komponens/Összetevő telepítése... menüpontot, a Tallózás párbeszédablakban ki kell választani a szakértőt tartalmazó modult (esetünkben az exmpl_01.pas), majd az OK gombra kattintani, majd a dclusr30.dpk csomag összeállítása után A Delphi főmenüjében, a Súgó részben meg kell jelennie a Simple Expert 1 elemnek, kijelölése esetén a „Standard Expert started!” információs üzenet jelenik meg. Továbbra is rejtély, hogy a Delphi miért helyezi el a szakértő menüpontot a Súgó részben. Ha nem tetszik, hogy a menüpont ott jelenik meg, ahol a Delphi akarja, és nem ott, ahol akarja, akkor a következő lehetőség lehetséges: hozzon létre egy szakértőt a bővítmény stílusában, amely kiküszöböli a menüpont automatikus létrehozását, ill. a Tool Interface segítségével adja hozzá a „manuális” menüpontot. Ez lehetővé teszi, hogy tetszőleges módon beállítsa az új elem helyét a főmenüben.

Menüpont hozzáadásához használja a TIToolServices osztályt - amely az Eszközfelület alapja - és a TIMainMenuIntf, TIMEnuItemIntf osztályokat, amelyek interfészeket valósítanak meg az IDE főmenüjéhez és elemeihez. A ToolServices osztály TIToolServices egy példányát maga az IDE hozza létre inicializáláskor. Kérjük, vegye figyelembe, hogy a Delphi főmenühöz és elemeihez való interfészek kiadásáért a felelősség teljes mértékben a fejlesztőt terheli. Útközben bonyolítsuk egy kicsit a szakértő funkcionális terhelését: a menüpont aktiválásakor tanúsítványt ad ki a ben megnyitott projekt nevéről. Ebben a pillanatban a környezetben: Ebben a példában a központi helyet az AddIDEMenuItem funkció foglalja el, amely egy menüponttal egészíti ki a Delphi IDE főmenüjét. Paraméterként megkapja az új menüpont szövegét, azonosítóját, annak az elemnek az azonosítóját, amely elé az új elemet beilleszti, a billentyű szimbolikus ábrázolását, amely a Ctrl billentyűvel együtt használható. gyors hozzáférés egy új elemhez, és egy új elem kiválasztásának megfelelő eseménykezelőt. Új menüponttal bővült a Nézet rész az Órák elem előtt.

Most pedig ismerkedjünk meg a bejelentőkkel. Definiáljunk egy beépülő értesítőt, amely nyomon követi a projektek zárását/nyitását, és ennek megfelelően módosítja az aktív projekt nevét tároló mezőt (az előző példához képest nem változott metódusok megvalósítását a rövidség kedvéért mellőzzük): Az értesítő megvalósításához definiáltuk a TAddInNotifier osztályt, amely egy leszármazott TIAddInNotifier, és felülírtuk a FileNotification metódust. Az IDE minden alkalommal meghívja ezt a metódust, amikor olyan esemény következik be, amelyre a bővítmény-bejelentő válaszolni tud (minden ilyen eseményt egy megfelelő TFileNotification típusú konstans jelez). A TAddInNotifier osztály Expert mezőjét használják Visszacsatolás szakértővel (TAddInNotifier.FileNotification metódus). A szakértői megsemmisítőben a bejelentőt töröljük, a bejelentőt pedig megsemmisítjük. Most szemléltessük a moduláris jelzők használatát. Hozzunk létre egy bővítmény-szakértőt, amely üzeneteket ad ki egy projektfájl mentésének minden egyes műveletéről (a rövidség kedvéért nem mutatjuk be a számunkra már ismert módszerek megvalósítását): Ebben a példában a bővítmény-szakértő figyeli az eseményeket projektek nyitásának/zárásának megfelelő.

Minden alkalommal, amikor egy projektet megnyitnak, a projektfájlnak megfelelő moduláris értesítő regisztrálásra kerül. A megvalósítást tekintve a moduláris notifikátorok hasonlóak a beépülő értesítőkhöz: definiáljuk a TModuleNotifier osztályt, amely a TIModuleNotifier leszármazottja, és felülírjuk a Notify és a ComponentRenamed metódusokat. Az IDE meghívja a Notify metódust, ha a modulhoz kapcsolódó bizonyos események bekövetkeznek; Ezen a módszeren belül egy adott eseményre adott reakciót határozzuk meg. A ComponentRenamed metódus akkor kerül meghívásra, ha egy összetevő neve megváltozik a modulűrlapon. Felhívjuk figyelmét, hogy ezt a metódust nem használjuk, de felül kell írnunk, különben a komponens nevének megváltozásakor az alaposztály egy absztrakt metódusa hívódik meg, ami beláthatatlan következményekkel jár.

A moduláris notifikátor regisztrálása némileg bonyolultabb folyamat, mint egy bővített értesítő regisztrálása: először megkapjuk a modul interfészt (TIModuleInterface), majd a modul interfész segítségével regisztráljuk az értesítőt. A projekt lezárásakor a moduláris értesítő törlődik (ismét a TIModuleInterface használatával), és a bejelentő megsemmisül. Befejezésül bemutatjuk, hogyan határozhatja meg a kurzor pozícióját a kódszerkesztő ablakban. Hozzunk létre egy szakértőt, aki a megfelelő menüpont kiválasztásakor megjeleníti az aktív fájl nevét és a benne lévő kurzorpozíciót tartalmazó üzenetet (csak a példához nélkülözhetetlen módszerek megvalósítása látható): A kurzor pozíciójának meghatározásához, a következő interfészsort kell megszereznünk: moduláris interfész (TIModuleInterface); kódszerkesztő felület (TIEditorInterface); modul bemutató felület a szerkesztő ablakban (TIEditView).

Ha egy szakértői menüpont kiválasztásakor a forrás szövegfájl (*.pas) aktív, akkor egy üzenet jelenik meg, amely tartalmazza az aktív fájl nevét és a benne lévő kurzor aktuális pozícióját. Ha az aktív fájl nem pas fájl, akkor az üzenet nem kerül kiadásra. Az aktív fájl nevének lekéréséhez használja a TIToolServices osztály GetCurrentFile metódusát. Ezzel befejeztük a nyílt interfészek használatának módjait. A CD-ROM tartalmazza az összes példa forráskódját. A CD-ROM tartalmaz egy összetettebb és részletesebb példát is, amely egy kiegészítő szakértőt tartalmaz, amely lehetővé teszi a felhasználó számára a Delphi-modulok forrásszövegének könyvjelzők közé helyezését. A Bookmarks Expert telepítésével és használatával kapcsolatos rövid útmutatót a bkmrks97.htm fájl tartalmazza. Tehát ez a cikk általános áttekintést nyújt a nyílt felületekről, és példákat ad használatukra. Ismételjük meg még egyszer: a nyílt felületekhez rendelkezésre álló forráskódoknak köszönhetően könnyen megértheti az Önt érdeklő részleteket. Reméljük, hogy a nyitott felületek által nyújtott lehetőségek sokfélesége egynél több merész és hasznos ötletet ad.

csak az eredményért

a határidők szigorú betartása

Átláthatóság

projekt kivitelezés

műszaki támogatás ajándékba

Programozás, módosítások, konzultációk az 1C-n

Hogyan dolgozunk

1. Telefonon megbeszéljük a problémát. Jelenlétében távoli hozzáférés- megjelenik a számítógép képernyőjén.

2. A munkát rubelben becsüljük meg, ha a projekt nagy, ha nem, akkor a hozzávetőleges órák számát.

3. Elvégezzük a munkát.

4. A programjában szereplő munkát elfogadja, ha hiányosságokat észlel, azt kijavítjuk.

5. Számlát állítunk ki, Ön fizet.

Munka költsége

1. Minden munka 3 kategóriába sorolható: konzultáció, szabványos konfiguráció frissítése, új jelentés kidolgozása vagy programozása, feldolgozás, gomb stb.

3. A 10 óránál hosszabb munkát előre fel kell készíteni. műszaki feladat leírással és a munka költségével. A munka azután kezdődik, hogy a műszaki előírásokat egyeztették Önnel.

Technikai támogatás

1. Ha a korábban átvett munkában 3 hónapon belül hibát talál, azt díjmentesen kijavítjuk.

2. Törzsvásárlóink ​​részére a munkánk hiányosságait egy éven belül díjmentesen kijavítjuk.

Szoftver a vállalkozás irányításához.

Vásároljon 1C:Enterprise

Mi vagyunk hivatalos kereskedő 1C cég, különféle termékeket vásárolhat tőlünk szoftver termékekés engedélyeket. A „doboz” megvásárlása mellett segítünk a program összeállításában, tanácsadással, alapbeállításokkal.

  • Könyvelés
  • Áruház automatizálás
  • Nagyker
  • Telepítési segítség és kezdeti beállítás a csomag tartalmazza!
  • Konfigurációk finomhangolása az ügyfelek igényei szerint, új modulok fejlesztése a szükséges funkciók hiányában a standard konfigurációban.
1c számvitel 1C: Kereskedelmi menedzsment 1C: Kiskereskedelem 1C: Fizetés és személyzeti menedzsment
3300 rubeltől. 6700 rubeltől. 3300 rubeltől. 7400 rubeltől.

Szerverellátás.

A szerver azonnali beállítása + 1C.

Nincs szerver? Nem probléma, kiválasztunk és gyorsan beállítunk egy szervert a felhőben. Kis költség ellenében nagyon megbízható megoldást kap.

  • Elérhetőség 24/7
  • Nem szükséges megtartani a sajátját rendszergazda(a megtakarítás fedezi a szerver költségeit).
  • Az 1C gyors telepítése és telepítése a szerverre, 3 nap múlva már teljesen működőképes rendszere lesz.
  • költözhetsz helyi szerver, ha a megoldás nem kielégítő.

SMS az 1C-től

Szeretné, ha ügyfelei értesülnének az akciókról és kedvezményekről? Az ügyfelek nem térnek vissza? Állítsa be az SMS-küldést közvetlenül az 1C-ről!

Cégünk gyorsan be tudja állítani az SMS küldését ügyfeleinek közvetlenül az 1C-ből. Példák az automatizálható eseményekre:

  • Köszönjük a vásárlást, és a bónuszokat a következő vásárlás után azonnal megkapjuk.
  • Bónuszok felhalmozása a kártyára születésnapi/egyéb jelentőségteljes vagy ünnepi ajándékként.
  • Értesítés az áruk raktárba érkezéséről.
  • Az ajándékbónuszok lejárata.
  • Értesítés az előleg beérkezéséről és az árufoglalásról.
  • Cím és útiterv az üzlethez/irodához, telefonszámok.
  • Stb.

Az 1C-ben történő beállítást szakembereink vagy az Ön alkalmazottai végezhetik el. A tarifákat az SMS tarifák oldalon tekintheti meg.

  • Garantált SMS kézbesítés, csak a kézbesített SMS után számítunk fel pénzt.
  • Minden SMS-re külön díjszabás.
  • Töltsd fel egyenlegedet különböző módokon.
  • Bármikor megtekintheti az összes elküldött SMS előzményét.
  • Az üzenet címzettjének telefonszámában szereplő digitális szám helyett a feladó neve.

Az objektum-orientált programozás (OOP) az osztály fogalma mellett az interfész alapfogalmát is tartalmazza.

Mi az interfész, és milyen jellemzői vannak a Delphi programozási nyelven való használatának?

Az interfész egy szemantikai és szintaktikai konstrukció a programkódban, amely egy osztály vagy összetevő által nyújtott szolgáltatások meghatározására szolgál (Wikipédia).

Lényegében egy interfész meghatározza azon tulajdonságok és metódusok listáját, amelyeket az interfész által megvalósított osztállyal való munka során kell használni, valamint ezek aláírását (név, adattípus, elfogadott paraméterek (eljárásokhoz és függvényekhez), stb.). Így egy adott interfészt megvalósító osztálynak minden összetevőjét implementálnia kell. Ráadásul szigorúan az abban leírtak szerint.

Az interfészeket gyakran hasonlítják össze absztrakt osztályokkal, de minden hasonlóság ellenére ez az összehasonlítás nem teljesen helyes. Az absztrakt osztályok legalább lehetővé teszik a tagok láthatóságának szabályozását. Ugyanakkor az interfészekhez nincsenek meghatározva hatókörök.

Az interfészek lehetővé teszik az architektúra rugalmasabbá tételét, mivel egységesítik az adott funkcióhoz való hozzáférést, és lehetővé teszik számos osztályörökléssel kapcsolatos probléma elkerülését (az interfészek örökölhetők egymástól is).

Interfész Delphiben deklarálásához használja az interface kulcsszót. Ez ugyanaz a kulcsszó, amely meghatározza a modul azon részét, amely kívülről (a felület és az implementációs kulcsszavak között) elérhető. Egy interfész deklarálásakor azonban más szintaxist használunk, hasonlóan az osztályok deklarálásához.

Delphi/Pascal

IMyNewInterface = interfész eljárás InterfaceProc; vége;

IMyNewInterface =interfész

eljárás InterfaceProc ;

vége ;

Így maga az interfész deklarációs szintaxisa alapvetően nem különbözik a többi programozási nyelvtől (a Pascal alapú szintaxis jellemzői nem számítanak). Ugyanakkor az interfészek megvalósításának számos jellemző tulajdonsága van.

A helyzet az, hogy a Delphi interfészt eredetileg a COM technológia támogatására vezették be. Ezért az IIinterface interfész, amely a Delphiben az összes többi interfész őse (a TObject egyfajta analógja), már három alapvető módszert tartalmaz ezzel a technológiával: QueryInterface, _AddRef, _Release. Ennek eredményeként, ha egy osztály valamilyen interfészt implementál, akkor ezeket a metódusokat is meg kell valósítania. Még akkor is, ha ezt az osztályt nem COM-munkára szánják.

Az IIinterface interfész ezen tulajdonsága miatt a Delphiben az interfészek használata a legtöbb esetben nyilvánvalóan kihasználatlan képességek hozzáadásához vezet az osztályhoz.

Van egy TInterfaceObject könyvtárosztály, amely már tartalmazza ezeknek a metódusoknak a megvalósítását, és ha öröklünk onnan, nincs szükség saját magunk implementálására. De mivel a Delphi nem támogatja a többszörös osztályöröklést, használata gyakran csak további nehézségeket okoz a már szükséges funkciók tervezésében és megvalósításában.

Mindez oda vezetett, hogy az interfészek adta lehetőségek ellenére ők gyakorlati használat A Delphiben szinte semmi sem ment túl a COM-mal való együttműködésen.

Mivel főként ezzel a technológiával működnek, az interfészek, vagy inkább az általuk szükségszerűen hozzáadott funkcionalitás és architektúra korlátozások nem indokolják magukat más problémák megoldása során.

Ezért sok Delphi programozó még mindig megfosztja az alkalmazásarchitektúra fejlesztésének hatékony és rugalmas eszközét.

Teremtés felület a felhasználó a program működéséhez szükséges komponensek palettájáról választhat Delphi alkatrészek, alkalmazottak felület menedzsment, valamint felület információk megjelenítése és átvitele az Űrlapra utólagos elrendezéssel.

A létrehozott felhasználói felületnek a felhasználók számára ismert szabványos elemeket kell használnia, és maximális kényelmet kell nyújtania. Mindezt végső soron egy olyan kritérium határozza meg, mint az interfész hatékonysága - maximális eredmény minimális erőfeszítéssel.
A felhasználóbarát felület létrehozásának elvei ismertek. Mint a legáltalánosabb alapelvek az alkotás során felhasználói felületek Három fő szempontot lehet figyelembe venni:

  1. A programnak segítenie kell egy feladat elvégzésében, nem pedig azzá válnia.
  2. Amikor a programmal dolgozik, a felhasználó ne érezze magát bolondnak.
  3. A programnak úgy kell működnie, hogy a felhasználó ne tartsa bolondnak a számítógépet.
Első elv- ez az interfész úgynevezett „átláthatósága”. A felhasználói felület legyen intuitív, könnyen megtanulható, és ne okozzon olyan problémákat a felhasználó számára, amelyeket a munkafolyamat során meg kell küzdenie. Használjon szabványos komponenseket szükségtelen díszítés nélkül, használja a hasonló programok által használt, megszokott vezérlési technikákat, és eléri a teljesítménykritériumokat első elv.

Második elv a felhasználók intellektuális képességeinek figyelmen kívül hagyása. Saját tapasztalatomból tudom, hogy a felhasználók gyakran nemcsak nem tudják, hogyan kell számítógépen dolgozni, hanem egyszerűen félnek bármit önállóan csinálni. Ezért a felhasználói felületnek a lehető legbarátságosabbnak kell lennie.
Sőt, a felhasználók félelmei gyakran jogosak, mert a program, sőt maga a számítógép költsége nem hasonlítható össze például egy sok éves erőfeszítéssel létrehozott adatbázis költségével. Éppen ezért a felhasználói felület létrehozásakor a programozónak mindig „bolondbiztos védelmet” kell beépítenie a programba - a helytelen műveletek és a hibás adatok felhasználói bevitele ellen. De egyes programozók túlságosan elragadtatják ezt a védelmet, túlságosan tolakodóvá teszik, és ennek eredményeként a program működése hasonlít a híres „egy lépést balra, egy lépést jobbra menekülésnek számít”! És amit a programozó létrehoz egy probléma megoldásaként, az maga kezd problémákat okozni.
Ahhoz második elv nincs szükség arra, hogy a program „korrigálja” a felhasználó cselekedeteit, és pontosan jelezze, hogyan kell cselekednie, szűk keretek közé kényszerítve. Ezenkívül nem szabad túlságosan elragadtatnia magát a tájékoztató jellegű üzenetek, különösen a párbeszédpanelek megjelenítésével, mivel ez elvonja a felhasználó figyelmét a munkáról. Jobb lenne, ha lehetőséget biztosítanánk a tippek teljes letiltására.

Harmadik elv egy olyan program létrehozása, amely a lehető legmagasabb "mentális" képességekkel rendelkezik. A gyors fejlődés ellenére számítógép tartozék, még a széles körben használt programokat is csak nagyon feltételesen nevezhetjük mesterséges intelligenciával rendelkezőknek. Zavarják a felhasználó munkáját azáltal, hogy párbeszédpaneleket jelenítenek meg hülye kérdésekkel, amelyek a legegyszerűbb helyzetekben is zavart okoznak. Ennek eredményeként a felhasználók szívükben felkiáltanak: „Micsoda hülye gép!”
Engem személy szerint irritálnak a szinte mindenki állandó kérdései szövegszerkesztők arról, hogy mentsük-e a módosított szöveget, bár az eredeti és a jelenlegi szöveg egyetlen szimbólumban sem különbözik. Igen, beírtam valamit, de aztán visszaadtam mindent, tényleg lehetetlen kitalálni! Meg kell néznem, hogy nem tettem-e tönkre valamit.

Próbálja meg betartani a következő szabályokat:

Szabványos interfész elemek
Ehhez az interfészelemhez szabványos összetevőket használjon. Miután találkozott a programjával, a felhasználó nem vesztegeti az időt az ismerkedésre, hanem azonnal elkezd dolgozni - ez a professzionálisan elkészített program egyik jele.
Kis szerszámpaletta
Lehetőleg ne használjon túl sok különböző összetevőt. És természetesen, ha egy standard komponenst használtunk valahol egy helyen, hasonló esetben használjuk is.
Egyenlő távolság a vezérlőelemek között
Helyezze az interfész elemeket egymástól azonos távolságra. A véletlenül szétszórt alkatrészek a szakszerűtlenül készült termék érzetét keltik. És fordítva, az űrlap felületét alkotó gombok, kapcsolók, jelölőnégyzetek és egyéb alkatrészek gondosan ellenőrzött elhelyezése a minőségi munka jele.
TabOrder. "Helyes sorrendben
TabOrder az a sorrend, amelyben a képernyő kurzora a vezérlőkön mozog, amikor egy billentyűt lenyomnak Tab. Egy megfelelően megírt programban a kurzor a felhasználó programozási logikáját követve mozog. A program létrehozásakor a programozó gyakran módosítja az összetevőket, egyeseket eltávolít, és szükség szerint hozzáad másokat. Ennek eredményeként a kész programban a kurzor kaotikusan ugrik a Form körül. A program befejezése után ne felejtse el konfigurálni TabOrder.
Betűtípus kiválasztása
Csak hagyd békén a betűtípusokat. A Delphi alapértelmezett betűtípusai alkalmasak minden olyan rendszerhez, amelyen a program futhat. Csak a fontos elemek kiemeléséhez használjon félkövér betűtípust. Alkalmazás dőlt betűés főleg aláhúzás, amelyet a felhasználó összetéveszthet hiperhivatkozással, rossz formátumú.
Színválaszték
Ami az interfész elemek színeit illeti, csakúgy, mint a betűtípusok esetében, jobb alapértelmezés szerint szabványosnak hagyni. A Delphi a Windows rendszerpalettáját használja, melynek megváltoztatásával a felhasználó egyszerűen testreszabhatja a színeket.
Alternatív menedzsment
Egy professzionálisan elkészített program ne csak egérrel, hanem billentyűzettel is vezérelhető legyen. Ne legyenek olyan funkciók, amelyeket csak egérrel lehet végrehajtani (rajzolás a grafikus szerkesztők nem számít!). A leggyakrabban használt funkciókhoz „gyorsbillentyűket” kell biztosítani a gyors hozzáférés érdekében.
Interfész téglák
Ami a felhasználói felület egyes elemeit illeti, a programmal való felhasználói interakció minősége a következőktől függ:
  • a vezérlőelem megfelelése az általa ellátott feladatnak;
  • szabályok, amelyek szerint a vezérlőelem működik.
    Ez az oldal néhány felületelem létrehozásának szabályait tárgyalja.
És most szeretném megmutatni, hogy a Delphi milyen eszközöket kínál az űrlapon lévő komponensek kezeléséhez, ezek relatív helyzetét és a kurzor viselkedését egy billentyű lenyomásakor. Tab.

Az összetevők egymáshoz viszonyított megfelelő sorrendbe rendezéséhez először szükséges kiemelni őket. Egyszerűen bekarikázhatja az űrlapon azt a területet, amely a kiválasztott összetevőket tartalmazza. Vagy tartsa lenyomva a " Váltás", használja ugyanazt az egeret az egyes kiválasztandó összetevők jelzésére. Kattintson ismét az egérrel a kiválasztott összetevőre (a "" gomb lenyomása közben Váltás") törli a kijelölést.

A kiválasztott összetevők egyetlen egészként kezelhetők - mozgathatók az űrlapon, értékeket rendelhetnek ugyanazokhoz a tulajdonságokhoz, másolhatók (például telepítéshez egy másik űrlapra), akár törölhetők is.

Most kattintson a jobb gombbal az egyik összetevőre, és válassza ki az előugró menüből Pozíció -> Igazítás... Megjelenik egy párbeszédpanel, amelyen beállíthatja a csoport összetevőinek vízszintes és függőleges helyzetét. Például a négy gombunkat balra kell igazítanunk, és meg kell győződnünk arról, hogy azonos függőleges távolságra vannak közöttük. Ehhez válassza ki a rádiógombokat Vízszintes: bal oldalonÉs Függőleges: Egyenlő tér.

Az elem kiválasztásával Központ, az alkatrészeket úgy rendezzük el, hogy a középpontjuk vízszintesen vagy függőlegesen ugyanabban a sorban legyen, és az elem Középre az ablakban az elemeket az ablak közepére mozgatja, vízszintesen vagy függőlegesen is.

Ugyanabban a menüsorban Tab O rder... párbeszédpanel jelenik meg, amely szabályozza, hogy a kurzor hogyan mozogjon az interfész elemei között, amikor egy billentyűt lenyomnak Tab. Amikor az Űrlap megjelenik a képernyőn, a kurzor természetesen a párbeszédpanel első sorában található komponensen lesz. És akkor lejjebb kerül a listán. A párbeszédpanelen két kék fel és le nyíl szabályozza a kiválasztott komponens pozícióját. Válassza ki a kívánt összetevőt, a nyilak segítségével mozgassa a listában a kívánt sorra, és így tovább.

Menüpont kiválasztásakor Vezérlés -> Megjelenik egy almenü, amely két elemből áll:

  • Előre hoz
  • Küld vissza
Ezek olyan összetevő metódusok, amelyek programozottan is elérhetők. Button1.SendToBack mozgatja a gombot a "háttérbe" és Button1.BringTo Front- előre hoz". Azaz, ha az egyik komponens a másik fölé kerül, ezek a módszerek felcserélik a pozíciójukat. Az esetek, amelyekben ez alkalmazható, meglehetősen nyilvánvalóak.


Top