Funkcie práce s rozhraniami v Delphi. Najlepšie IT riešenia pre firmy Veľkosti okien by nemali presahovať veľkosť obrazovky

len kvôli výsledkom

prísne dodržiavanie termínov

Transparentnosť

realizácia projektu

technická podpora ako darček

Programovanie, vylepšenia, konzultácie o 1C

Ako pracujeme

1. Problém prediskutujeme telefonicky. V prítomnosti vzdialený prístup- zobraziť na obrazovke počítača.

2. Hodnotíme prácu v rubľoch, ak je projekt veľký, ak nie - približný počet hodín.

3. Splníme úlohu.

4. Prijímate prácu vo svojom programe, ak sú nedostatky, opravujeme ich.

5. Vystavíme faktúru, zaplatíte.

Náklady na prácu

1. Všetky práce sú rozdelené do 3 kategórií: konzultácia, aktualizácia typickej konfigurácie, vývoj alebo programovanie novej zostavy, spracovanie, tlačidlá atď.

3. Pre prácu nad 10 hodín je vopred pripravená technická úloha s popisom a cenou práce. Práca začína po schválení TOR s vami.

Technická podpora

1. Ak nájdete chyby v predtým prijatých prácach, do 3 mesiacov ich bezplatne opravíme.

2. Pre stálych zákazníkov opravujeme nedostatky v našej práci bezplatne do roka.

Programy na riadenie vášho podnikania.

Kúpte si 1C:Enterprise

Sme oficiálnym predajcom 1C, u nás si môžete kúpiť rôzne softvérové ​​produkty a licencií. Okrem kúpy „krabičky“ vám pomôžeme s nastavením programu, konzultáciou a základným nastavením.

  • účtovníctvo
  • Automatizácia obchodu
  • Veľkoobchod
  • Pomoc s inštaláciou a pôvodné nastavenie súčasťou balenia!
  • Dolaďovanie konfigurácií podľa potrieb zákazníka, vývoj nových modulov pri absencii potrebných funkcií v štandardnej konfigurácii.
1c účtovníctvo 1C: Riadenie obchodu 1C: Maloobchod 1C: Riadenie miezd a ľudských zdrojov
Od 3300 rubľov. Od 6700 rubľov. Od 3300 rubľov. Od 7400 rubľov.

Poskytovanie servera.

Server okamžitého nastavenia + 1C.

Žiadny server? Nevadí, vyberieme a rýchlo nastavíme server v „cloude“. Za malý poplatok získate veľmi spoľahlivé riešenie.

  • Dostupnosť 24/7
  • Netreba si nechávať vlastné systémový administrátor(úspory pokryjú náklady na váš server).
  • Rýchle nastavenie a inštalácia 1C na server, za 3 dni už budete mať plne funkčný systém.
  • Kedykoľvek sa môžete presťahovať do lokálny server ak riešenie nie je uspokojivé.

SMS z vášho 1C

Chcete, aby sa zákazníci dozvedeli o akciách a zľavách včas? Klienti sa nevracajú? Prispôsobiť odosielanie SMS priamo z 1C!

Naša spoločnosť bude vedieť rýchlo nastaviť posielanie SMS vašim zákazníkom priamo od 1C. Príklady udalostí, ktoré možno automatizovať:

  • Vďačnosť za nákup a získanie bonusov ihneď po ďalšom nákupe.
  • Pripisovanie bonusov ku karte ako darček k narodeninám/inému významnému či sviatočnému dňu.
  • Oznámenie o sklade.
  • Platnosť darčekovej poukážky.
  • Oznámenie o prijatí platby vopred a rezervácii tovaru.
  • Adresa s trasou do obchodu/kancelárie, telefónne čísla.
  • Atď.

