Funkcijas darbam ar saskarnēm Delphi. Labākie IT risinājumi biznesam Logu izmēri nedrīkst pārsniegt ekrāna izmēru

tikai rezultātu dēļ

stingra termiņu ievērošana

Pārredzamība

projekta īstenošana

tehniskais atbalsts kā dāvana

Programmēšana, uzlabojumi, konsultācijas par 1C

Kā mēs strādājam

1. Mēs pārrunājam problēmu pa tālruni. Klātbūtnē attālināta piekļuve- parādīt datora ekrānā.

2. Darbu vērtējam rubļos, ja projekts ir liels, ja nē - aptuveno stundu skaitu.

3. Mēs paveicam darbu.

4. Jūs pieņemat darbu savā programmā, ja ir nepilnības, mēs tās izlabojam.

5. Mēs izrakstām rēķinu, jūs maksājat.

Darba izmaksas

1. Visi darbi ir sadalīti 3 kategorijās: konsultācija, tipiskas konfigurācijas atjaunināšana, jaunas atskaites izstrāde vai programmēšana, apstrāde, pogas utt.

3. Darbam virs 10 stundām iepriekš tiek sagatavots tehniskais uzdevums ar darba aprakstu un izmaksām. Darbs sākas pēc TOR apstiprināšanas ar jums.

Tehniskā palīdzība

1. Ja iepriekš pieņemtajos darbos atrodat kļūdas, 3 mēnešu laikā tās izlabojam bez maksas.

2. Pastāvīgajiem klientiem bez maksas novēršam nepilnības savā darbā gada laikā.

Programmas jūsu uzņēmuma vadīšanai.

Pērciet 1C: Enterprise

Mēs esam oficiālais 1C izplatītājs, jūs varat iegādāties no mums dažādus programmatūras produkti un licences. Papildus "kastes" iegādei mēs palīdzēsim iestatīt programmu, konsultēsim un veiksim pamata iestatījumus.

  • Grāmatvedība
  • Veikalu automatizācija
  • Vairumtirdzniecība
  • Palīdzība ar uzstādīšanu un sākotnējā iestatīšana iekļauts komplektā!
  • Konfigurāciju pielāgošana klienta vajadzībām, jaunu moduļu izstrāde, ja standarta konfigurācijā nav nepieciešamo funkciju.
1c grāmatvedība 1C: Tirdzniecības vadība 1C: mazumtirdzniecība 1C: Algu un cilvēkresursu vadība
No 3300 rubļiem. No 6700 rubļiem. No 3300 rubļiem. No 7400 rubļiem.

Servera nodrošināšana.

Tūlītējās iestatīšanas serveris + 1C.

Nav servera? Vienalga, mēs atlasīsim un ātri uzstādīsim serveri "mākonī". Par nelielu samaksu jūs saņemat ļoti uzticamu risinājumu.

  • Pieejamība 24/7
  • Nav nepieciešams paturēt savu sistēmas administrators(ietaupījumi segs jūsu servera izmaksas).
  • Ātra 1C iestatīšana un instalēšana serverī, pēc 3 dienām jums jau būs pilnībā strādājoša sistēma.
  • Jebkurā laikā varat pārcelties uz lokālais serveris ja risinājums nav apmierinošs.

SMS no jūsu 1C

Vai vēlaties, lai klienti laicīgi uzzinātu par akcijām un atlaidēm? Klienti neatgriežas? Pielāgot sūtot SMS tieši no 1C!

Mūsu uzņēmums varēs ātri iestatīt SMS sūtīšanu jūsu klientiem tieši no 1C. Notikumu piemēri, kurus var automatizēt:

  • Pateicība par pirkumu un bonusu uzkrāšana uzreiz pēc nākamā pirkuma.
  • Bonusu uzkrāšana kartē kā dāvana dzimšanas dienā/citā svarīgā vai svētku dienā.
  • Noliktavas paziņojums.
  • Dāvanu kupona derīguma termiņš.
  • Paziņojums par priekšapmaksas saņemšanu un preču rezervāciju.
  • Adrese ar norādēm uz veikalu/biroju, tālruņu numuri.
  • utt.

