Tehnologia de automatizare Ole

OLE reprezintă legarea și încorporarea obiectelor. Automatizarea OLE face parte din tehnologia OLE, care răspunde de integrarea aplicațiilor (vedeți visele lui Jeff Raskin în Capitolul I). O COM nu este ceva de genul unui port COM sau chiar un model de obiect component. Diferența dintre OLE Automation și COM este că aceasta din urmă a apărut mai târziu și este o versiune mai avansată care permite, printre altele, ca aplicațiile care interacționează să fie pe diferite computere. Pentru simplitate, vom presupune că nu există nicio diferență între sarcinile noastre pentru sarcinile noastre. Modulul responsabil pentru obiectele de automatizare OLE din Delphi are numele de vorbire ComObj. Vom vorbi OLE, adică OLE Automation, iar termenul "COM" de acum încolo, vom încerca să nu spunem cu voce tare, pentru a nu deveni confuz.







Apropo, ActiveX din aceeași serie, doar componentele ActiveX sunt de obicei realizate special applet-uri (Java alternativă). Componentelor ActiveX în mod eficient „orb“ Internet Explorer, WebBrowser nostru favorit nu este altceva decât ca o provocare pentru aceste componente. Componentele ActiveX suntem în această carte nu ia în considerare, în primul rând, pentru că cu ei mult mai ușor să lucreze prin Visual Basic, și în al doilea rând, pentru că, în măsura în care este posibil, este mai bine să-i să nu lucreze din cauza „glyuchnosti“ lentoarea si rigiditate extremă de a utiliza. Cu toate acestea, OLE Automation, după cum vom vedea, nu este cu mult diferită în acest sens de componentele ActiveX.

Note despre câmpuri

Aș dori să subliniez diferența dintre OLE / COM / ActiveX și interfața API- convențională. OLE-obiect - nu este o funcție sau procedură, precum și aplicația la care se aplica, în ansamblu, cu toate avantajele și dezavantajele sale. Am avut un bun exemplu în acest sens este văzut în WebBrowser greoi și prost gestionate, dar altfel destul de eficient. Prin urmare, prvvilno pus problema, care poate rezolva tehnologia OLE, există încorporarea unor aplicații (MS Word, MS Excel, Acrobet Reeder, Internet Explorer, și așa mai departe. N.) în programul tău, sau doar suna un alt program (nu funcționează!) Pentru a efectua anumite acțiuni. Mai mult decât atât, spre deosebire de apelurile API, acest lucru se poate face de la un computer la distanță prin intermediul rețelei. Descrierea sarcinilor de acest fel, puteți găsi un web orice număr (a se vedea. Ex. [24]). Mai târziu, vom încerca să facem un pic diferit și de a afla cum puteți merge mai departe în utilizarea OLE obiecte - similare cu API funcția - pentru procedurile pe care noi înșine nu știm cum, cu ajutorul unui apel de aplicație care această capacitate are, dar stvrayas faptul apelului pentru a ascunde. După cum vom vedea, vom reuși doar otchvsti.

Prin OLE pot fi în cererea dumneavoastră de a face tot ceea ce el poate app care are de automatizare Server. Pentru a face acest lucru, asigurați-vă că cererea dvs. a fost de automatizare Container. Acești termeni înfricoșătoare nu ar trebui să te sperie - creați pur și simplu un obiect gazdă cu un nume specific, cu ajutorul Createoieobject funcția de apel și de a le manipula. I. important, nu uitați să-l distrugă după aceea, în cazul în care există nuanțe: desigur, puteți pur și simplu distruge obiectul în cererea sa, ca de obicei, dar el este în sistemul nu dispare. Prin urmare, este necesar să se distrugă prima metodă adecvată de dublu (cum ar fi du-te Închide Quit) însuși obiectul este închis și apoi distruge link către acesta în programul dvs. prin apelarea funcției Nedesemnată, acestea din urmă nu au nici măcar (la fel cum nu distruge în mod necesar variabila de asociere fișier anumit nume de fișier, dar asigurați-vă că pentru a închide). Dacă uitați să-l distrugă, consecințele pot fi destul de trist, și să păstreze în minte că, dacă depana programul din mediul Delphi este necesar să se pună capăt din cauza unei erori, obiectul de funcționare va „închide“, și va trebui să fie eliminate pentru o listă a sistemului de aplicații care rulează mijloace (via ++). Desigur, cu toate aceste manipulări, aplicația însăși și clasele de automatizare trebuie să fie instalate în sistem, altfel nimic nu va ieși.







