Delphi liidestega töötamise omadused. Parimad IT-lahendused ettevõtetele Akende suurus ei tohiks ületada ekraani suurust

ainult tulemuste pärast

tähtaegadest rangelt kinni pidades

Läbipaistvus

projekti elluviimine

kingituseks tehniline tugi

Programmeerimine, täiustused, konsultatsioonid 1C kohta

Kuidas me töötame

1. Arutame probleemi telefoni teel. juuresolekul kaugjuurdepääs- näidata oma arvutiekraanil.

2. Hindame tööd rublades, kui projekt on suur, kui mitte - ligikaudne tundide arv.

3. Teeme töö tehtud.

4. Võtate oma programmis tööd vastu, kui esineb puudusi, parandame need.

5. Väljastame arve, maksate teie.

Töö maksumus

1. Kõik tööd on jagatud 3 kategooriasse: konsultatsioon, tüüpilise konfiguratsiooni uuendamine, uue aruande väljatöötamine või programmeerimine, töötlemine, nupud jne.

3. Üle 10 tunni töödele koostatakse eelnevalt tehniline ülesanne koos töö kirjelduse ja maksumusega. Töö algab pärast TOR-i teiega kooskõlastamist.

Tehniline abi

1. Kui leiate varem vastu võetud töödel vigu, parandame need 3 kuu jooksul tasuta.

2. Püsiklientidele parandame oma töös tekkinud puudused aasta jooksul tasuta.

Programmid teie ettevõtte juhtimiseks.

Osta 1C: Enterprise

Oleme 1C ametlik edasimüüja, meilt saate osta erinevaid tarkvaratooted ja litsentsid. Lisaks "kasti" ostmisele aitame teil programmi seadistada, konsulteerida ja teha põhiseadeid.

  • Raamatupidamine
  • Kaupluse automatiseerimine
  • Hulgimüük
  • Abi paigaldusel ja algseadistus komplektis!
  • Konfiguratsioonide peenhäälestus vastavalt kliendi vajadustele, uute moodulite väljatöötamine standardkonfiguratsioonis vajalike funktsioonide puudumisel.
1c raamatupidamine 1C: Kaubanduse juhtimine 1C: jaemüük 1C: Palgaarvestus ja personalijuhtimine
Alates 3300 rubla. Alates 6700 rubla. Alates 3300 rubla. Alates 7400 rubla.

Serveri pakkumine.

Kiirseadistusserver + 1C.

Pole serverit? Vahet pole, valime ja paneme kiirelt "pilves" serveri üles. Väikese tasu eest saate väga töökindla lahenduse.

  • Saadavus 24/7
  • Pole vaja enda oma hoida süsteemiadministraator(sääst katab teie serveri kulud).
  • 1C kiire seadistamine ja installimine serverisse, 3 päeva pärast on teil juba täielikult töötav süsteem.
  • Saate igal ajal kolida kohalik server kui lahendus ei ole rahuldav.

SMS teie 1C-st

Kas soovite, et kliendid saaksid kampaaniatest ja allahindlustest õigeaegselt teada? Kliendid ei naase? Kohanda SMS-i saatmine otse 1C-st!

Meie ettevõte saab kiiresti seadistada SMS-ide saatmise teie klientidele otse 1C-st. Näited sündmustest, mida saab automatiseerida:

  • Tänulikkus ostu eest ja boonuste kogumine kohe pärast järgmist ostu.
  • Boonuste kogumine kaardile kingitusena sünnipäevaks/teise tähtsa või pühapäeva puhul.
  • Lao teatis.
  • Kinkekaardi kehtivusaeg.
  • Ettemaksu laekumisest teatamine ja kauba broneerimine.
  • Aadress koos juhistega kauplusesse/kontorisse, telefoninumbrid.
  • Jne.