Iestatīšanu 1C var veikt mūsu speciālisti vai mūsu darbinieki. Ar tarifiem var iepazīties SMS-tarifu lapā.

  • Garantija SMS piegāde, nauda tiek izņemta tikai par piegādāto SMS.
  • Atsevišķs rēķins par katru SMS.
  • Līdzsvara papildināšana dažādos veidos.
  • Skatiet visu nosūtīto SMS vēsturi jebkurā laikā.
  • Sūtītāja vārds, nevis ciparu numurs saņēmēja tālrunī.

Radīšana saskarne lietotājs atliek izvēlēties no komponentu paletes Delphi komponentus, kas nepieciešami programmas darbībai, apkalpošanai saskarne vadība, kā arī saskarne informācijas parādīšana un pārsūtīšana uz veidlapu ar sekojošu izkārtojumu.

Jūsu izveidotajā lietotāja saskarnē ir jāizmanto standarta, lietotājam pazīstami elementi un jānodrošina maksimālas ērtības. To visu galu galā nosaka tāds kritērijs kā interfeisa efektivitāte – maksimālais rezultāts ar minimālu piepūli.
Radīšanas principi lietotājam draudzīgs interfeiss zināms. kā visvairāk visparīgie principi veidojot lietotāja saskarnes var apsvērt trīs galvenos punktus:

  1. Programmai ir jāpalīdz izpildīt uzdevumu, nevis jākļūst par uzdevumu.
  2. Strādājot ar programmu, lietotājam nevajadzētu justies kā muļķim.
  3. Programmai jādarbojas tā, lai lietotājs neuzskatītu datoru par muļķi.
Pirmais princips- šī ir tā sauktā saskarnes "caurspīdīgums". Lietotāja saskarnei jābūt intuitīvai, viegli apgūstamai, un tā nedrīkst radīt lietotājam problēmas, kas viņam būs jāpārvar darba procesā. Izmantojiet standarta, bez pārmērīgām izrotāšanas sastāvdaļām, izmantojiet pazīstamus, lietotus līdzīgas programmas vadības paņēmienus, un jūs sasniegsiet izpildes kritērijus pirmais princips.

Otrais princips slēpjas nolaidībā intelektuālās spējas lietotājiem. No savas pieredzes zinu, ka bieži lietotāji ne tikai nezina, kā strādāt pie datora, bet vienkārši baidās kaut ko darīt paši. Tāpēc lietotāja interfeisam jābūt pēc iespējas draudzīgam.
Turklāt lietotāju bailes bieži vien ir pamatotas, jo programmas un paša datora izmaksas nevar salīdzināt ar izmaksām, piemēram, par datubāzi, kas izveidota daudzu gadu garumā. Tāpēc programmētājam, veidojot lietotāja interfeisu, vienmēr ir jāiebūvē programma "muļķu aizsardzība" - no nepareizām darbībām un lietotāja nepareizu datu ievadīšanas. Bet daži programmētāji pārāk aizraujas ar šādu aizsardzību, padara to pārāk uzmācīgu, un rezultātā programmas darbība atgādina slaveno "solis pa kreisi, solis pa labi tiek uzskatīts par bēgšanu"! Un tas, ko programmētājs rada kā problēmas risinājumu, pats sāk radīt problēmas.
Ievērot otrais princips nav nepieciešams ļaut programmai "izlabot" lietotāja darbības un norādīt, kas tieši viņam rīkoties, iedzenot viņu šauros rāmjos. Tāpat nevajadzētu pārāk aizrauties ar informatīvu mājienu ziņojumu, īpaši dialogu, rādīšanu, jo tas novērš lietotāja uzmanību no darba. Un labāk ir nodrošināt iespēju pilnībā atspējot uzvednes.

Trešais princips ir izveidot programmu ar iespējami lielākām "garīgajām" spējām. Neskatoties uz straujo attīstību datortehnoloģijas, pat plaši izplatītas programmas tikai ļoti nosacīti var saukt par tām, kurām ir mākslīgais intelekts. Tie traucē lietotāja pieredzi, parādot dialoglodziņi ar stulbiem jautājumiem, kas izraisa neizpratni pat visvienkāršākajās situācijās. Rezultātā lietotāji savās sirdīs iesaucas: "Nu, šī automašīna ir stulba!"
Mani personīgi kaitina gandrīz visu nemitīgie jautājumi. teksta redaktori par to, vai saglabāt mainīto tekstu, lai gan sākotnējais un pašreizējais teksts neatšķiras ne par vienu rakstzīmi. Jā, kaut ko ierakstīju, bet pēc tam visu atgriezu atpakaļ, vai tiešām nav iespējams izdomāt! Man ir jāpārbauda, ​​​​vai es kaut ko nesajaucu.