Nastavenie v 1C môžu vykonať naši špecialisti alebo naši zamestnanci. S tarifami sa môžete zoznámiť na stránke SMS-tarify.

  • Záruka Doručovanie SMS, peniaze sa sťahujú len za doručené SMS.
  • Samostatná fakturácia pre každú SMS.
  • Dopĺňanie zostatku rôznymi spôsobmi.
  • Zobrazte si históriu všetkých odoslaných SMS kedykoľvek.
  • Meno odosielateľa namiesto číselného čísla na telefóne príjemcu.

Tvorba rozhranie používateľ je zredukovaný na to, aby si z palety komponentov vybral komponenty Delphi potrebné na to, aby program fungoval a slúžil rozhranie manažment, ako aj rozhranie zobrazenie informácií a ich prenos do Formulára s následným rozložením.

Používateľské rozhranie, ktoré vytvoríte, by malo používať štandardné, používateľovi známe prvky a poskytovať maximálne pohodlie. To všetko v konečnom dôsledku určuje také kritérium, ako je účinnosť rozhrania - maximálny výsledok s minimálnym úsilím.
Princípy tvorby užívateľsky prívetivé rozhranie známy. ako najviac všeobecné zásady pri tvorbe používateľské rozhrania možno zvážiť tri hlavné body:

  1. Program by mal pomôcť splniť úlohu, nie sa ňou stať.
  2. Pri práci s programom by sa používateľ nemal cítiť ako hlupák.
  3. Program by mal fungovať tak, aby používateľ nepovažoval počítač za blázna.
Prvá zásada- ide o takzvanú "transparentnosť" rozhrania. Používateľské rozhranie by malo byť intuitívne, ľahko sa učiť a nevytvárať používateľovi problémy, ktoré bude musieť prekonať v procese práce. Používajte štandardné, bez nadmerných ozdobných komponentov, používajte známe, používané podobné programy techniky riadenia a dosiahnete výkonnostné kritériá prvý princíp.

Druhý princíp spočíva v zanedbaní intelektuálne schopnosti používateľov. Z vlastnej skúsenosti viem, že často používatelia nielenže nevedia pracovať za počítačom, ale jednoducho sa boja čokoľvek sami robiť. Používateľské rozhranie by preto malo byť čo najprívetivejšie.
Obavy používateľov sú navyše často opodstatnené, pretože náklady na program a samotný počítač sa nedajú porovnávať napríklad s nákladmi na databázu vytvorenú dlhoročným úsilím. Preto musí programátor pri vytváraní používateľského rozhrania vždy zabudovať do programu „ochranu bláznov“ – pred nesprávnymi úkonmi a užívateľským zadaním nesprávnych údajov. Niektorí programátori sa však s takouto ochranou nechajú príliš uniesť, robia ju príliš rušivou a v dôsledku toho fungovanie programu pripomína známe „krok doľava, krok doprava sa považuje za únik“! A to, čo programátor vytvorí ako riešenie problému, samo začne vytvárať problémy.
Vyhovieť druhý princíp nie je potrebné dovoliť programu, aby „opravoval“ akcie používateľa a naznačoval, čo presne má zaňho konať, čím ho tlačí do úzkeho rámca. Tiež by ste sa nemali nechať príliš uniesť zobrazovaním informačných nápovedných správ, najmä dialógových, pretože to odvádza pozornosť používateľa od práce. A je lepšie poskytnúť možnosť úplne zakázať výzvy.

Tretia zásada je vytvoriť program s čo najväčšími „duševnými“ schopnosťami. Napriek rýchlemu vývoju počítačová technológia Dokonca aj rozšírené programy možno len veľmi podmienečne nazvať tým, že majú umelú inteligenciu. Zobrazovaním zasahujú do používateľského zážitku dialógové okná s hlúpymi otázkami, ktoré spôsobujú zmätok aj v tých najjednoduchších situáciách. Výsledkom je, že používatelia vo svojich srdciach zvolajú: "No, toto auto je hlúpe!"
Mňa osobne rozčuľujú neustále otázky takmer každého. textové editory o tom, či sa má zmenený text uložiť, hoci pôvodný a aktuálny text sa nelíšia o jediný znak. Áno, niečo som napísal, ale potom som všetko vrátil späť, je naozaj nemožné na to prísť! Musím skontrolovať, či som niečo nepokazil.

