Ghidul de referință Delphi

Exemplu de aplicație OLE

Salvarea unui obiect OLE în baza de date

    1. Privire de ansamblu asupra
    2. Din articol veți afla informații de bază despre OLE, câteva lucruri despre OLE 2 și OLE Automation. Acest articol descrie modul de utilizare a obiectului TOLEContainer pentru a construi o aplicație OLE în Delphi.
    3. OLE Elementele de bază
    4. Înainte de a trece la elementele de bază OLE, este necesar să studiem terminologia.

    Abrevierea OLE reprezintă obiecte legate și încorporate (obiecte atașate și embedded - BEER J). Datele partajate între aplicații se numesc obiect OLE. O aplicație care poate conține obiecte OLE se numește container OLE (Container OLE). O aplicație ale cărei date pot fi incluse în containerul OLE ca obiect OLE se numește un server OLE.

    După cum sugerează și numele, obiectele OLE pot fi atașate la containerul OLE sau incluse în el. În primul caz, datele vor fi stocate într-un fișier pe disc, orice aplicație va avea acces la aceste date și va putea face modificări. În cel de-al doilea caz, datele sunt incluse în containerul OLE și numai acesta poate vizualiza și modifica aceste date.

    În natură, există mai multe tipuri de OLE, care diferă în modul în care este activat serverul OLE. Versiunea OLE 1 pornește serverul într-o fereastră separată. OLE 2 implementează ceea ce se numește activare și editare în locație. În acest caz, serverul rulează în interiorul aplicației client, modifică aspectul meniului sistem, barele de instrumente etc. Dezvoltarea ideii OLE a dus la apariția automatizării OLE - aplicația client poate executa o parte din codul serverului. Tipul OLE al obiectului plasat în programul client este determinat de ce versiune OLE acceptă serverul.

  1. Obiectul TOLEContainer
  2. Obiectul TOLEContainer este localizat pe Componentă pagină Palete de sistem și este necesar pentru a crea aplicații container OLE. TOLEContainer ascunde toate complexitățile asociate cu organizarea internă a OLE și oferă programatorului o interfață destul de simplă. Să construim cea mai simplă aplicație folosind obiectul OLE. Creați un nou proiect și plasați-l pe formularul TOLEContainer, în Object Inspector, faceți dublu clic pe proprietatea ObjClass sau ObjDoc - apare fereastra standard Windows "Insert Object" (vezi Figura 1)

    În acest dialog există o listă a tuturor serverelor OLE înregistrate (înregistrarea are loc când programul este instalat). Tipul obiectului OLE este determinat exact de serverul pe care îl specificați. Dacă creați un obiect nou (Creare nou), atunci când faceți clic pe OK, pornește programul server OLE, în care este creat un obiect nou. După ieșirea din programul server, în program este inclus obiectul nou OLE (obiect încorporat). Obiectul OLE poate fi creat utilizând un fișier existent în formatul unuia dintre serverele OLE. Pentru aceasta, selectați Creare din fișier (vezi Fig.2)

    Obiectul selectat poate fi inclus în aplicație și poate fi atașat prin marcarea elementului Link.

    Deci, atunci când creați proiectul nostru, să creați un obiect nou selectând, de exemplu, documentul Microsoft Word (figura 1). Faceți clic pe OK și după pornirea MS Word, tastați orice text ("Acesta este un obiect OLE al documentului Microsoft Word"). Pentru a finaliza lucrarea din meniu, există un element special "Fișier | Închideți și reveniți la Form1" (Win'95 + MS Word 7.0). Rulați proiectul, acesta va arăta cam așa:

    Faceți dublu clic pe containerul OLE - MS Word va începe cu documentul din obiectul OLE, care poate fi editat și toate modificările sunt salvate în obiectul OLE.

    . Dacă în timpul designului selectați un obiect care urmează să fie inclus în containerul OLE, este scris complet în fișierul formular (FORM1.DFM) și apoi compilat în fișierul EXE. În cazul obiectelor foarte mari, acest lucru poate duce la pauze îndelungate în timpul proiectării și chiar la o eroare "În afara resurselor". Prin urmare, se recomandă legarea obiectelor mari.

    TOLEContainer permite să se afișeze în obiectul programului în forma sa directă (cu grade diferite de creștere sau descreștere - proprietate Zoom) sau sub formă de pictograme definite în dialogul din Fig.1 (display ca Pictogramă).

    Alegerea obiectului OLE poate să apară nu numai în timpul proiectării, dar și în timpul executării programului (despre acest lucru puțin mai târziu). Rezultatele lucrului cu acest obiect pot fi salvate ca fișiere și data viitoare pentru a le restabili de acolo, pentru că acest TOLEContainer are două metode SaveToFile și LoadFromFile.

  3. Exemplu de aplicație OLE
  4. Printre demo-uri incluse în Delphi, există două legate de lucrul cu OLE obiecte (directoare X: \ DELPHI \ DEMOS \ OLE2 și X: \ DELPHI \ DEMOS \ doc \ OLE2). Al doilea este mai complet, care, printre altele, este un exemplu de construire a unei aplicații MDI. Acest program demonstrează toate caracteristicile principale ale TOLEContainer și vă permite:

    - Creați un nou container OLE în timpul rulării;

    - inițializa obiectul OLE sau caseta de dialog Windows standard „Inserare obiect“, sau prin utilizarea Clipboard, fie prin utilizarea tehnicii de „drag-and-arunca“ (drag-and-drop);

    - Salvați obiectul OLE într-un fișier și restaurați-l de acolo;

    Figura 4 prezintă un exemplu de aplicație MDI care conține două ferestre copil cu obiecte OLE. Pentru a crea un obiect OLE nou, selectați elementul de meniu Fișier | Nou și apoi Editați | Inserați obiect. Va apărea un dialog standard Windows pentru a inițializa obiectul OLE (a se vedea Figura 1). Dacă aplicația server OLE poate să stocheze informații despre obiectul OLE din Clipboard, puteți inițializa obiectul utilizând elementul de meniu Editare | lipire specială.

    Uneori este necesar să stocați obiecte OLE nu în fișiere, ci în baza de date (câmpul BLOB din tabel). Desigur, în acest caz, obiectul OLE trebuie să fie încorporat în scopul portabilității. Din păcate, în livrarea standard Delphi nu există niciun obiect special de tip TDBOLEContainer pentru aceste scopuri, dar obiectul OLE poate fi salvat și restaurat utilizând metodele SaveToStream și LoadFromStream. De exemplu:

    procedura TOLEForm.SaveOLE (expeditor: TObject);

    OLEContainer.SaveToStream (BlSt ca TStream);