Seadistamist 1C-s võivad teha meie spetsialistid või meie töötajad. Tariifidega saate tutvuda SMS-tariifide lehel.

  • Garantii SMS-i kohaletoimetamine, raha võetakse välja ainult kohaletoimetatud SMS-i eest.
  • Iga SMS-i jaoks eraldi arveldus.
  • Bilansi täiendamine mitmel viisil.
  • Saate igal ajal vaadata kõigi saadetud SMS-ide ajalugu.
  • Saatja nimi numbrilise numbri asemel saaja telefonis.

Loomine liides kasutaja taandub selleni, et ta valib komponentide paletist programmi tööks, teenindamiseks vajalikud Delphi komponendid liides juhtimine, samuti liides teabe kuvamine ja nende ülekandmine vormile koos järgneva paigutusega.

Loodav kasutajaliides peaks kasutama standardseid, kasutajale tuttavaid elemente ja pakkuma maksimaalset mugavust. Kõik see määratakse lõpuks sellise kriteeriumi järgi nagu liidese tõhusus - maksimaalne tulemus minimaalse pingutusega.
Loomise põhimõtted kasutajasõbralik liides teatud. kui kõige rohkem üldised põhimõtted loomise ajal kasutajaliidesed võib kaaluda kolme põhipunkti:

  1. Programm peaks aitama ülesannet täita, mitte saama ülesandeks.
  2. Programmiga töötades ei tohiks kasutaja end lollina tunda.
  3. Programm peaks töötama nii, et kasutaja ei pea arvutit lolliks.
Esimene põhimõte- see on liidese nn "läbipaistvus". Kasutajaliides peaks olema intuitiivne, kergesti õpitav ega tekita kasutajale probleeme, millest ta protsessi käigus üle tuleb. Kasutage standardset, ilma liigsete kaunistuskomponentideta, kasutage tuttavat, kasutatud sarnased programmid juhtimistehnikaid ja saavutate tulemuslikkuse kriteeriumid esimene põhimõte.

Teine põhimõte peitub hooletuses intellektuaalsed võimed kasutajad. Omast kogemusest tean, et sageli kasutajad mitte ainult ei tea, kuidas arvutiga töötada, vaid kardavad lihtsalt midagi ise teha. Seetõttu peaks kasutajaliides olema võimalikult sõbralik.
Pealegi on kasutajate hirmud sageli õigustatud, sest programmi ja arvuti enda maksumust ei saa võrrelda näiteks paljude aastatepikkuse pingutusega loodud andmebaasi maksumusega. Seetõttu peab programmeerija kasutajaliidese loomisel alati programmi sisse ehitama "lollikaitse" - valede toimingute ja kasutaja valede andmete sisestamise eest. Kuid mõned programmeerijad lähevad sellisest kaitsest liiga sisse, muudavad selle liiga pealetükkivaks ja selle tulemusena meenutab programmi tegevus kuulsat "samm vasakule, samm paremale peetakse põgenemiseks"! Ja see, mida programmeerija probleemi lahenduseks loob, hakkab ise probleeme tekitama.
Täitma teine ​​põhimõte ei ole vaja lubada programmil kasutaja tegevusi "parandada" ja näidata, mida täpselt tema eest toimida, ajades ta kitsasse raamistikku. Samuti ei tohiks end liigselt ära lasta informatiivsete vihjeteadete kuvamisega, eriti dialoogiga, kuna see tõmbab kasutaja tähelepanu töölt kõrvale. Ja parem on ette näha võimalus viipade täielikuks keelamiseks.

Kolmas põhimõte on luua programm, millel on võimalikult suured "vaimsed" võimed. Vaatamata kiirele arengule arvutitehnoloogia, isegi laialt levinud programme saab vaid väga tinglikult nimetada tehisintellekti omamiseks. Need segavad kuvamisega kasutajakogemust dialoogibokse rumalate küsimustega, mis tekitavad hämmeldust ka kõige lihtsamates olukordades. Selle tulemusena hüüavad kasutajad oma südames: "Noh, see auto on loll!"
Mind isiklikult ajavad närvi peaaegu kõigi pidevad küsimused. tekstiredaktorid selle kohta, kas salvestada muudetud tekst, kuigi algne ja praegune tekst ei erine ühegi märgi võrra. Jah, ma kirjutasin midagi, aga siis tagastasin kõik tagasi, kas tõesti on võimatu aru saada! Pean kontrollima, kas olen midagi sassi ajanud.