Pokúste sa dodržiavať nasledujúce pravidlá:

Štandardné prvky rozhrania
Použite štandard pre daný prvok komponentné rozhranie. Po zoznámení sa s vaším programom používateľ nestráca čas spoznávaním sa, ale okamžite začne pracovať - ​​to je jeden zo znakov profesionálne vytvoreného programu.
Malá paleta nástrojov
Snažte sa nepoužívať príliš veľa veľký počet rôzne komponenty. A samozrejme pomocou jedného štandardného komponentu niekde na jednom mieste ho v podobnom prípade aj použiť.
Rovnaký odstup medzi ovládacími prvkami
Usporiadajte prvky rozhrania v rovnakej vzdialenosti od seba. Náhodne rozmiestnené komponenty vytvárajú pocit neprofesionálneho produktu. A naopak, starostlivo kalibrované umiestnenie na Forme tlačidiel, prepínačov, zaškrtávacích políčok a ďalších komponentov, ktoré tvoria rozhranie, je znakom kvalitnej práce.
poradie kariet. "správne poradie
TabOrder je poradie, v ktorom sa kurzor na obrazovke pohybuje nad ovládacími prvkami pri stlačení klávesu Tab. V správne napísanom programe sa kurzor pohybuje podľa logiky práce užívateľa s programom. Pri vytváraní programu programátor často komponenty mení, niektoré odoberá a podľa potreby pridáva ďalšie. Výsledkom je, že v dokončenom programe kurzor náhodne preskočí cez formulár. Po dokončení programu nezabudnite nastaviť TabOrder.
Výber písma
Nechajte písma na pokoji. Vlastné predvolené fonty Delphi budú fungovať pre akýkoľvek systém, na ktorom môže bežať váš program. Tučné písmo používajte iba na zvýraznenie dôležitých prvkov. Aplikácia kurzíva a hlavne podčiarknutie, ktorý si používateľ môže pomýliť s hypertextovým odkazom – zlý tvar.
Výber farieb
Čo sa týka farieb prvkov rozhrania, rovnako ako v prípade fontov, je lepšie ich štandardne ponechať štandardné. Delphi používa systémovú paletu Windows a jej zmenou si používateľ môže jednoducho prispôsobiť farby pre seba.
Alternatívny manažment
Profesionálne vyrobený program by sa mal dať ovládať nielen myšou, ale aj klávesnicou. Nemali by byť dostupné žiadne funkcie na vykonávanie iba myšou (kresba v grafických editoroch sa nepočíta!). Pre najpoužívanejšie funkcie by mali byť k dispozícii „klávesové skratky“ pre ich rýchly prístup.
Stavebné bloky rozhrania
Pokiaľ ide o špecifické prvky používateľského rozhrania, kvalita interakcie používateľa s programom závisí od:
  • súlad riadiaceho prvku s jeho úlohou;
  • pravidlá, podľa ktorých kontrola funguje.
    Táto stránka pojednáva o pravidlách vytvárania niektorých prvkov rozhrania.
A teraz chcem ukázať, aké nástroje ponúka Delphi na správu komponentov vo formulári, ich relatívnu polohu a správanie kurzora pri stlačení klávesu. Tab.

Aby ste usporiadali komponenty navzájom v správnom poradí, najprv treba ich zvýrazniť. Môžete jednoducho potiahnuť myšou cez oblasť formulára, ktorá obsahuje vybrané komponenty. Alebo držaním Shift", tou istou myšou zadajte každý komponent, ktorý sa má vybrať. Opakované kliknutie myšou na vybraný komponent (súčasne stlačené " Shift") zruší výber.

Vybrané komponenty je možné spravovať ako jeden celok – presúvať po Formulári, priraďovať hodnoty k rovnakým vlastnostiam, kopírovať (na inštaláciu napr. na iný Formulár), dokonca aj mazať.