Mēģiniet ievērot šādus noteikumus:

Standarta saskarnes elementi
Izmantojiet standartu dotais elements komponentu saskarne. Iepazīstoties ar jūsu programmu, lietotājs netērēs laiku vienam otra iepazīšanai, bet nekavējoties sāks strādāt – tā ir viena no profesionāli veidotas programmas pazīmēm.
Neliela instrumentu palete
Centieties neizmantot pārāk daudz liels skaits dažādas sastāvdaļas. Un, protams, izmantojot vienu standarta komponentu kaut kur vienuviet, līdzīgā gadījumā arī to izmantot.
Vienāda atstarpe starp vadības ierīcēm
Sakārtojiet saskarnes elementus vienādā attālumā vienu no otra. Nejauši izkaisītie komponenti rada neprofesionāla produkta sajūtu. Un otrādi, rūpīgi kalibrēts pogu, slēdžu, izvēles rūtiņu un citu interfeisu veidojošo komponentu izvietojums formā ir kvalitatīva darba pazīme.
ciļņu secība. "pareiza kārtība
TabOrder ir secība, kādā ekrāna kursors pārvietojas virs vadīklām, kad tiek nospiests taustiņš Tab. Pareizi uzrakstītā programmā kursors pārvietojas, vadoties pēc lietotāja darba ar programmu loģikas. Veidojot programmu, programmētājs bieži maina komponentus, dažus noņem un pēc vajadzības pievieno citus. Rezultātā pabeigtajā programmā kursors nejauši lec pāri formai. Pēc programmas pabeigšanas neaizmirstiet iestatīt TabOrder.
Fonta izvēle
Vienkārši atstājiet fontus mierā. Delphi noklusējuma fonti darbosies jebkurā sistēmā, kurā varētu darboties jūsu programma. Izmantojiet treknrakstu tikai, lai izceltu svarīgus elementus. Pieteikums kursīvs un jo īpaši pasvītrojums, ko lietotājs var sajaukt ar hipersaiti – slikta forma.
Krāsu izvēle
Kas attiecas uz interfeisa elementu krāsām, tāpat kā fontu gadījumā, labāk tos atstāt standarta pēc noklusējuma. Delphi izmanto Windows sistēmas paleti, un, mainot to, lietotājs var viegli pielāgot krāsas sev.
Alternatīva vadība
Profesionāli veidotu programmu jāspēj vadīt ne tikai ar peli, bet arī ar klaviatūru. Tikai ar peli izpildei nedrīkst būt pieejamas funkcijas (zīmēšana grafiskajos redaktoros neskaitās!). Visbiežāk izmantotajām funkcijām ir jānodrošina "karstie taustiņi", kas nodrošina ātru piekļuvi.
Interfeisa veidošanas bloki
Attiecībā uz konkrētiem lietotāja interfeisa elementiem lietotāja mijiedarbības ar programmu kvalitāte ir atkarīga no:
  • kontroles elementa atbilstība tā uzdevumam;
  • noteikumi, saskaņā ar kuriem darbojas kontrole.
    Šajā lapā ir aplūkoti dažu interfeisa elementu izveides noteikumi.
Un tagad es vēlos parādīt, kādus rīkus Delphi piedāvā, lai pārvaldītu komponentus veidlapā, to relatīvo pozīciju un kursora darbību, kad tiek nospiests taustiņš. Tab.

Lai sastāvdaļas sakārtotu viena pret otru pareizā secībā, vispirms nepieciešams tos izcelt. Varat vienkārši vilkt peli virs veidlapas apgabala, kurā ir atlasītie komponenti. Vai arī turot Shift", norādiet ar to pašu peli katru komponentu, kas jāatlasa. Atkārtots peles klikšķis uz atlasītā komponenta (nospiežot " Shift") noņem atlasi.

Atlasītos komponentus var kontrolēt kopumā - pārvietot pa veidlapu, piešķirt vērtības tiem pašiem rekvizītiem, kopēt (instalēšanai, piemēram, citā veidlapā), pat dzēst.