Proovige järgida järgmisi reegleid:

Standardsed liidese elemendid
Kasutage standardit antud element komponentide liides. Olles tutvunud teie programmiga, ei raiska kasutaja aega üksteise tundmaõppimisele, vaid hakkab kohe tööle – see on üks professionaalselt koostatud programmi tunnuseid.
Väike tööriistade palett
Püüdke mitte liiga palju kasutada suur hulk erinevaid komponente. Ja muidugi kasutades ühte standardkomponenti kuskil ühes kohas, sarnasel juhul ka seda kasutada.
Juhtnuppude vaheline võrdne vahemaa
Asetage liidese elemendid üksteisest samale kaugusele. Juhuslikult hajutatud komponendid tekitavad ebaprofessionaalse toote tunde. Ja vastupidi, nuppude, lülitite, märkeruutude ja muude liidese moodustavate komponentide hoolikalt kalibreeritud paigutus vormil on märk kvaliteetsest tööst.
vahelehe järjekord. "õige" järjekord
TabOrder on järjekord, milles ekraani kursor liigub juhtnuppude kohal klahvi vajutamisel Tab. Õigesti kirjutatud programmis liigub kursor, järgides kasutaja programmiga töötamise loogikat. Programmi loomisel muudab programmeerija sageli komponente, osa eemaldab ja teisi lisab vastavalt vajadusele. Selle tulemusena hüppab kursor lõppenud programmis juhuslikult üle vormi. Pärast programmi lõpetamist ärge unustage seadistada TabOrder.
Fondi valik
Lihtsalt jätke fondid rahule. Delphi enda vaikefondid töötavad kõigis süsteemides, milles teie programm võib töötada. Kasutage paksu kirjatüüpi ainult oluliste elementide esiletõstmiseks. Rakendus kursiiv ja eriti allakriipsutamine, mida kasutaja võib ekslikult pidada hüperlingiks – halb vorm.
Värvide valik
Liidese elementide värvide osas, nagu ka fontide puhul, on parem jätta need vaikimisi standardseks. Delphi kasutab Windowsi süsteemipaletti ning seda muutes saab kasutaja värve lihtsalt enda jaoks kohandada.
Alternatiivne juhtimine
Professionaalselt tehtud programmi peaks saama juhtida mitte ainult hiire, vaid ka klaviatuuriga. Ainult hiirega täitmiseks ei tohiks olla ühtegi funktsiooni (graafikaredaktorites joonistamine ei lähe arvesse!). Enimkasutatavate funktsioonide jaoks tuleks nende kiireks juurdepääsuks varustada kiirklahvid.
Liidese ehitusplokid
Kasutajaliidese konkreetsete elementide puhul sõltub kasutaja programmiga suhtlemise kvaliteet:
  • kontrollelemendi vastavus oma ülesandele;
  • reeglid, mille järgi kontroll toimib.
    Sellel lehel käsitletakse mõnede liideseelementide loomise reegleid.
Ja nüüd tahan näidata, milliseid tööriistu Delphi pakub vormil komponentide haldamiseks, nende suhtelist asukohta ja kursori käitumist klahvi vajutamisel. Tab.

Selleks, et paigutada komponendid üksteise suhtes õiges järjekorras, kõigepealt tuleb neid esile tõsta. Saate lihtsalt lohistada hiirega üle vormi ala, mis sisaldab valitud komponente. Või hoides Shift", määrake sama hiirega iga valitav komponent. Korduv hiireklõps valitud komponendil (vajutades " Shift") tühistab selle valiku.