Teraz kliknite pravým tlačidlom myši na jeden z komponentov az "vyskakovacieho" menu vyberte Pozícia -> Zarovnať... Zobrazí sa dialógové okno, ktoré vám umožní upraviť polohu komponentov v skupine horizontálne a vertikálne. Napríklad musíme zarovnať naše štyri tlačidlá doľava a uistiť sa, že medzi nimi je rovnakú vzdialenosť vertikálne. Ak to chcete urobiť, vyberte prepínače Horizontálne: ľavé strany a Vertikálne: Priestor rovnomerne.

Výber položky centrum, rozmiestnime súčiastky tak, že ich stredy budú umiestnené na rovnakej čiare horizontálne alebo vertikálne a bod Stred v okne presunie komponenty do stredu okna, horizontálne alebo vertikálne.

V tej istej ponuke riadok Tab O objednať... spôsobí zobrazenie dialógového okna, ktoré riadi pohyb kurzora cez prvky rozhrania pri stlačení klávesu Tab. Keď sa na obrazovke objaví formulár, kurzor bude prirodzene na komponente umiestnenom v prvom riadku dialógového okna. A potom sa posunie nadol v zozname. V dialógovom okne dve modré šípky „hore“ a „dole“ ovládajú polohu vybratého komponentu. Zlatý klinec požadovaný komponent, pomocou šípok prejdite na požadovaný riadok v zozname atď.

Pri výbere položky ponuky Ovládanie -> Zobrazí sa podponuka s dvoma položkami:

  • Preniesť dopredu
  • poslať späť
Ide o komponentné metódy, ktoré sú dostupné aj programovo. Button1.SendToBack presunie tlačidlo do „pozadia“ a Button1.BringToFront- priviesť dopredu“. To znamená, že ak je jeden komponent umiestnený nad druhým, tieto metódy ich vymenia. Prípady, v ktorých to môže platiť, sú celkom zrejmé.

Objektovo orientované programovanie (OOP) okrem konceptu triedy poskytuje aj základný koncept rozhrania.

Čo je to rozhranie a aké sú vlastnosti práce s ním v programovacom jazyku Delphi?

Rozhranie je sémantická a syntaktická konštrukcia v programovom kóde používaná na špecifikáciu služieb poskytovaných triedou alebo komponentom (Wikipedia).

V skutočnosti rozhranie definuje zoznam vlastností a metód, ktoré by sa mali použiť pri práci s triedou, ktorá implementuje toto rozhranie, ako aj ich podpis (názov, typ údajov, akceptované parametre (pre procedúry a funkcie) atď.). Teda trieda, ktorá implementuje rozhranie, musí nevyhnutne implementovať všetky jeho komponenty. Navyše v prísnom súlade s tým, ako sú v ňom opísané.

Rozhrania sa veľmi často porovnávajú s abstraktnými triedami, ale napriek všetkým podobnostiam toto porovnanie nie je úplne správne. V abstraktných triedach je k dispozícii minimálne kontrola nad viditeľnosťou členov. Zároveň nie sú definované rozsahy pre rozhrania.

Rozhrania vám umožňujú urobiť architektúru flexibilnejšou, pretože zjednocujú prístup ku konkrétnej funkcionalite a tiež vám umožňujú vyhnúť sa množstvu problémov spojených s dedením tried (rozhrania možno dediť aj jedno od druhého).

Delphi používa kľúčové slovo interface na deklarovanie rozhrania. Toto je rovnaké kľúčové slovo, ktoré definuje sekciu modulu, ku ktorej je možné pristupovať zvonku (medzi Kľúčové slová rozhranie a implementácia). Pri deklarovaní rozhrania sa však používa iná syntax, podobne ako pri deklarovaní tried.

Delphi/Pascal

IMyNewInterface = procedúra rozhrania InterfaceProc; koniec;

IMyNewInterface = rozhranie

procedúra InterfaceProc ;

koniec ;