Tagad ar peles labo pogu noklikšķiniet uz viena no komponentiem un uznirstošajā izvēlnē atlasiet Pozīcija -> Izlīdzināt... Parādīsies dialoglodziņš, kas ļaus pielāgot komponentu pozīciju grupā horizontāli un vertikāli. Piemēram, mums ir jāizlīdzina mūsu četras pogas pa kreisi un jāpārliecinās, ka starp tām ir tāds pats attālums vertikāli. Lai to izdarītu, atlasiet radio pogas Horizontāli: kreisās puses Un Vertikāli: telpa vienādi.

Izvēloties vienumu Centrs, mēs sakārtosim sastāvdaļas tā, lai to centri atrastos vienā līnijā horizontāli vai vertikāli, un punkts Centrs logā pārvieto komponentus uz loga centru horizontāli vai vertikāli.

Tajā pašā izvēlnē rinda Tab O pasūtīt... izraisa dialoglodziņa parādīšanos, kas kontrolē kursora kustību caur interfeisa elementiem, kad tiek nospiests taustiņš Tab. Kad ekrānā parādās forma, kursors, protams, atradīsies uz komponenta, kas atrodas dialoglodziņa pirmajā rindā. Un tad tas tiks pārvietots uz leju sarakstā. Dialoglodziņā divas zilas bultiņas "uz augšu" un "uz leju" kontrolē atlasītā komponenta pozīciju. Izcelt nepieciešamā sastāvdaļa, izmantojiet bultiņas, lai pārietu uz vajadzīgo rindiņu sarakstā utt.

Izvēloties izvēlnes vienumu Kontrole -> Tiek parādīta apakšizvēlne ar diviem vienumiem:

  • Novietot priekšā
  • nosūtīt atpakaļ
Šīs ir komponentu metodes, kas ir pieejamas arī programmatiski. Button1.SendToBack pārvieto pogu uz "fonu" un Poga1.BringToFront- novietot priekšā". Tas ir, ja viens komponents ir novietots virs cita, šīs metodes tos apmaina. Gadījumi, kad to var piemērot, ir diezgan acīmredzami.

Objektorientētā programmēšana (OOP) papildus klases jēdzienam nodrošina arī interfeisa pamatjēdzienu.

Kas ir saskarne un kādas ir iespējas strādāt ar to Delphi programmēšanas valodā?

Interfeiss ir semantiska un sintaktiska konstrukcija programmas kodā, ko izmanto, lai norādītu klases vai komponenta sniegtos pakalpojumus (Wikipedia).

Faktiski saskarne nosaka rekvizītu un metožu sarakstu, kas jāizmanto, strādājot ar klasi, kas ievieš šo saskarni, kā arī to parakstu (nosaukums, datu tips, pieņemtie parametri (procedūrām un funkcijām) utt.). Tādējādi klasei, kas ievieš saskarni, obligāti jāievieš visi tās komponenti. Turklāt stingri saskaņā ar veidu, kādā tie ir aprakstīti tajā.

Ļoti bieži saskarnes tiek salīdzinātas ar abstraktām klasēm, taču attiecībā uz visām līdzībām šis salīdzinājums nav pilnīgi pareizs. Abstraktajās nodarbībās ir pieejama vismaz dalībnieku redzamības kontrole. Tajā pašā laikā saskarnēm nav definētas darbības jomas.

Saskarnes ļauj padarīt arhitektūru elastīgāku, jo tās apvieno piekļuvi noteiktai funkcionalitātei, kā arī ļauj izvairīties no vairākām problēmām, kas saistītas ar klases pārmantošanu (saskarnes var arī mantot viena no otras).

Delphi interfeisa deklarēšanai izmanto interfeisa atslēgvārdu. Šis ir tas pats atslēgvārds, kas definē moduļa sadaļu, kurai var piekļūt no ārpuses (starp atslēgvārdi saskarne un ieviešana). Tomēr, deklarējot saskarni, tiek izmantota cita sintakse, līdzīgi kā klašu deklarēšanai.

Delphi/Pascal

IMyNewInterface = interfeisa procedūra InterfaceProc; beigas;

IMyNewInterface =interfeiss

procedūra InterfaceProc ;

beigas ;

Tādējādi pašai interfeisa deklarācijas sintaksei nav būtisku atšķirību no citām programmēšanas valodām (sintakses līdzekļi, kuru pamatā ir Pascal, netiek ņemti vērā). Tajā pašā laikā saskarņu ieviešanai ir vairākas raksturīgas iezīmes.