Valitud komponente saab hallata ühtse tervikuna - vormis ringi liikuda, samadele atribuutidele väärtusi määrata, kopeerida (näiteks installimiseks teisele vormile), isegi kustutada.

Nüüd paremklõpsake ühel komponendil ja valige hüpikmenüüst Positsioon -> Joonda... Ilmub dialoogiboks, mis võimaldab reguleerida rühma komponentide asukohta horisontaalselt ja vertikaalselt. Näiteks peame joondama oma neli nuppu vasakule ja veenduma, et nende vahel on sama kaugus vertikaalselt. Selleks valige raadionupud Horisontaalne: vasakpoolsed küljed ja Vertikaalne: ruum võrdselt.

Üksuse valimine Keskus, paigutame komponendid nii, et nende keskpunktid paikneksid horisontaalselt või vertikaalselt samal joonel ja punkt Akna keskel liigutab komponente kas horisontaalselt või vertikaalselt akna keskele.

Samas menüüs rida Tab O telli... põhjustab dialoogiboksi ilmumise, mis juhib klahvi vajutamisel kursori liikumist läbi liidese elementide Tab. Kui ekraanile ilmub vorm, on kursor loomulikult komponendil, mis asub dialoogiboksi esimesel real. Ja siis liigub see loendis allapoole. Dialoogiboksis juhivad kaks sinist noolt "üles" ja "alla" valitud komponendi asukohta. Tõstke esile vajalik komponent, kasutage nooli, et liikuda loendis soovitud reale ja nii edasi.

Menüüelemendi valimisel Juhtimine -> Ilmub alammenüü kahe üksusega:

  • Too ette
  • saata tagasi
Need on komponentmeetodid, mis on saadaval ka programmiliselt. Nupp1.Saada tagasi liigutab nupu "taustale" ja Button1.BringTo Front- too ette". See tähendab, et kui üks komponent asetatakse teisest kõrgemale, vahetavad need meetodid neid. Juhtumid, kus see võib kehtida, on üsna ilmsed.

Objektorienteeritud programmeerimine (OOP) näeb lisaks klassi mõistele ette ka liidese põhikontseptsiooni.

Mis on liides ja millised on sellega Delphi programmeerimiskeeles töötamise funktsioonid?

Liides on semantiline ja süntaktiline konstruktsioon programmikoodis, mida kasutatakse klassi või komponendi pakutavate teenuste täpsustamiseks (Wikipedia).

Tegelikult määratleb liides atribuutide ja meetodite loendi, mida tuleks kasutada seda liidest rakendava klassiga töötamisel, samuti nende allkirja (nimi, andmetüüp, aktsepteeritud parameetrid (protseduuride ja funktsioonide jaoks) jne). Seega peab liidest rakendav klass tingimata rakendama kõiki selle komponente. Veelgi enam, rangelt vastavalt sellele, kuidas neid selles kirjeldatud.

Väga sageli võrreldakse liideseid abstraktsete klassidega, kuid kõigi sarnasuste puhul pole see võrdlus täiesti õige. Abstraktsetes klassides on vähemalt kontroll liikmete nähtavuse üle saadaval. Samal ajal ei ole liideste jaoks valdkondi määratletud.

Liidesed võimaldavad teil muuta arhitektuuri paindlikumaks, kuna need ühendavad juurdepääsu teatud funktsioonidele ja võimaldavad vältida ka mitmeid klassipärimisega seotud probleeme (liideseid saab ka üksteiselt pärida).

Delphi kasutab liidese deklareerimiseks liidese märksõna. See on sama märksõna, mis määratleb mooduli sektsiooni, millele pääseb juurde väljastpoolt (vahemikus märksõnad liides ja rakendamine). Liidese deklareerimisel kasutatakse aga sarnaselt klasside deklareerimisega teistsugust süntaksit.

Delphi/Pascal

IMyNewInterface = liidese protseduur InterfaceProc; lõpp;

IMyNewInterface =liides