Samotná syntax deklarácie rozhrania teda nemá žiadne zásadné rozdiely od iných programovacích jazykov (funkcie syntaxe založené na Pascal sa nepočítajú). Implementácia rozhraní má zároveň množstvo charakteristických čŕt.

Faktom je, že rozhrania Delphi boli pôvodne zavedené na podporu technológie COM. Preto rozhranie IInterface, ktoré je v Delphi predchodcom všetkých ostatných rozhraní (akýsi analóg TObject), už obsahuje tri základné metódy pre prácu s touto technológiou: QueryInterface, _AddRef, _Release. V dôsledku toho, ak trieda implementuje akékoľvek rozhranie, potom musí implementovať aj tieto metódy. Aj keď táto trieda nie je navrhnutá na prácu s COM.

Vďaka tejto vlastnosti rozhrania IInterface vedie v Delphi používanie rozhraní vo väčšine prípadov k pridávaniu zjavne nepoužívaných funkcií do triedy.

Existuje knižničná trieda TInterfaceObject, ktorá už implementáciu týchto metód obsahuje a pri dedení z nej nie je potrebné ich implementovať sami. Ale keďže Delphi nepodporuje viacnásobnú dedičnosť tried, jeho použitie často spôsobuje len ďalšiu zložitosť pri návrhu a implementácii už požadovanej funkcionality.

To všetko viedlo k tomu, že napriek všetkým možnostiam, ktoré rozhrania poskytujú, ich praktické využitie v Delphi takmer nepresahovalo rámec práce s COM.

Tým, že sú optimalizované na prácu hlavne s touto technológiou, rozhrania, či skôr funkčnosť a architektonické obmedzenia, ktoré bez problémov pridávajú, sa pri riešení iných problémov neospravedlňujú.

Mnoho programátorov Delphi je preto v skutočnosti stále zbavených výkonného a flexibilného nástroja na vývoj aplikačnej architektúry.

Tento článok je založený na otázkach na fórach: "Ako vrátim reťazec z knižnice DLL?", "Ako odovzdám a vrátim pole záznamov?", "Ako odošlem formulár do knižnice DLL?".

Aby ste nestrávili polovicu života vymýšľaním - v tomto článku prinesiem všetko na striebornom podnose.

Témy tohto článku sa už v tomto blogu v rôznej miere dotkli viackrát, ale v tomto článku sú zhromaždené v hromade, sú uvedené odôvodnenia. Stručne povedané, odkaz na tento článok môže byť hodený na tých, ktorí vyvíjajú DLL.

Dôležitá poznámka: článok treba prečítať postupne. Príklady kódu sú uvedené len ako príklady, v každom kroku (bode) článku je pridaný kód príkladov s novými podrobnosťami. Napríklad na samom začiatku článku nie je žiadne spracovanie chýb, sú naznačené „klasické“ metódy (ako napríklad použitie GetLastError , konvencie sdtcall atď.), ktoré sú v priebehu článku nahradené adekvátnejšími. Deje sa tak z toho dôvodu, že „nové“ („nezvyčajné“) dizajny nevyvolávajú otázky. V opačnom prípade by bolo potrebné pri každom príklade vložiť poznámku vo formulári: "o tom sa hovorí v tom odseku nižšie, ale o tom - v tomto tu." V každom prípade na konci článku je odkaz na hotový kód napísaný s prihliadnutím na všetko, čo je v článku uvedené. Môžete si ho jednoducho vziať a použiť. A článok vysvetľuje prečo a prečo. Ak vás nezaujíma "prečo a prečo" - prejdite na koniec na záver a odkaz na stiahnutie príkladu.

Jeden a najviac silné stránky Programovacie prostredie Delphi je svojou otvorenou architektúrou, vďaka ktorej Delphi umožňuje akési metaprogramovanie, umožňujúce „naprogramovať programovacie prostredie“. Tento prístup prináša Delphi na kvalitatívne novú úroveň systémov vývoja aplikácií a umožňuje vám vkladať ďalšie nástrojov ktoré podporujú takmer všetky fázy tvorby aplikačných systémov. Takáto široká škála možností sa otvára vďaka konceptu takzvaných otvorených rozhraní implementovaných v Delphi, ktoré sú prepojením medzi IDE (Integrated Development Environment) a externými nástrojmi.