Fakts ir tāds, ka Delphi saskarnes sākotnēji tika ieviestas, lai atbalstītu COM tehnoloģiju. Tāpēc II interfeisa interfeiss, kas Delphi ir visu pārējo saskarņu priekštecis (sava ​​veida TObject analogs), jau satur trīs pamata metodes darbam ar šo tehnoloģiju: QueryInterface, _AddRef, _Release. Rezultātā, ja klase ievieš kādu saskarni, tai ir jāīsteno arī šīs metodes. Pat ja šī klase nav paredzēta darbam ar COM.

Pateicoties šai IIinterfeisa interfeisa funkcijai, Delphi saskarņu izmantošana vairumā gadījumu noved pie acīmredzami neizmantotu līdzekļu pievienošanas klasei.

Ir bibliotēkas klase TInterfaceObject, kurā jau ir šo metožu realizācija un, mantojot no tās, nav nepieciešamības tās ieviest pašam. Bet, tā kā Delphi neatbalsta vairāku klašu pārmantošanu, tā izmantošana bieži vien rada papildu sarežģītību jau nepieciešamās funkcionalitātes izstrādē un ieviešanā.

Tas viss noveda pie tā, ka, neskatoties uz visām saskarņu sniegtajām iespējām, to praktiskā izmantošana Delphi gandrīz nepārsniedza darbu ar COM.

Tā kā tās ir optimizētas darbam galvenokārt ar šo tehnoloģiju, saskarnes vai drīzāk funkcionalitātes un arhitektūras ierobežojumi, ko tie bez kļūmēm pievieno, neattaisno sevi citu problēmu risināšanā.

Tāpēc daudziem Delphi programmētājiem joprojām faktiski nav pieejams spēcīgs un elastīgs rīks lietojumprogrammu arhitektūras izstrādei.

Šis raksts ir balstīts uz jautājumiem forumos: "Kā atgriezt virkni no DLL?", "Kā nodot un atgriezt ierakstu masīvu?", "Kā nodot veidlapu DLL?".

Lai jūs nepavadītu pusi savas dzīves, to izdomājot - šajā rakstā es visu nolikšu uz sudraba šķīvja.

Šī raksta tēmas, dažādā mērā, šajā blogā jau ir skartas ne reizi vien, taču šajā rakstā tās apkopotas kaudzē, sniegti pamatojumi. Īsāk sakot, saiti uz šo rakstu var iemest tiem, kas izstrādā DLL.

Svarīga piezīme: raksts ir jāizlasa secīgi. Kodu piemēri tiek sniegti tikai kā piemēri, katrā raksta solī (punktā) piemēru kods tiek pievienots ar jaunām detaļām. Piemēram, pašā raksta sākumā nav kļūdu apstrādes, ir norādītas "klasiskās" metodes (piemēram, GetLastError izmantošana, sdtcall konvencijas utt.), kuras raksta gaitā tiek aizstātas ar adekvātākām. Tas tiek darīts tādēļ, ka "jauni" ("neparasti") dizaini nerada jautājumus. Pretējā gadījumā katrā piemērā būtu jāievieto piezīme šādā formā: "par to ir runāts tajā rindkopā zemāk, bet par to - šajā šeit." Jebkurā gadījumā raksta beigās ir saite uz gatavu kodu, kas uzrakstīts, ņemot vērā visu rakstā teikto. Jūs varat to vienkārši paņemt un izmantot. Un rakstā ir paskaidrots, kāpēc un kāpēc. Ja jūs neinteresē "kāpēc un kāpēc" - ritiniet līdz beigām līdz secinājumam un saitei, lai lejupielādētu piemēru.

Viens un visvairāk stiprās puses Delphi programmēšanas vide ir tās atvērtā arhitektūra, pateicoties kurai Delphi pieļauj sava veida metaprogrammēšanu, ļaujot "programmēt programmēšanas vidi". Šī pieeja paceļ Delphi kvalitatīvi jaunā lietojumprogrammu izstrādes sistēmu līmenī un ļauj iegult papildu instrumenti kas atbalsta gandrīz visus lietojumprogrammu sistēmu izveides posmus. Tik plašas iespējas paveras, pateicoties Delphi ieviestajai tā saukto atvērto saskarņu koncepcijai, kas ir saikne starp IDE (Integrated Development Environment) un ārējiem rīkiem.