protseduur InterfaceProc ;

lõpp ;

Seega pole liidese deklaratsiooni süntaksil endal põhimõttelisi erinevusi teistest programmeerimiskeeltest (Pascalil põhinevad süntaksifunktsioonid ei lähe arvesse). Samal ajal on liideste rakendamisel mitmeid iseloomulikke omadusi.

Fakt on see, et Delphi liidesed võeti algselt kasutusele COM-tehnoloogia toetamiseks. Seetõttu sisaldab IIinterface liides, mis Delphis on kõigi teiste liideste esivanem (omamoodi TObjecti analoog), juba selle tehnoloogiaga töötamiseks kolme põhimeetodit: QueryInterface, _AddRef, _Release. Selle tulemusena, kui klass rakendab mis tahes liidest, peab ta rakendama ka neid meetodeid. Isegi kui see klass ei ole mõeldud COM-iga töötamiseks.

Tänu sellele II-liidese liidese funktsioonile viib liideste kasutamine Delphis enamikul juhtudel klassi ilmselt kasutamata funktsioonide lisamiseni.

Seal on teegiklass TInterfaceObject, mis sisaldab juba nende meetodite juurutamist ja sealt pärimisel pole vaja neid ise juurutada. Kuid kuna Delphi ei toeta mitme klassi pärimist, põhjustab selle kasutamine sageli ainult täiendavat keerukust juba vajalike funktsioonide kavandamisel ja rakendamisel.

Kõik see viis selleni, et hoolimata kõigist liideste pakutavatest võimalustest ei ulatunud nende praktiline kasutamine Delphis peaaegu kaugemale COM-iga töötamisest.

Olles optimeeritud töötama peamiselt selle tehnoloogiaga, ei õigusta liidesed või õigemini nende lisatavad funktsionaalsus- ja arhitektuuripiirangud end muude probleemide lahendamisel.

Seetõttu on paljud Delphi programmeerijad endiselt tegelikult ilma võimsast ja paindlikust tööriistast rakenduste arhitektuuri arendamiseks.

See artikkel põhineb foorumites esitatud küsimustel: "Kuidas ma saan DLL-ist stringi tagastada?", "Kuidas edastada ja tagastada kirjete massiivi?", "Kuidas edastada vormi DLL-i?".

Et te ei kulutaks poolt oma elust selle väljamõtlemisele - selles artiklis toon kõik hõbekandikul.

Selle artikli teemasid on erineval määral siin ajaveebis juba rohkem kui korra puudutatud, kuid selles artiklis on need hunnikusse kogutud, põhjendused toodud. Lühidalt öeldes võib DLL-i arendajatele visata lingi sellele artiklile.

Oluline märkus: artikkel tuleb läbi lugeda järjestikku. Koodinäited on esitatud ainult kui näiteid, artikli igas etapis (punktis) lisatakse näidete kood uute detailidega. Näiteks kohe artikli alguses pole vigade käsitlemist, on märgitud "klassikalised" meetodid (näiteks GetLastError , sdtcall konventsioonide kasutamine jne), mis artikli käigus asendatakse adekvaatsemate vastu. Seda tehakse põhjusel, et "uued" ("ebatavalised") kujundused ei tekita küsimusi. Vastasel juhul tuleks iga näite juurde lisada märge kujul: "sellest on juttu allolevas lõigus, aga sellest - selles siin." Igal juhul on artikli lõpus link valmis koodile, mis on kirjutatud kõike artiklis öeldut arvesse võttes. Võite selle lihtsalt võtta ja kasutada. Ja artiklis selgitatakse, miks ja miks. Kui teid ei huvita "miks ja miks" - kerige lõpuni järelduseni ja näite allalaadimise lingini.