Tento článok sa zameriava na otvorené rozhrania Delphi a poskytuje prehľad funkcií, ktoré poskytujú. Delphi definuje šesť verejných rozhraní: Tool Interface, Design Interface, Expert Interface, File Interface, Edit Interface a Version Control Interface. Je nepravdepodobné, že by sme v rámci tohto článku dokázali podrobne pokryť a ilustrovať možnosti každého z nich. Zdrojové texty Delphi vám pomôžu dôkladnejšie porozumieť zvažovaným problémom, pretože ich vývojári poskytli podrobnými komentármi. Deklarácie tried, ktoré predstavujú verejné rozhrania, sú obsiahnuté v zodpovedajúcich moduloch v adresári ...\Delphi\Source\ToolsAPI. Dizajnové rozhranie (modul DsgnIntf.pas) poskytuje prostriedky na vytváranie editorov vlastností a editorov komponentov.

Editory vlastností a komponentov sú témou hodnou samostatnej diskusie, preto si len pripomíname, že editor vlastností riadi správanie inšpektora objektov, keď sa pokúsite zmeniť hodnotu zodpovedajúcej vlastnosti, a editor komponentov sa aktivuje, keď dvojité kliknutieľavým tlačidlom myši na obrázku komponentu umiestneného vo formulári. Rozhranie správy verzií (modul VCSIntf.pas) je určené na vytváranie systémov správy verzií. Počnúc verziou 2.0 podporuje Delphi integrovaný systém správy verzií Intersolv PVCS, takže vo väčšine prípadov nie je potrebné vyvíjať vlastný systém. Z tohto dôvodu tiež vynecháme zváženie rozhrania kontroly verzií. File Interface (modul FileIntf.pas) vám umožňuje predefinovať pracovný súborový systém IDE, čo umožňuje zvoliť si vlastný spôsob ukladania súborov (napríklad v poliach Memo na databázovom serveri). Rozhranie úprav (modul EditIntf.pas) poskytuje prístup k vyrovnávacej pamäti zdrojového textu, ktorá vám umožňuje analyzovať a generovať kód, určiť a zmeniť polohu kurzora v okne editora kódu a ovládať zvýrazňovanie syntaxe zdrojového textu.

Špeciálne triedy poskytujú rozhrania pre komponenty umiestnené vo formulári (definovanie typu komponentu, získavanie odkazov na nadradené a podradené komponenty, prístup k vlastnostiam, odovzdávanie zamerania, mazanie atď.), na samotný formulár a na zdrojový súbor projektu. Rozhranie úprav tiež umožňuje identifikovať takzvané oznamovače modulov, ktoré určujú reakciu na udalosti, ako je zmena zdrojového kódu modulu, úprava formulára, premenovanie komponentu, uloženie, premenovanie alebo vymazanie modulu, zmena zdroja projektu Tool Interface (modul ToolIntf. pas) poskytuje vývojárom prostriedky na získanie všeobecné informácie o stave IDE a vykonávaní akcií, ako je otváranie, ukladanie a zatváranie projektov a jednotlivé súbory, vytvorenie modulu, získanie informácií o aktuálnom projekte (počet modulov a formulárov, ich názvy a pod.), registrácia systém súborov, organizácia rozhraní k jednotlivým modulom a pod. Okrem oznamovačov modulov definuje Rozhranie nástrojov oznamovače doplnkov, ktoré upozorňujú na také udalosti, ako je otváranie/zatváranie súborov a projektov, načítanie a ukladanie súboru pracovnej plochy projektu, pridanie/vylúčenie modulov projektu, inštalácia/odinštalovanie balíkov, kompilácia projektu, av Na rozdiel od modulárnych oznamovačov vám oznamovače doplnkov umožňujú zrušiť vykonávanie niektorých udalostí.