Šajā rakstā galvenā uzmanība pievērsta Delphi atvērtajām saskarnēm un sniegts pārskats par to nodrošinātajām funkcijām. Delphi definē sešas publiskās saskarnes: rīka interfeiss, dizaina interfeiss, ekspertu interfeiss, failu interfeiss, rediģēšanas interfeiss un versijas vadības interfeiss. Maz ticams, ka šī raksta ietvaros mēs varētu detalizēti aptvert un ilustrēt katra no tiem iespējas. Delphi avota teksti palīdzēs jums rūpīgāk izprast aplūkojamos jautājumus, jo izstrādātāji tos ir nodrošinājuši ar detalizētiem komentāriem. Klašu deklarācijas, kas attēlo publiskās saskarnes, ir ietvertas atbilstošajos moduļos direktorijā ...\Delphi\Source\ToolsAPI. Dizaina interfeiss (modulis DsgnIntf.pas) nodrošina līdzekļus, lai izveidotu rekvizītu redaktorus un komponentu redaktorus.

Rekvizītu un komponentu redaktori ir atsevišķas diskusijas vērta tēma, tāpēc atceramies tikai to, ka rekvizītu redaktors kontrolē objektu inspektora uzvedību, kad mēģināt mainīt attiecīgā rekvizīta vērtību, un komponentu redaktors tiek aktivizēts, kad dubultklikšķi kreiso peles pogu uz veidlapā ievietotā komponenta attēla. Versiju kontroles interfeiss (modulis VCSIntf.pas) ir paredzēts versiju kontroles sistēmu izveidei. Sākot ar versiju 2.0, Delphi atbalsta Intersolv PVCS integrēto versiju kontroles sistēmu, tāpēc vairumā gadījumu nav nepieciešams izstrādāt savu sistēmu. Šī iemesla dēļ mēs arī neņemsim vērā versiju vadības interfeisu. Failu interfeiss (modulis FileIntf.pas) ļauj no jauna definēt IDE darba failu sistēmu, kas ļauj izvēlēties savu failu glabāšanas veidu (piemēram, datu bāzes servera Memo laukos). Rediģēšanas interfeiss (modulis EditIntf.pas) nodrošina piekļuvi avota teksta buferim, kas ļauj analizēt un ģenerēt kodu, noteikt un mainīt kursora pozīciju koda redaktora logā un kontrolēt avota teksta sintakses izcelšanu.

Īpašās klases nodrošina saskarnes ar veidlapā ievietotajiem komponentiem (komponenta veida noteikšana, atsauces uz vecāk- un pakārtotajiem komponentiem, piekļuve rekvizītiem, fokusa nodošana, dzēšana utt.), pašai veidlapai un projekta resursu failam. Rediģēšanas interfeiss ļauj identificēt arī tā sauktos moduļu paziņotājus, kas nosaka reakciju uz tādiem notikumiem kā moduļa avota koda maiņa, formas modificēšana, komponenta pārdēvēšana, moduļa saglabāšana, pārdēvēšana vai dzēšana, projekta resursa maiņa. failu utt. Rīka interfeiss (modulis ToolIntf. pas) nodrošina izstrādātājiem līdzekļus, lai iegūtu Galvenā informācija par IDE stāvokli un tādu darbību veikšanu kā projektu atvēršana, saglabāšana un aizvēršana, un atsevišķi faili, moduļa izveidošana, informācijas iegūšana par aktuālo projektu (moduļu un veidlapu skaits, to nosaukumi utt.), reģistrācija failu sistēma, atsevišķu moduļu saskarņu organizēšana utt. Papildus moduļu paziņotājiem rīka interfeiss definē pievienojumprogrammu paziņotājus, kas paziņo par tādiem notikumiem kā failu un projektu atvēršana/aizvēršana, projekta darbvirsmas faila ielāde un saglabāšana, projekta moduļu pievienošana/izslēgšana, pakotņu instalēšana/atinstalēšana, projekta apkopošana, Atšķirībā no moduļu paziņotājiem, pievienojumprogrammu paziņotāji ļauj atcelt dažu notikumu izpildi.