Üks ja kõige rohkem tugevused Delphi programmeerimiskeskkond on selle avatud arhitektuur, tänu millele võimaldab Delphi omamoodi metaprogrammeerimist, võimaldades teil "programmeerimiskeskkonda programmeerida". See lähenemisviis viib Delphi rakenduste arendussüsteemide kvalitatiivselt uuele tasemele ja võimaldab teil manustada täiendavaid tööriistad mis toetavad peaaegu kõiki rakendussüsteemide loomise etappe. Nii lai valik võimalusi avaneb tänu Delphis realiseeritud nn avatud liideste kontseptsioonile, mis on ühenduslüliks IDE (Integrated Development Environment) ja väliste tööriistade vahel.

See artikkel keskendub Delphi avatud liidestele ja annab ülevaate nende pakutavatest funktsioonidest. Delphi määratleb kuus avalikku liidest: tööriistaliides, disainiliides, ekspertliides, faililiides, redigeerimisliides ja versioonijuhtimise liides. Vaevalt suudaksime selle artikli raames üksikasjalikult käsitleda ja illustreerida igaühe võimalusi. Delphi lähtetekstid aitavad teil käsitletavatest probleemidest põhjalikumalt aru saada, kuna arendajad on neid üksikasjalikult kommenteerinud. Avalikke liideseid esindavad klassideklaratsioonid sisalduvad vastavates moodulites kataloogis ...\Delphi\Source\ToolsAPI. Disainiliides (moodul DsgnIntf.pas) pakub vahendeid atribuutide ja komponentide redaktorite loomiseks.

Omaduste ja komponentide redaktorid on teema, mis väärib eraldi arutelu, seega tuletame meelde vaid seda, et atribuudiredaktor kontrollib objektiinspektori käitumist, kui proovite vastava atribuudi väärtust muuta ning komponendiredaktor aktiveerub, kui topeltklõps hiire vasak nupp vormile asetatud komponendi kujutisel. Versioonihaldusliides (moodul VCSIntf.pas) on mõeldud versioonikontrollisüsteemide loomiseks. Alates versioonist 2.0 toetab Delphi integreeritud versioonikontrollisüsteemi Intersolv PVCS, mistõttu pole enamikul juhtudel vaja oma süsteemi arendada. Sel põhjusel jätame tähelepanuta ka versioonihaldusliidese. Faililiides (moodul FileIntf.pas) võimaldab IDE tööfailisüsteemi ümber defineerida, mis võimaldab valida failide salvestamise viisi (näiteks andmebaasiserveri Memo väljadel). Redigeerimisliides (moodul EditIntf.pas) võimaldab juurdepääsu lähteteksti puhvrile, mis võimaldab analüüsida ja genereerida koodi, määrata ja muuta kursori asukohta koodiredaktori aknas ning juhtida lähteteksti süntaksi esiletõstmist.

Eriklassid pakuvad liideseid vormile asetatud komponentidele (komponendi tüübi määratlemine, viidete hankimine ülem- ja alamkomponentidele, ligipääs atribuutidele, fookuse edastamine, kustutamine jne), vormile endale ja projekti ressursifailile. Redigeerimisliides võimaldab tuvastada ka nn mooduliteatistajaid, mis määravad reaktsiooni sellistele sündmustele nagu mooduli lähtekoodi muutmine, vormi muutmine, komponendi ümbernimetamine, mooduli salvestamine, ümbernimetamine või kustutamine, projekti ressursi muutmine fail jne. Tööriistaliides (moodul ToolIntf. pas) annab arendajatele vahendid hankimiseks Üldine informatsioon IDE oleku ja toimingute, näiteks projektide avamise, salvestamise ja sulgemise kohta ning üksikud failid, mooduli loomine, jooksva projekti kohta info saamine (moodulite ja vormide arv, nende nimetused jne), registreerimine failisüsteem, liideste organiseerimine üksikutele moodulitele jne. Lisaks mooduliteatistajatele määratleb tööriistaliides lisandmoodulid, mis teavitavad sellistest sündmustest nagu failide ja projektide avamine/sulgemine, projekti töölauafaili laadimine ja salvestamine, projekti moodulite lisamine/välistamine, pakettide installimine/desinstallimine, projekti koostamine, ja erinevalt moodulteavitajatest võimaldavad lisandmoodulite teatajad mõne sündmuse täitmise tühistada.