După ce ați creat un obiect OLE, puteți aproape să uitați de Delphi. Metodele și proprietățile obiectului ar trebui să fie acum apelate din setul proprietăților sale și

Delphi nu are nimic de-a face cu această relație. Și nu numai că nu puteți obține indicația obișnuită despre proprietate sau metodă, punând un punct după numele obiectului - compilatorul nu va verifica deloc ceea ce ați scris acolo. Și chiar manipularea erorilor prin mecanismul de încercare excepțională. cu excepția faptului că nu veți reuși. Acest lucru, desigur, este rău, deoarece acele obiecte cu care avem de-a face (obiecte MS Office) au un mecanism dezgustător de manipulare a erorilor. Cu toate acestea, această dispoziție nu funcționează întotdeauna, ci numai în cazul "legării târzii" a obiectelor, pe care o vom discuta mai târziu.

Apoi, vom vorbi doar despre obiectele din MS Office. Dintre toate sarcinile care pot fi rezolvate prin OLE, numirea funcțiilor Office este una dintre cele mai frecvente, de exemplu The Bat! aceasta este modalitatea de a verifica ortografia. Nu este nevoie să verificăm ortografia, suntem deja literați, dar ne-ar plăcea cu adevărat să citim textul documentului în format DOC sau RTF. De fapt, acest lucru se poate face, cel puțin, în trei moduri diferite.

„Oficială“ Track-utilizează componente de la Delphi marcaje servere. Există mai multe aplicații în cazul în care aceste componente sunt mai convenabil de a utiliza - în cazul în care numai din cauza verificatorul sintaxă. gestiona complex decât un simplu OLE-obiecte sunt, de exemplu, metodele VBA și WordBasic poate fi numit cu un număr arbitrar de parametri, iar Delphi-o procedură în care acestea sunt transformate - nr. Există și alte lucruri care cazul nostru nu are un impact asupra lor (cum ar fi metoda Connect). Site-ul este expus Borland de ajutor pentru aceste componente pentru a cincea versiune (ftp://ftp.borland.com /pub/delphi/techpubs/delphi5/d5ms97.zip), dar, ca de obicei, confuz și uninformative.

Aproape același caz, atunci când se creează componente-servere este oferit independent prin importul de biblioteci TLB MS Word. Apoi, la etapa de compilare, parametrii și apelurile de metodă sunt monitorizate. Un alt avantaj al ambelor metode, încă purtând numele de „legare timpurie“ - crearea de OLE-server ruleaza un pic mai repede decât cu o trimitere dinamică la acesta în cursul programului ( „legarii“). În plus, cu legare dinamică, nu vor funcționa toate metodele de obiecte. Dar nu ne place să acționăm "oficial" și, dacă putem, o vom face cât mai ușor posibil - de unul singur.

Pentru legarea târzie, sunt sugerate două variante de obiecte. În primul rând - la începutul o- 90 Microsoft a creat un dialect special al limbii sale preferate de bază numit cuvânt de bază, în special „ascuțit“ de macro-uri de programare pentru Word și accesul la OLE-servere. Lucrul cu acesta este destul de simplu, funcțiile sunt cu un ordin de mărime mai mic decât în ​​VBA, și seamănă cu iubitul nostru Pascal - la fel de mult ca și Basic. Singura, dar foarte mare „dar“ în acest caz este faptul că întrebările frecvente de Cuvântul de bază ajunge în zilele noastre neliniștită: a făcut parte din pachetul Word 6.0, și Office 95, și apoi din surse oficiale a fost plecat, nu a fost menționat doar tabelul în continuare oficial corespondență . Aceasta este o referință (pentru Word 6.0) în fișierul wrdbasic.hlp, și am, dar pentru a pune pe disc pentru această carte eu nu pot, t. Pentru a. Deși Word 6.0 pentru o lungă perioadă de timp nu mai este acceptată, drepturile de distribuție, eu nu fac am. Prin urmare, vom face acest lucru, vă voi arăta cum să opereze prin cuvântul de bază la o lectură îngustă a problemei și de a converti fișiere în format RTF DOC și, iar apoi vom acționa „de regulile“ și manipula obiecte prin intermediul VBA.







Articole similare

Trimiteți-le prietenilor: