CONTROLUL OLE
Sistemul Visual Basic permite transferarea si partajarea informatiilor care provin de la diferite aplicatii standard (de exemplu Paint, Sound Recorder, WordPad, Object Packager) si nestandard (de exemplu Word, Excel, Equation Editor si altele). Facilitatea este denumita īnlantuirea si īncapsularea obiectelor (Object Linking and Embedding, presurtat OLE). Daca pe forma aplicatiei se aseaza un control OLE, atunci exista posibilitatea ca !n acest container sa se insereze diferite obiecte, care provin din diferite aplicatii. Obiectul introdus īn container poate fi ulterior modificat, prin apelarea directa a programului care a generat obiectul depus īn container. Astfel, de exemplu, daca īn containerul OLE se introduce un obiect generat cu programul Microsoft Equation, atunci prin efectuarea unui dublu clic asupra obiectului ecuatie se va lansa automat īn executie programul Microsoft Equation, si obiectul de tip ecuatie poate fi modificat prin comenzile editorului de ecuatie. Obiectul preluat de la aplicatia server poate fi īncapsulat sau īnlantuit īn container.
Cānd se īncapsuleaza un obiect īn containerul OLE, se face o copie a informatiilor din aplicatia server si se transfera aceasta copie īn container, īn continuare nu va mai exista nici o legatura spre documentul din care a fost transferata informatia. Deci, cānd se editeaza un obiect īncapsulat, documentul sursa nu va fi īn nici un fel afectat. De exemplu sa presupunem ca īn containerul OLE a fost īncapsulat un desen. Daca se modifica desenul īncapsulat din interiorul aplicatiei Visual Basic, desenul din documentul sursa ramāne nemodificat.
Cānd se īnlantuie un obiect īn containerul OLE, nu este efectuata nici o copiere a informatiilor, ci se creeaza o referinta sau o īnlantuire spre fisierul care contine informatia (fisierul sursa). Astfel, cānd se e 535i87f diteaza un obiect īnlantuit, īn realitate se editeaza informatiile din fisierul sursa. Containerul contine doar o legatura la locatia unde este memorat obiectul sursa.
Controlul OLE este o componenta standard a programului Visual Basic;
simbolul grafic aferent are forma unei iconite. Numarul obiectelor care pot fi īncapsulate sau īnlantuite īntr-un control OLE depinde de numarul de aplicatii instalate pe calculatorul utilizat. La un moment dat īnsa containerul OLE poate contine numai un singur obiect. Aplicatiile de tip OLE pot fi create atāt īn perioada de elaborare a proiectului, cāt si īn timpul executiei.
Pentru a crea o aplicatie de tip OLE īn timpul elaborarii proiectului:
Se aseaza pe forma un control OLE. īn urma acestei actiuni se afiseaza o
fereastra de dialog intitulata Insert Object, specializata īn īncapsularea si īnlantuirea obiectelor.
Fig.pag. 410 sub forma unei ferestre.
2. Daca īn acest moment se executa un clic pe butonul de comanda Cancel, fereastra de dialog va fi īnchisa si nu se creeaza nici un obiect. Aceasta fereastra īnsa oricānd poate fi reafisata. Daca se efectueaza un clic cu butonul drept al mouse-ului pe controlul OLE, atunci se afiseaza un meniu local. Comenzile afisate īn acest meniu depind de starea controlului OLE; ele sunt centralizate īn tabelul urmator:
<tabel>
*Comanda
Poate fi activata īn meniul local daca:
*Insert Object
īntotdeauna activa. Aceasta comanda afiseaza fereastra de dialog Insert Object.
*Paste Special
Masa de montaj contine un obiect valid. Aceasta comanda afiseaza fereastra de dialog Paste Special.
*Delete Embedded Object
*Containerul OLE contine un obiect īncapsulat. Prin alegerea acestei comenzi obiectul respectiv va fi īndepartat din container.
*Delete Link
Containerul OLE contine un obiect īnlantuit. Prin alegerea acestei comenzi obiectul respectiv va fi īndepartat din container.
*Create Link
Proprietatea SourceDoc a controlului OLE este configurata cu un nume valid de fisier. Fisierul respectiv va fi īnlantuit de containerul OLE.
*Create Embedded Object
Proprietatea Class sau proprietatea SourceDoc a controlului OLE este configurata cu un nume valid de fisier. Fisierul respectiv va fi īncapsulat īn containerul OLE.
</tabel>
3. Sa presupunem ca este afisata fereastra de dialog Insert Object. Daca se doreste crearea unui obiect nou, care va fi īncapsulat īn containerul OLE, atunci se va selecta butonul de optiune Create New. Din lista derulanta Object Type se va selecta tipul obiectului care se īncapsuleaza si se va da comanda OK.
4. Īn urma acestei actiuni se lanseaza īn executie aplicatia server. Se creeaza obiectul īncapsulat īn container, de exemplu o ecuatie creata cu ajutorul programului server Microsoft Equation 3.0.
Dupa ce obiectul a fost creat, se revine la aplicatia OLE. Noul obiect creat va fi īncapsulat īn containerul OLE. īn cazul unui obiect ecuatie revenirea īn aplicatia OLE poate fI realizata prin meniul File, comanda Exit and Return.
Daca īn timpul executiei programului OLE se doreste efectuarea unor modificari asupra obiectului din container, atunci se va efectua un dublu clic asupra obiectului, prin care se va lansa īn executie aplicatia server.
Daca se doreste īncapsularea sau īnlantuirea unui obiect creat si salvat anterior cu ajutorul aplicatiei server, atunci la pasul 3 se va alege butonul de optiune Create from File. Fereastra de dialog are aspectul urmator:
Fig.pag. 411 sub forma unei ferestre.
Īn cutia de text File se specifica numele fisierului care urmeaza sa fie īncapsulat sau īnlantuit īn containerul OLE. Selectarea fisierului poate fi realizata si cu ajutorul butonului de comanda Browse, care afiseaza o fereastra de dialog care usureaza alegerea fisierului necesar. Daca nu este selectata cutia de validare Link, atunci obiectul specificat va fi īncapsulat īn container (deci īn momentul īn care se lanseaza īn executie programul OLE, obiectul poate fi activat printr-un dublu clic, prin care se va lansa īn executie programul server care a creat fisierul respectiv). Daca este selectata cutia de validare, atunci obiectul respectiv va fi īnlantuit īn container (deci modificarile efectuate cu programul server īn fisierul īnlantuit vor fi reflectate automat īn containerul OLE).
Daca īn fereastra de dialog Insert Object se selecteaza cutia de validare Display As Icon, atunci obiectul din container va fi afisat sub forma unui simbol grafic, īn acest caz va apare si un buton de comanda etichetat cu Change Icon, care afiseaza o fereastra de dialog, prin care se poate modifica simbolul grafic utilizat.
Uneori se doreste īncapsularea sau īnlantuirea unor obiecte, care au fost copiate anterior pe masa de montaj, īn aceste conditii meniul local al aplicatiei OLE va contine si comanda Paste Special. Prin selectarea acestei comenzi se va afisa o fereastra de dialog care are aspectul urmator:
Fig.pag. 412 sub forma unei ferestre.
Daca se alege butonul de optiune Paste, atunci obiectul depus pe masa de montaj va fi īncapsulat īn containerul OLE. Locatia sursa a obiectului depus pe masa de montaj este afisata īn linia etichetata cu Source. Daca se alege butonul de optiune Paste Link, atunci obiectul respectiv va fi īnlantuit īn containerul OLE.
Sa presupunem ca proprietatea SourceDoc a controlului OLE este configurata cu un nume valid de fisier, de exemplu o imagine: C:\Windows\Arches.bmp. Īn acest caz meniul local aferent containerului OLE va contine si comenzile Create Link si Create Embedded Object, prin care fisierul respectiv poate fi īnlantuit sau īncapsulat īn containerul OLE.
Aplicatiile de tip OLE pot fi create si īn timpul executiei, īn acest caz se vor folosi diferite metode speciale ale controlului OLE, de exemplu InsertObjDlg, PasteSpecialDlg si altele.
Cele mai uzuale metode ale controlului OLE sunt urmatoarele:
<titlu>Metoda InsertObjDlg
Afiseaza fereastra de dialog Insert Object, care permite īncarcarea īn containerul OLE a unui obiect īncapsulat sau īnlantuit. Daca containerul a continut un obiect, vechiul obiect va fi distrus. Metoda se apeleaza printr-o constructie de forma:
OLE1.InsertObjDIg
<titlu>Metoda PasteSpecialDlg
Afiseaza fereastra de dialog Paste Special, prin care utilizatorul poate controla modul īn care un obiect depus pe masa de montaj va fi inserat īntr-un container OLE. Prin aceasta fereastra se poate decide daca
obiectul respectiv va fi īncapsulat sau īnlantuit, si daca va fi sau nu afisat sub forma unui simbol grafic; de asemenea se permite selectarea formatului elementul inserat. Daca containerul a continut un obiect, vechiul obiect va fi distrus. Metoda se apeleaza printr-o constructie de forma:
OLE1 PasteSpecialDlg
<titlu>Metoda Close
Dezactiveaza obiectul din container si termina aplicatia server. Obiectul OLE ramāne īn container. Metoda se aplica numai obiectelor īncapsulate, neavānd nici un efect asupra obiectelor īnlantuite. Aceasta metoda se apeleaza printr-o constructie de forma:
OLE1.Close
<titlu>Metoda Copy
Copiaza obiectul depus īn containerul OLE pe masa de montaj. Pot fi copiate atāt obiecte īnlantuite, cāt si īncapsulate. Aceasta metoda se apeleaza printr-o constructie de forma:
OLE1.Copy
<titlu>Metoda Paste
Insereaza continutul mesei de montaj īn containerul OLE. Aceasta metoda se apeleaza printr-o constructie de forma
OLE1.Paste
<titlu>Metoda Delete
sterge obiectul continut īn containerul OLE si elibereaza memoria asociata obiectului respectiv. Aceasta metoda permite stergerea explicita a obiectului continut īn container; se mentioneaza faptul ca obiectul din container este sters automat īn momentul īn care forma este īnchisa sau īn cazul īn care obiectul din container este īnlocuit cu un obiect nou. Metoda este apelata printr-o constructie de forma:
OLE1.Delete
<titlu>Metoda Update
ncarca (actualizeaza) data curenta a aplicatiei server īn containerul OLE. Metoda este apelata printr-o constructie de forma:
OLE1.Update
<titlu>Metoda CreateEmbed
Creeaza un obiect īncapsulat dintr-un fisier specificat. Aceasta metoda se apeleaza printr-o secventa de forma
OLE1.CreateEmbed DocSursa, Clasa
Argumentul DocSursa (de tip String) specifica numele fisierului din care se creeaza obiectul īncapsulat. Daca nu se specifica un anumit document sursa (pentru ca este vorba de un document nou), atunci acest argument trebuie initializat cu un sir vid (""). Argumentul optional Clasa este numele clasei obiectului īncapsulat (numele aplicatiei server). Acest argument este ignorat īn cazul īn care argumentul DocSursa contine un nume de fisier.
<titlu>Metoda CreateLink
Creeaza īn containerul OLE un obiect īnlantuit dintr-un fisier specificat. Metoda se apeleaza printr-o secventa de forma:
OLEl.CreateLink DocSursa, ElementSursa
Argumentul DocSursa (de tip String) specifica fisierul din care se creeaza obiectul īnlantuit. Argumentul optional ElementSursa (de tip String) desemneaza data din interiorul fisierului din care se creeaza obiectul īnlantuit.
<titlu>Metoda SaveToFile
Salveaza obiectul din containerul OLE īntr-un fisier binar. Metoda se apeleaza printr-o secventa de forma:
OLE1.SaveToFile NrFisier
Argumentul NrFisier este un numar īntreg care desemneaza numarul asociat fisierului binar deschis īn care se salveaza obiectul.
<titlu>Metoda ReadFromFile
īncarca īn containerul OLE un obiect dintr-un fisier care a fost salvat anterior cu metoda SaveToFile. Metoda se apeleaza printr-o secventa de forma:
OLE1.ReadFromFile NrFisier
Argumentul NrFisier este un numar īntreg care desemneaza numarul asociat fisierului binar deschis din care se īncarca obiectul.
<titlu>Metoda DoVerb
Deschide un obiect depus īn containerul OLE īn vederea efectuarii unei operatii (a unui "verb", de exemplu editarea obiectului respectiv). Aceasta metodase apeleaza printr-o secventa de forma:
OLE1.DoVerb Verb
Argumentul Verb este un numar īntreg care specifica natura operatiei care urmeaza sā fie efectuata cu obiectul continut īn containerul OLE.
Daca acest argument nu este specificat, atunci se va executa actiunea implicita aferenta obiectului, de regula activarea lui (verbul implicit al obiectului). Pentru specificarea argumentului Verb pot fi utilizate urmatoarele constante predefinite:
<table>
*Constanta
Valoare
Descriere
*vbOLEPrimary
Actiunea implicita a obiectului.
*vbOLEShow
Activarea obiectului īn vederea editarii lui. Daca aplicatia care a creat obiectul permite activare "pe loc", (īn interiorul containerului OLE, nu īntr-o fereastra separata), atunci obiectul este activat īn interiorul containerului OLE.
*vbOLEOpen
Deschiderea obiectului īntr-o fereastra separata.
*vbOLEHide
La obiectele īncapsulate ascunde aplicatia care a creat obiectul din container.
*vbOLEUIActivate
Daca obiectul permite o activare pe loc, atunci se activeaza obiectul īn interiorul containerului OLE si se afiseaza toate interfetele tip utilizator (de exemplu bare de unelte). Daca obiectul nu permite o activare pe loc, atunci obiectul nu va fi activat si se va declansa o eroare.
*VbOLEJnPlaceActivate
Daca utilizatorul muta focarul īn containerul OLE, atunci se creeaza o fereastra pentru obiectul din container si se pregateste obiectul respectiv īn vederea editarii lui. Daca obiectul nu permite sa fie activat printr-un clic simplu de mouse, atunci se declanseaza o eroare.
</tabel>
Principalele proprietati ale controlului OLE sunt urmatoarele:
<titlu>Proprietatea OLEType (de tip Integer)
Comunica starea obiectului continut īn containerul OLE, Aceasta proprietate poate fi utilizata numai īn executie. Valorile livrate de aceasta proprietate sunt centralizate īn tabelul urmator:
<tabel>
*Constanta
Valoare
Descriere
*vbQLELinked
Containerul OLE contine un obiect īnlantuit.
*vbOLEEmbedded
Containerul OLE contine un obiect īncapsulat.
*vbOLENone
Containerul OLE nu contine nici un obiect.
</tabel>
<titlu>Proprietatea PasteOK (de tip Boolean)
Comunica daca continutul mesei de montaj poate fi inserat īn containerul OLE. Aceasta proprietate poate fi utilizata numai īn executie.
<titlu>Proprietatea AppIsRunning (de tip Boolean)
Se refera la starea aplicatiei server care a creat obiectul din containerul
OLE. Daca valoarea returnata de aceasta proprietate este True, aplicatia server este īn executie, īn caz contrar aplicatia server nu este lansata īn executie. Daca aceasta proprietate este īncarcata cu valoarea True, atunci aplicatia server a obiectului din container va fi lansata īn executie. Daca proprietatea este īncarcata cu valoarea False, aplicatia server va fi īnchisa.
<titlu>Proprietatea SizeMode (de tip Integer)
Se refera la modul de dimensionare a containerului OLE si la modul lui de afisare īn momentul īn care contine un anumit obiect. Valorile posibile ale acestei proprietati sunt urmatoarele:
<tabel>
*Constanta
Valoare
Descriere
*vbOLESizeClip
Decupare. Daca obiectul este mai mare decāt containerul OLE, atunci obiectul va fi trunchiat. Valoare implicita.
*vbOLESizeStretch
Redimensionare elastica. Obiectului este redimensionata astfel īncāt va ocupa īntregul container OLE.
*vbOLESizeAutoSize
Redimensionare automata. Containerul OLE este redimensionat astfel īncāt va afisa īntregul obiect, īnainte de redimensionare este declansat evenimentul Resize, īn procedura atasata evenimentului se poate citi (prin intermediul parametrilor HeightNevt si WidthNew) noua īnaltime si noua latime a containerului).
*vbOLESizeZoom
Efect lentila. Obiectul este redimensionat astfel īncāt sa fie utilizat la maxim spatiul din container, īnsa proportiile originale ale obiectului sunt conservate.
</tabel>
<titlu>Proprietatea AutoActivate (de tip Integer)
Determina modul de activare a obiectului depus īn containerul OLE. Aceasta proprietate poate fi configurata cu ajutorul urmatoarelor constante predefinite:
<tabel>
*Constanta
Valoare
Descriere
*vbOLEActivateManual
Activare manuala. Obiectul din container nu este activat automat. Activarea obiectului trebuie realizata prin program, cu ajutorul metodei DoVerb.
*vbOLEActivateGetFocus
Activare prin focar. Daca containerul OLE contine un obiect care permite activarea cu un clic simplu de mouse, aplicatia server este activata īn momentul īn care containerul OLE ajunge īn focar.
*vbOLEActivateDoubleclick
Activare prin dublu clic (valoare implicita). Daca containerul OLE contine un obiect, aplicafia server poate ti activata prin aplicarea unui dublu clic pe container (sau se apasa tasta ENTER īn momentul īn care focarul este īn container).
*vbOLEActivateAuto
Activare automata. Daca containerul OLE contine un obiect, aplicatia server este activata pe baza metodei de activare normala (adica fie cānd containerul ajunge īn focar, fie cānd se efectueaza un dublu clic pe container).
</tabel>
<titlu>Proprietatea OLETypeAHowed (de tip Integer)
Se refera la tipul obiectului care poate fi continut īn containerul OLE. Valorile posibile ale acestei proprietati sunt urmatoarele:
<tabel>
*Constanta
Valoare
Descriere
*vbOLELinked
Containerul OLE poate contine numai un obiect īnlantuit.
*vbOLEEmbedded
Containerul OLE poate contine numai un obiect īncapsulat.
*vbOLEEither
Containerul OLE poate contine atāt obiecte īnlantuite, cāt si obiecte īncapsulate. Valoare implicita.
</tabel>
<titlu>Proprietatea SourceDoc (de tip String)
Specifica numele unui fisier din care se poate crea, īn perioada de elaborare a proiectului, un obiect īncapsulat sau īnlantuit.
<titlu>Proprietatea Class (de tip String)
Se refera la numele de clasa al obiectului īncapsulat sau īnlantuit īn containerul OLE, adica defineste numele aplicatiei server. Lista numelor de clasa accesibile pe calculatorul utilizat poate fi afisata īn perioada de elaborare a proiectului, prin aplicarea unui clic pe butonul cu trei puncte din coloana de valori a proprietatii.
Fig.pag. 417 sub forma unei ferestre.
<titlu>Proprietatea AutoVerbMenu (de tip Boolean)
Stabileste daca se afiseaza sau nu un meniu local, care contine verbele obiectului din container īn mojtfjntul īn care utilizatorul efectueaza un clic cu butonul drept pe containerul OLE. Valoarea implicita a acestei proprietati este True, caz īn care vor fi afisate comenzile permise de obiect.
<titlu>Proprietatea DisplayType (de tip Integer)
Stabileste modul de afisare a obiectului din container. Aceasta proprietate poate fi configurata cu urmatoarele constante predefinite:
<tabel>
*Constanta
Valoare
Descriere
*vbOLEDisplayContent
Continut. Atunci cānd containerul OLE contine un obiect, īn control vor fi afisate datele obiectului. Valoare implicita.
*vbOLEDisplayIcon
Simbol grafic. Atunci cānd containerul OLE contine un obiect, īn control va fi afisat simbolul grafic al obiectului.
</tabel>
<titlu>Proprietatea UpdateOptions (de tip Integer)
Se refera la modul de actualizare a obiectului īnlantuit īn momentul īn care informatia īnlantuita a fost modificata. Aceasta proprietate poate fi configurata cu urmatoarele constante predefinite:
<tabel>
*Constanta
Valoare
Descriere
*vbOLEAutomatic
Obiectul este actualizat automat ori de cāte ori se modifica informatia īnlantuita. Valoare implicita.
*vbOLEFrozen
Obiectul este actualizat īn momentul īn care utilizatorul salveaza informatia īnlantuita īn aplicatia server.
*vbOLEManual
Obiectul este actualizat manual, īn momentul īn care prin program se apeleaza metoda Update.
</tabel>
EXEMPLUL
Forma aplicatiei urmatoare contine trei controale OLE si un buton de comanda. Controalele OLE au urmatoarele nume (proprietatea Name): oleExcel, olePaint si oleWordPad. Aceste controale īn perioada de elaborare a proiectului au fost configurate astfel:
<tabel>
*Proprietate
oleExcel
olePaint
oleWordPad
*AutoActivate
0 - Manual
Double Click
Double Click
*Class
Excel.Sheet.8
PaintPicture
WordPad.Document.
*OLETypeAllowed
Either
Linked
Embedded
Source Doc
c:\windows\leaves.bmp
Butonul de comanda etichetat cu Activare Excel activeaza programul server Excel īntr-o fereastra separata, prin apelarea metodei DoVerb (cu argumentul vbOLEOperi). Fereastra afisata de aplicatie are aspectul urmator:
Fig.pag. 419 sub forma unei ferestre.
Textul sursa al programului este urmatorul:
Option Explicit
Private Sub Command1_Click()
oleExcel.DoVerb vbOLEOpen
End Sub
EXEMPLUL 2:
Forma acestei aplicatii contine un container OLE. Meniul OLE aferent aplicatiei contine patru comenzi: lnsert, Paste Special, Close si Delete. Elementele de meniu corespunzatoare acestor comenzi sunt mnuInsert, mnuPaste, mnuClose si mnuDelete. Comanda Insert afiseaza fereastra de dialog Insert Object, prin care se poate īncapsula sau īnlantui un obiect īn controlul OLE. Comanda Paste Special afiseaza fereastra de dialog cu acelasi nume, prin care se poate insera īn controlul OLE un obiect depus anterior pe masa de montaj. Comanda Close īntrerupe legatura cu aplicatia server. Comanda Delete īndeparteaza obiectul depus īn container. Fereastra afisata de aplicatie poate avea aspectul urmator:
Fig.pag. 420 sub forma unei ferestre.
Textul sursa al programului este urmatorul:
Option Explicit
Private Sub mnuInsert_Click()
On Error GoTo eroare
OLE1.InsertObjDlg
OLE1.DoVerb -2 'Se foloseste o fereastra separata.
Exit Sub
eroare:
MsgBox "Nu s-a inserat nimic", vbExclamation
End Sub
Private Sub mnuPaste_Click
Dim m As String
If OLE1.PasteOK Then
OLE1 PasteSpecialDlg
Else
m = "Continutul zonei Clipboard " &
"nu poate fi inserat īn containerul OLE!"
MsgBox m, vbExclamation
End If
End Sub
Private Sub mnuClose_Click()
If OLE1.OLEType <> vbOLENone Then
OLE1.Close
Else
MsgBox "Containerul OLE nu contine nimic!", vbExclamation
End If
End Sub
Private Sub mnuDelete_Click()
If OLE1.OLEType <> vbOLENone Then
OLE1.Delete
Else
MsgBox "Containerul OLE nu contine nimic!", vbExclamation
End If
End Sub
EXEMPLUL 3:
Forma acestei aplicatii contine un container OLE si un control de tip CommonDialog. Aplicatia este prevazuta cu un meniu. Meniul OLEFile contine urmatoarele comenzi:
OLENew: afiseaza fereastra de dialog Insert Object;
OLESaveAs: salveaza obiectul din container īntr-un fisier binar;
OLEOpen: īncarca containerul cu un obiect salvat anterior cu ajutorul comenzii OLESaveAs;
OLEExit: termina aplicatia.
Meniul OLEEdit contine urmatoarele comenzi:
OLECopy: copiaza obiectul din container pe masa de montaj;
OLEDelete: sterge obiectul din container;
OLE Paste Special: afiseaza fereastra de dialog Paste Special;
OLEUpdate: actualizeaza obiectul din container.
Elementul de meniu OLEClose īntrerupe legatura cu aplicatia server a obiectului din container.
Fereastra afisata de aplicatie poate avea aspectul urmator:
Fig.pag. 421 sub forma unei ferestre.
Textul sursa al programului este urmatorul:
Option Explicit
Private Sub Form_Load()
On Error Resume Next
OLE1.Move 0, 0
OLE1.Height Me.Height
OLE1.Width
End Sub
Me.Width
Private Sub mnuCloseOLE_Click() 'ComandaOLEClose
If OLEl.OLEType <> vbOLENone Then
OLE1.Close Else
MsgBox "Containerul OLE nu contine nimic"
End If
End Sub
Private Sub mnuCopy_Click() 'OLEEdit/OLECopy
If OLE1.OLEType <> vbOLENone Then
Screen.MousePointer = 11 'cursor clepsidra
If OLEl.AppIsRunning = False Then
OLE1.AppIsRunning True End If OLE1.Copy
Screen.MousePointer = 0 'Cursor implicit.
Else
MsgBox "Containerul OLE nu contine nimic!"
End If
End Sub
Private Sub mnuDelete_Click() 'OLEEdit/OLEDelete
If OLEl.OLEType <> vbOLENone Then
`Test daca containerul OLE contine un obiect valid.
OLE1.Delete 'Se sterge obiectul.
End If
End Sub
Private Sub mnuEdit_Click() 'MENIUL OLEEdit
' Test daca continutul zonei Clipboard poate fi inserat
' īn containerul OLE
If OLEl.PasteOK Then
mnuSpecial.Enabled True 'Se valideaza comanda Paste Special.
Else
mnuSpecial.Enabled = False 'Se inhiba comanda Paste Special,
End If
End Sub
Private Sub mnuExit_Click 'OLEFile/OLEExit
End
End Sub
Private Sub mnuFileNew_Click 'OLEFile/OLENew
On Error GoTo Eroare
OLE1.InsertObjDlg
OLE1.DoVerb -2 'Obiectul este deschis īntr-o fereastra separata.
Exit Sub
Eroare:
MsgBox "Nu s-a inserat nimic" vbExclamation
End Sub
'Fereastra a fost īnchisa cu Cancel.
Private Sub mnuOpen_Click() 'OLEFile/OLEOpen
Dim NrFis As Integer
NrFis FreeFile
CommonDialogl.Filter
"Obiecte inserabile (*.OLE) | .OLE|Orice fisier (*.*)|
CommonDialog1.FilterIndex
On Error Resume Next
CommonDialog1 ShowOpen
If Err Then
Exit Sub
End If
Open CommonDialog1 filename For Binary As NrFis
If Err Then
Exit Sub
End If
Screen.MousePointer 'Cursor = clepsidra
OLE1.ReadFromFile NrFis
If Err Then
If Err Then
MsgBox "Obiect invalid."
Else
MsgBox Error$
End If
End If
OLE1.DoVerb 'Activarea obiectului.
Screen.MousePointer 'Restabilirea cursorului de mouse
Close NrFis
End Sub
Private Sub mnuSave_Click() 'OLEFile/OLESaveAs
Dim NrFis As Integer
NrFis = FreeFile
CommonDialog1.Filter
"Obiecte inserabile (*.OLE)|*.OLE|Orice fisier(*.*)
CommonDialog1.FilterIndex = 1
On Error Resume Next
CommonDialogl.ShowSave
If Err Then
Exit Sub ' Utilizatorul a ales Cancel.
End If
Open CommonDialogl.filename For Binary As NrFis
If Err Then
MsgBox (Error)
Exit Sub
End If
OLE1.SaveToFile NrFis
If Err Then MsgBox (Error)
Close NrFis
End Sub
Private Sub mnuSpecial_Click() 'OLEEdit/OLEPasteSpecial
If OLE1.PasteOK Then
OLE1 PasteSpecialDlg
Else
MsgBox "Continutul zonei Clipboard nu poate fi_
inserat in containerul OLE"
End If
End Sub
Private Sub mnuDpdate_Click 'OLEEdit/OLEUpdate
If OLE1.OLEType <> vbOLENone Then
Screen.MousePointer = 11 'Cursor clepsidra Hourglass
OLE1.Update
Screen.MousePointer = 0 'Cursor implicit Default
Else
MsgBox "Containerul OLE nu contine nimic"
End If
End Sub
EXEMPLUL 4:
Forma aplicatiei urmatoare contine un container OLE si trei butoane de comanda. Prin actionarea butonului etichetat cu CreateEmbed se apeleaza metoda cu acelasi nume, prin care se īncapsuleaza īn containerul OLE o noua foaie de calcul Excel. Butonul de comanda etichetat cu OLE Close īntrerupe legatura cu aplicatia server. Prin actionarea butonului de comanda eichetat cu CreateLink se apeleaza metoda cu acelasi nume si se īnlantuie un fisier text īn containerul OLE. Fereastra afisata de aplicatie are aspectul urmator:
Fig. Pag 424
Textul sursa al programului este urmatorul:
Option Explicit
Private Sub Form_Load
Forml Caption = "Control container OLE"
End Sub
Private Sub Command1_Click
Dim Clasa As String, DocSursa As String
Clasa = "Excel.Sheet.8"
DocSursa = "" 'Se va īn capsula un obiect nou.
OLE1.CreateEmbed DocSursa, Clasa
End Sub
Private Sub Command2_Click
OLE1.Close
End Sub
Private Sub Command3_Click
Dim DocSursa As String
DocSursa = "C:\Bootlog.txt"
OLE1.CreateLink DocSursa
End Sub
|