Lisaks võimaldab tööriistaliides juurdepääsu Delphi IDE peamenüüle, võimaldades teil sellesse manustada täiendavaid üksusi. Ekspertide liides (moodul ExptIntf.pas) on ekspertnõustajate loomise aluseks - tarkvara moodulid, mis on IDE-sse manustatud, et selle funktsioone laiendada. Eksperdi näide on Delphi andmebaasi vormiviisard, mis genereerib vormi andmebaasi tabeli sisu vaatamiseks ja muutmiseks. Olles määratlenud eksperdiklassi, peame tagama, et Delphi meie eksperdi kohta “õppib”. Selleks tuleb see registreerida, kutsudes välja protseduuri RegisterLibraryExpert, edastades sellele parameetrina ekspertklassi eksemplari. Loome illustratsiooniks lihtsa eksperdi stiilis esStandard, mis vastava Delphi menüüpunkti valimisel kuvab teate, et see töötab. Nagu näete ülaltoodud tabelist, nõuab stiil esStandard kuue meetodi tühistamiseks.

Eksperdi “aktiveerimiseks” tuleb valida menüükäsk Component/Install Component ... , valida Sirvimise dialoogis eksperti sisaldav moodul (meie puhul exmpl_01.pas), vajutada OK ja peale kompileerimist dclusr30.dpk paketti Delphi peamenüüs jaotises Abi, peaks ilmuma element Simple Expert 1, kui see on valitud, kuvatakse teade “Standard Expert startis!”. Miks Delphi paneb ekspertmenüü jaotisesse Abi, jääb saladuseks. Kui teile ei meeldi, et menüükäsk ilmub Delphis kõikjal, mitte seal, kus soovite, on võimalik järgmine võimalus: loo lisandmooduli stiiliekspert, mis välistab menüüelemendi automaatse loomise ja lisa menüükäsk “käsitsi”, kasutades tööriistaliidest. See võimaldab teil suvaliselt määrata uue üksuse asukoha peamenüüs.

Menüüelemendi lisamiseks kasutatakse klassi TIToolServices - Tööriistaliidese alus - ja klasse TIMenuIntf, TIMEnuItemIntf, mis realiseerivad liideseid IDE peamenüü ja selle üksustega. TIToolServices klassi ToolServicesi eksemplari loob IDE ise selle initsialiseerimisel. Pange tähele, et Delphi peamenüü ja selle üksuste liideste vabastamise eest vastutab arendaja. Teeme selle käigus veidi keerulisemaks Expert Advisori funktsionaalse koormuse: selle menüükäsu aktiveerimisel väljastab see sertifikaadi aastal avatud projekti nimetuse kohta. Sel hetkel keskkonnas: Antud näites on kesksel kohal funktsioon AddIDEMenuItem, mis lisab Delphi IDE peamenüüsse menüüelemendi. Parameetritena edastatakse sellele uue menüüelemendi tekst, selle identifikaator, selle elemendi identifikaator, mille ette uus element sisestatakse, võtme sümboolne esitus, mis koos Ctrl-klahv jaoks saab kasutada kiire juurdepääs uuele üksusele ja uue üksuse valikule vastav sündmuste käitleja. Oleme lisanud uue menüü elemendi Vaade sektsiooni enne kellad.