Turklāt rīka interfeiss nodrošina iespēju piekļūt Delphi IDE galvenajai izvēlnei, ļaujot tajā iegult papildu vienumus. Ekspertu interfeiss (modulis ExptIntf.pas) ir pamats ekspertu padomdevēju izveidei - programmatūras moduļi, kas ir iegulta IDE, lai paplašinātu tās funkcionalitāti. Eksperta piemērs ir Delphi datu bāzes veidlapu vednis, kas ģenerē veidlapu datu bāzes tabulas satura apskatei un modificēšanai. Pēc ekspertu klases noteikšanas mums ir jāpārliecinās, ka Delphi “uzzina” par mūsu ekspertu. Lai to izdarītu, tas jāreģistrē, izsaucot procedūru RegisterLibraryExpert, kā parametru nododot tai ekspertu klases gadījumu. Kā ilustrāciju izveidosim vienkāršu esStandard stila ekspertu, kas, izvēloties atbilstošo Delphi izvēlnes vienumu, parāda ziņojumu, ka tas darbojas. Kā redzams no iepriekšējās tabulas, esStandard stilam ir jāignorē sešas metodes:

Lai eksperts tiktu “aktivizēts”, jāizvēlas izvēlnes vienums Komponents/Instalēt komponentu... , dialoglodziņā Browse jāizvēlas modulis, kurā atrodas eksperts (mūsu gadījumā exmpl_01.pas), jānoklikšķina uz Labi un pēc kompilēšanas. dclusr30.dpk pakotni Delphi galvenajā izvēlnē palīdzības sadaļā, jāparādās vienumam Simple Expert 1, atlasot, parādās informatīvs ziņojums “Standard Expert Started!”. Kāpēc Delphi sadaļā Palīdzība ievieto ekspertu izvēlnes vienumu, paliek noslēpums. Ja jums nepatīk, ka izvēlnes vienums parādās jebkur Delfos, nevis tur, kur vēlaties, ir iespējama šāda iespēja: izveidot pievienojumprogrammas stila ekspertu, kas novērš automātisku izvēlnes vienuma izveidi, un pievienojiet izvēlnes vienumu “manuāli”, izmantojot rīka interfeisu. Tas ļaus jums patvaļīgi iestatīt jaunā vienuma atrašanās vietu galvenajā izvēlnē.

Lai pievienotu izvēlnes vienumu, tiek izmantota TIToolServices klase - rīka interfeisa pamats - un TIMainMenuIntf, TIMEnuItemIntf klases, kas ievieš saskarnes ar IDE galveno izvēlni un tās vienumiem. TIToolServices klases ToolServices instanci izveido pati IDE, kad tā tiek inicializēta. Ņemiet vērā, ka izstrādātāja pienākums ir atbrīvot Delphi galvenās izvēlnes un tās vienumu saskarnes. Pa ceļam nedaudz sarežģīsim Expert Advisor funkcionālo slodzi: aktivizējot tā izvēlnes vienumu, tas izsniegs sertifikātu par gadā atvērtā projekta nosaukumu. Šis brīdis vidē: Šajā piemērā centrālo vietu ieņem funkcija AddIDEMenuItem, kas Delphi IDE galvenajai izvēlnei pievieno izvēlnes vienumu. Kā parametri tam tiek nodots jaunā izvēlnes elementa teksts, tā identifikators, tā vienuma identifikators, pirms kura tiek ievietots jaunais elements, atslēgas simboliskais attēlojums, kas kopā ar Ctrl taustiņš var izmantot ātra piekļuve uz jauno vienumu un notikumu apdarinātāju, kas atbilst jaunā vienuma atlasei. Mēs esam pievienojuši jaunu izvēlnes vienumu sadaļai Skats pirms vienuma Pulksteņi.