Rozhranie nástrojov navyše poskytuje prostriedky na prístup k hlavnej ponuke IDE Delphi, čo vám umožňuje vkladať do nej ďalšie položky. Expertné rozhranie (modul ExptIntf.pas) je základom pre vytváranie odborných poradcov - softvérové ​​moduly, vložené do IDE s cieľom rozšíriť jeho funkčnosť. Príkladom odborníka je Delphi Database Form Wizard, ktorý vygeneruje formulár na prezeranie a úpravu obsahu databázovej tabuľky. Po definovaní triedy expertov sa musíme uistiť, že sa Delphi „učí“ o našom expertovi. Ak to chcete urobiť, musíte ho zaregistrovať volaním procedúry RegisterLibraryExpert a odovzdať mu inštanciu triedy expert ako parameter. Pre ilustráciu si vytvoríme jednoduchého experta na štýl esStandard, ktorý po zvolení príslušnej položky menu Delphi zobrazí správu, že je spustený. Ako môžete vidieť z tabuľky vyššie, štýl esStandard vyžaduje na prepísanie šesť metód:

Aby bol expert „aktivovaný“, musíte vybrať položku ponuky Komponent/Inštalovať komponent ... , v dialógovom okne Prehľadávať vybrať modul obsahujúci experta (v našom prípade exmpl_01.pas), kliknúť na tlačidlo OK a po zostavení balík dclusr30.dpk v hlavnom menu Delphi v sekcii Pomocník by sa mala objaviť položka Simple Expert 1, po výbere sa zobrazí informačná správa „Štandardný expert spustený!“. Prečo Delphi umiestňuje položku expertného menu do sekcie Pomocník, zostáva záhadou. Ak sa vám nepáči, že sa položka ponuky zobrazuje kdekoľvek v Delphi a nie tam, kde chcete, je možná nasledujúca možnosť: vytvorte experta na štýl doplnkov, ktorý eliminuje automatické vytváranie položky ponuky a pridajte položku ponuky „ručne“ pomocou rozhrania nástroja. To vám umožní ľubovoľným spôsobom nastaviť umiestnenie novej položky v hlavnom menu.

Na pridanie položky ponuky sa používa trieda TIToolServices - základ rozhrania nástroja - a triedy TIMainMenuIntf, TIMenuItemIntf, ktoré implementujú rozhrania k hlavnej ponuke IDE a jej položkám. Inštancia ToolServices triedy TIToolServices je vytvorená samotným IDE, keď je inicializovaná. Upozorňujeme, že za uvoľnenie rozhraní do hlavnej ponuky Delphi a jej položiek zodpovedá vývojár. Po ceste si trochu skomplikujeme funkčnú záťaž Expertného poradcu: pri aktivácii jeho položky menu vydá certifikát o názve projektu otvoreného v r. tento moment v prostredí: V tomto príklade je centrálne miesto obsadené funkciou AddIDEMenuItem, ktorá pridáva položku ponuky do hlavnej ponuky IDE Delphi. Ako parametre sa odovzdáva text novej položky menu, jej identifikátor, identifikátor položky, pred ktorú sa nová položka vkladá, symbolické znázornenie klávesu, ktoré spolu s kláves Ctrl možno použiť na rýchly prístup na novú položku a obsluhu udalosti zodpovedajúcu výberu novej položky. Pred položku Hodinky sme do sekcie Zobraziť pridali novú položku ponuky.