Nüüd tutvume teavitajatega. Määratleme lisandmooduli, mis jälgib projektide sulgemise/avamise hetki ja kohandab vastavalt nime salvestavat välja aktiivne projekt(Lühiduse mõttes jätan vahele nende meetodite juurutamise, mis ei ole eelmise näitega võrreldes muutunud): Teavitaja juurutamiseks defineerisime klassi TAddInNotifier, mis on TIAddInNotifier järeltulija, ja alistasime FileNotification meetodi. IDE kutsub seda meetodit välja iga kord, kui toimub sündmus, millele lisandmooduli teavitaja on võimeline reageerima (iga sellist sündmust tähistatakse vastava TFileNotification tüüpi konstandiga). TAddInNotifier klassi välja Expert on harjunud tagasisidet koos eksperdiga (meetod TAddInNotifier.FileNotification). Eksperdi hävitajas teataja registreerimata ja teataja hävitatakse. Nüüd illustreerime moodulteavitajate kasutamist. Loome lisandmooduli eksperdi, mis genereerib teateid iga projektifaili salvestamise toimingu kohta (lühidalt ei paku me meile juba tuttavate meetodite rakendamist): Selles näites jälgib lisandmooduli ekspert sündmusi, mis vastavad projektide avamine/sulgemine.

Iga projekti avamisel registreeritakse projekti failile vastav mooduliteavitaja. Rakenduse osas on modulaarsed teatajad sarnased lisandmoodulite teavitajatega: määratleme klassi TModuleNotifier, mis on TIModuleNotifieri järeltulija, ning alistame selle Notify ja ComponentRenamed meetodid. IDE kutsub välja teavitusmeetodi, kui ilmnevad selle mooduliga seotud teatud sündmused; selle meetodi sees määratakse reaktsioon konkreetsele sündmusele. Meetod ComponentRenamed kutsutakse välja, kui mooduli vormil oleva komponendi nimi muutub. Pange tähele, et me ei kasuta seda meetodit, kuid peame selle tühistama, vastasel juhul kutsutakse komponendi nime muutumisel baasklassi abstraktset meetodit, mis toob kaasa ettearvamatud tagajärjed.

Mooduliteatise registreerimine on mõnevõrra keerulisem kui teavitaja lisandmooduli registreerimine: kõigepealt saame mooduli liidese (TIModuleInterface) ja seejärel registreerime mooduli liidese abil teavitaja. Projekti sulgemisel tühistatakse mooduliteavitaja registreerimine (taas TIMOduleInterface'i abil) ja teataja hävitatakse. Kokkuvõtteks näitame, kuidas saate koodiredaktori aknas määrata kursori asukoha. Loome Expert Advisori, mis vastava menüükäsu valimisel kuvab teate, mis sisaldab aktiivse faili nime ja kursori asukohta selles (antud on ainult selle näite jaoks oluliste meetodite rakendamine): Kursori asukoha määramiseks peame saama järgmise liideste jada: mooduli liides (TIModuleInterface); koodiredaktori liides (TIEditorInterface); moodulivaate liides redaktoriaknas (TIEditView).

Kui eksperdi menüüpunkti valimisel on aktiivne lähtetekstiga fail (*.pas), siis kuvatakse teade, mis sisaldab aktiivse faili nime ja kursori hetkeasendit selles. Kui aktiivne fail ei ole pass-fail, siis teadet ei väljastata. Aktiivse faili nime saamiseks kasutatakse klassi TIToolServices meetodit GetCurrentFile. See lõpetab meie arutelu avalike liideste kasutamise viiside üle. CD-ROM sisaldab kõigi toodud näidete lähtekoodi. CD-ROM sisaldab ka keerukamat ja laiendatud näidet, mis sisaldab lisandmooduli eksperti, mis võimaldab kasutajal Delphi moodulite lähtekoodi järjehoidjatesse lisada. Kiire juhend järjehoidjate eksperdi installimiseks ja kasutamiseks on failis bkmrks97.htm. Niisiis käsitletakse selles artiklis avalikke liideseid üldiselt ja tuuakse näiteid nende kasutamise kohta. Tänu avatud liideste lähtekoodide olemasolule saate taaskord hõlpsasti mõista teid huvitavaid üksikasju. Loodame, et pakutud erinevaid võimalusi avatud liidesed, annab teile rohkem kui ühe julge ja kasuliku idee.