Tagad iepazīsimies ar paziņotājiem. Definēsim pievienojumprogrammas paziņotāju, kas izseko projektu slēgšanas/atvēršanas brīžus un attiecīgi pielāgo lauku, kurā tiek saglabāts nosaukums aktīvs projekts(Īsuma labad izlaidīšu to metožu ieviešanu, kuras nav mainījušās salīdzinājumā ar iepriekšējo piemēru): Lai ieviestu paziņotāju, mēs definējām TAddInNotifier klasi, kas ir TIAddInNotifier pēctecis, un ignorējām FileNotification metodi. IDE izsauks šo metodi katru reizi, kad notiks notikums, uz kuru pievienojumprogrammas paziņotājs spēj reaģēt (katrs šāds notikums tiek apzīmēts ar atbilstošo TFileNotification tipa konstanti). TAddInNotifier klases lauks Eksperts tiek izmantots, lai atsauksmes ar ekspertu (metode TAddInNotifier.FileNotification). Eksperta iznīcinātājā pieteicējs tiek nereģistrēts un paziņotājs tiek iznīcināts. Tagad ilustrēsim moduļu paziņotāju izmantošanu. Izveidosim pievienojumprogrammas ekspertu, kas ģenerē ziņojumus par katru projekta faila saglabāšanas darbību (īsuma labad mēs nenodrošinām mums jau pazīstamo metožu ieviešanu): Šajā piemērā pievienojumprogrammas eksperts uzrauga notikumus, kas atbilst projektu atvēršana/slēgšana.

Katru reizi, kad tiek atvērts projekts, tiek reģistrēts projekta failam atbilstošs moduļa paziņotājs. Īstenošanas ziņā modulārie paziņotāji ir līdzīgi pievienojumprogrammu paziņotājiem: mēs definējam TModuleNotifier klasi, kas ir TIModuleNotifier pēctecis, un ignorējam tās Notify un ComponentRenamed metodes. IDE izsauc metodi Notify, kad notiek noteikti ar šo moduli saistīti notikumi; šīs metodes ietvaros tiek noteikta reakcija uz konkrētu notikumu. Metode ComponentRenamed tiek izsaukta, kad mainās moduļa veidlapā esošā komponenta nosaukums. Lūdzu, ņemiet vērā, ka mēs šo metodi neizmantojam, bet mums tā ir jāpārtrauc, pretējā gadījumā, mainoties komponenta nosaukumam, tiks izsaukta bāzes klases abstraktā metode, kas noved pie neparedzamām sekām.

Moduļa paziņotāja reģistrēšana ir nedaudz sarežģītāka nekā paziņotāja pievienojumprogrammas reģistrēšana: vispirms mēs iegūstam moduļa interfeisu (TIModuleInterface) un pēc tam reģistrējam paziņotāju, izmantojot moduļa interfeisu. Kad projekts tiek slēgts, moduļa paziņotājs tiek atcelts (atkal izmantojot TIModuleInterface) un paziņotājs tiek iznīcināts. Noslēgumā mēs parādīsim, kā jūs varat noteikt kursora pozīciju koda redaktora logā. Izveidosim ekspertu padomnieku, kas, izvēloties atbilstošo izvēlnes vienumu, parādītu ziņojumu ar aktīvā faila nosaukumu un kursora pozīciju tajā (tiek dota tikai šim piemēram būtisku metožu ieviešana): Lai noteiktu kursora pozīciju, mums jāsaņem šāda saskarņu secība: moduļa interfeiss (TIModuleInterface); koda redaktora saskarne (TIEditorInterface); moduļa skata saskarne redaktora logā (TIEditView).

Ja aktīvais fails ar avota tekstu (*.pas) ir aktīvs, izvēloties eksperta izvēlnes vienumu, tiek parādīts ziņojums, kurā ir aktīvā faila nosaukums un kursora pašreizējā atrašanās vieta tajā. Ja aktīvais fails nav pas fails, ziņojums netiek izdots. Aktīvā faila nosaukuma iegūšanai tiek izmantota TIToolServices klases metode GetCurrentFile. Tas noslēdz mūsu diskusiju par publisko saskarņu izmantošanas veidiem. CD-ROM satur visu norādīto piemēru pirmkodu. CD-ROM satur arī sarežģītāku un paplašinātu piemēru, kurā ir pievienots eksperts, kas ļauj lietotājam pievienot grāmatzīmi Delphi moduļu pirmkodam. Failā bkmrks97.htm ir īss ceļvedis par grāmatzīmju eksperta instalēšanu un lietošanu. Tātad šajā rakstā publiskās saskarnes tiek apspriestas vispārīgi un sniegti to izmantošanas piemēri. Atkal, pateicoties atvērto saskarņu pirmkodu pieejamībai, jūs varat viegli saprast jūs interesējošo informāciju. Mēs ceram, ka sniegtās iespējas daudzveidīgās atvērtās saskarnes, sniegs jums vairāk nekā vienu drosmīgu un noderīgu ideju.