Teraz sa zoznámime s oznamovateľmi. Poďme definovať oznamovač doplnku, ktorý sleduje momenty zatvárania/otvárania projektov a podľa toho upraví pole, v ktorom je uložený názov aktívny projekt(Pre stručnosť vynechám implementáciu metód, ktoré sa oproti predchádzajúcemu príkladu nezmenili): Na implementáciu notifikátora sme definovali triedu TAddInNotifier, ktorá je potomkom TIAddInNotifier a prepísali sme metódu FileNotification. IDE zavolá túto metódu vždy, keď sa vyskytne udalosť, na ktorú môže notifikátor doplnku reagovať (každá takáto udalosť je označená zodpovedajúcou konštantou typu TFileNotification). Pole Expert v triede TAddInNotifier sa používa na spätná väzba s odborníkom (metóda TAddInNotifier.FileNotification). V znaleckom deštruktore sa registrácia oznamovateľa odhlási a oznamovateľ sa zničí. Teraz si ukážme použitie modulárnych oznamovačov. Vytvorme experta na doplnok, ktorý generuje správy o každom úkone uloženia súboru projektu (pre stručnosť neuvádzame implementáciu nám už známych metód): V tomto príklade expert na doplnok monitoruje udalosti zodpovedajúce otváranie/uzatváranie projektov.

Pri každom otvorení projektu sa zaregistruje oznamovač modulu zodpovedajúci súboru projektu. Z hľadiska implementácie sú modulárne notifikátory podobné doplnkovým notifikátorom: definujeme triedu TModuleNotifier, ktorá je potomkom triedy TIModuleNotifier a prepíšeme jej metódy Notify a ComponentRenamed. IDE volá metódu Notify, keď nastanú určité udalosti súvisiace s týmto modulom; v rámci tejto metódy sa určuje reakcia na konkrétnu udalosť. Metóda ComponentRenamed sa volá, keď sa zmení názov komponentu, ktorý je vo formulári modulu. Upozorňujeme, že túto metódu nepoužívame, ale musíme ju prepísať, inak sa pri zmene názvu komponentu zavolá abstraktná metóda základnej triedy, čo vedie k nepredvídateľným následkom.

Registrácia oznamovača modulu je o niečo zložitejšia ako registrácia doplnku oznamovača: najprv získame rozhranie modulu (TIModuleInterface) a potom zaregistrujeme oznamovateľa pomocou rozhrania modulu. Keď je projekt zatvorený, oznamovač modulu sa odregistruje (opäť pomocou TIModuleInterface) a oznamovač sa zničí. Na záver si ukážeme, ako môžete určiť polohu kurzora v okne editora kódu. Vytvorme expertného poradcu, ktorý po zvolení príslušnej položky menu zobrazí správu obsahujúcu názov aktívneho súboru a polohu kurzora v ňom (uvedená je implementácia iba metód, ktoré sú pre tento príklad nevyhnutné): Na určenie polohy kurzora musíme prijať nasledujúcu postupnosť rozhraní: modulové rozhranie (TIModuleInterface); rozhranie editora kódu (TIEditorInterface); rozhranie zobrazenia modulu v okne editora (TIEditView).

Ak je pri výbere položky expertného menu aktívny aktívny súbor so zdrojovým textom (*.pas), zobrazí sa hlásenie s názvom aktívneho súboru a aktuálnou pozíciou kurzora v ňom. Ak aktívny súbor nie je pas súbor, nevydá sa žiadna správa. Na získanie názvu aktívneho súboru sa používa metóda GetCurrentFile triedy TIToolServices. Toto uzatvára našu diskusiu o spôsoboch používania verejných rozhraní. CD-ROM obsahuje zdrojový kód všetkých uvedených príkladov. CD-ROM obsahuje aj zložitejší a rozšírený príklad, ktorý obsahuje experta na doplnky, ktorý používateľovi umožňuje uložiť zdrojový kód modulov Delphi do záložiek. Rýchly návod na inštaláciu a používanie Bookmark Expert je obsiahnutý v súbore bkmrks97.htm. V tomto článku sú teda verejné rozhrania diskutované všeobecne a sú uvedené príklady ich použitia. Opäť vďaka dostupnosti zdrojových kódov otvorených rozhraní ľahko pochopíte detaily, ktoré vás zaujímajú. Dúfame, že množstvo ponúkaných príležitostí otvorené rozhrania, vám dá nejeden odvážny a užitočný nápad.