Mencipta dan memaparkan dokumen OLE dalam borang p.1. Teknologi OLE (Object Linking and Embedding).

Access 2010 mempunyai keupayaan untuk menambah objek pada medan dengan jenis data OLE . Dalam kes di mana jenis data ditentukan sebagai OLE (Pemautan dan Pembenaman Objek– mengikat dan membenam objek), kemudian Akses DBMS menjimatkan luaran sebuah objek V fail kongsi pangkalan data, memperuntukkan untuk penyimpanannya seberapa banyak ruang yang diduduki objek ini dalam bentuk fail berasingan. Di bawah objek harus difahami sebagai fail yang dicipta sebagai aplikasi dalam penyunting grafik, klip video, dalam aplikasi MS Office, dsb. Apabila jadual diisi dengan data yang merupakan objek, mesej tentang program yang boleh digunakan untuk membuka objek ini dijana dalam kedudukan medan yang sepadan dengan jenis data OLE. Memaparkan objek hanya akan dijalankan dalam borang dan laporan.

Untuk membenamkan objek di padang dengan jenis data OLE anda perlu membuka meja masuk Mod "Pembina". Tambah medan baharu, sebagai contoh “Foto produk.” Pilih jenis data "Medan Objek OLE", dan kemudian simpan jadual.

Kemudian dalam mod "Jadual". dalam baris untuk memasukkan data, klik butang kanan tetikus, dalam menu yang terbuka, pilih baris dengan arahan, yang akan membuka kotak dialog (Rajah 3.38, Rajah 3.39).

nasi. 3.38 Memasukkan objek

nasi. 3.39 Kotak dialog untuk menambah objek baharu pada jadual Access

Ingat bahawa terdapat dua pilihan untuk membenamkan objek sebagai data. Peluang pertama menyediakan untuk kegunaan aplikasi biasa untuk mencipta fail yang disokong Access, pilihan kedua ialah memasukkan objek , yang membolehkan anda menggunakan mana-mana fail sebagai sumber data (Gamb. 3.40).

nasi. 3.40 Menambah objek baharu pada jadual Akses daripada fail

1. Mencipta objek daripada fail.

Apabila ia datang kepada data, yang merupakan objek untuk pangkalan data, dan adalah fail luaran, maka anda perlu mempunyai fail ini. Oleh itu, anda perlu mencipta beberapa fail untuk melihat cara ia dipaparkan dalam pangkalan data pada masa hadapan, dan juga cuba menukar fail ini. Contohnya, jika anda mempunyai gambar objek dalam fail Monitor.jpg(jpg- foto universal format). Untuk membolehkan fail ini disimpan dalam pangkalan data, anda harus menandakan kotak (Gamb. 3.40) "Buat daripada fail" , selepas itu tetingkap yang ditunjukkan dalam Rajah 3.41 akan muncul. Menggunakan butang "Semakan" anda harus memilih fail yang diperlukan.

nasi. 3.41 Mencari fail semasa mencipta objek dalam pangkalan data

Dalam baris yang sepadan untuk medan, sebagai contoh, "Foto produk" perkataan itu akan muncul "Pakej", ini bermakna fail itu terikat dengan aplikasi yang menciptanya. Oleh itu, apabila melihat pangkalan data, sama ada pertanyaan, borang atau laporan, pengguna akan melihat imej fail sebagai ikon, dan apabila mengklik dua kali pada imej ini, sistem akan mula-mula mencari aplikasi dan kemudian memaparkan kandungan fail di dalamnya (dalam dalam contoh ini gambar ini). Pengecualian ialah fail imej yang disimpan dengan sambungan .bmp(format peta bit). Walau bagaimanapun, perlu diingat bahawa fail yang dicipta dalam aplikasi Microsoft, akan dipaparkan serta-merta dalam borang dan laporan. Kesimpulannya mudah, gambar boleh dimasukkan ke dalam aplikasi seperti Paint, Word, Power Point, dan disimpan sebagai fail berasingan, dan kemudian sambung sebagai objek ke pangkalan data. Cuba buat berbilang fail dengan menggunakan foto dan teks pelbagai editor Windows. Contohnya, anda boleh membuka dokumen Word, memasukkan foto daripada fail, menambah teks dan kemudian menyimpan sebagai: Monitor.docx(Gamb. 3.42).

nasi. 3.42 Fail foto dicipta dalam Word

2. Penciptaan objek baru.

Dengan mencipta objek baharu dalam pangkalan data, anda sepatutnya menggunakan aplikasi di mana fail dibuat dan kemudian dimasukkan ke dalam medan yang menerangkan jenis OLE ini. Untuk memulakan mod untuk mencipta objek baharu, anda perlu membuka jadual masuk Mod "Jadual"., pilih pilihan "Buat baru" dalam kotak dialog (Gamb. 3.39), dan kemudian pilih dalam senarai "Jenis objek" (permohonan yang diperlukan). Senarai aplikasi yang Access menyokong untuk mencipta objek adalah dalam senarai (Gamb. 3.43), yang akan dibuka selepas menjalankan arahan "Sisipkan objek" .

nasi. 3.43 Senarai jenis objek Access yang boleh digunakan untuk mencipta fail

Kemudahan menggunakan aplikasi untuk mencipta objek dalam bentuk fail ialah pada masa hadapan fail ini boleh digunakan secara autonomi atau diperbetulkan dalam pangkalan data.

Mari kita pertimbangkan pilihan penciptaan objek untuk pangkalan data, menggunakan aplikasi cat

Sebagai contoh, adalah perlu untuk mencipta objek dengan imej syarikat dan teks, yang kemudiannya boleh diganti atau diperbetulkan oleh pengguna pangkalan data. Untuk melakukan ini, anda perlu memilih daripada senarai Objek Imej Bitmap, teknologi lanjut untuk mencipta objek ditunjukkan dalam Rajah 3.44.

1. Terbuka Aplikasi cat

2. Masukkan foto daripada fail.

3. Tambah teks (jika perlu).

4. Simpan sebagai fail.

5. Tutup aplikasi.

nasi. 3.44 Teknologi untuk mencipta objek dalam aplikasi Paint

Senaman 3.11

1. Dalam jadual " barang»dalam mod "Pembina" Tambah lajur baharu Dengan nama "Foto produk", jenis data " Medan Objek OLE", simpan perubahan.

2. Dalam mod "Meja" di padang "Foto produk" pilih satu baris "Masukkan objek daripada fail", pilih (letakkan titik) "Buat baru" dan daripada senarai juntai bawah tentukan dokumen Microsoft word . Ini akan dibuka penyunting teks MS Word, di sini anda perlu memasukkan gambar yang sepadan dengan produk dalam baris ini. Pilih gambar daripada senarai yang disimpan terus dalam editor (tab "Sisipkan", ikon "Gambar", butang "Mula" dalam kotak dialog di sebelah kanan), atau masukkan gambar daripada program lain. Anda boleh menggunakan aplikasi Paint (Bitmap Image object), di mana anda boleh melukis produk itu sendiri. Tutup fail yang dibuat, ia secara automatik akan dipautkan ke pangkalan data anda, ke baris di mana ia dimasukkan.

3. Lakukan prosedur ini Untuk semua baris milik anda Jadual "Produk"..

4. Simpan perubahan anda.

Soalan kawalan

1. Apakah objek yang boleh dimasukkan ke dalam pangkalan data dengan jenis data OLE?

2. Bagaimanakah saya boleh memasukkan foto ke dalam jadual dalam mod Jadual?

3. Di manakah foto itu akan dipaparkan dalam pangkalan data?

4. Bagaimanakah kaedah "Buat" berbeza? objek baru» daripada kaedah “Buat daripada fail”?

5. Bagaimana untuk meletakkan fail foto produk dalam pangkalan data jika ia mempunyai sambungan .png?

6. Adakah mungkin untuk mengedit fail yang dimasukkan sebagai objek ke dalam pangkalan data secara langsung sistem fail komputer?

7. Bagaimana untuk memasukkan persembahan ke dalam pangkalan data?

8. Objek aplikasi yang manakah boleh dimasukkan ke dalam pangkalan data?

Semakan

Asas OLE

Objek TOLEContainer

Contoh aplikasi OLE

Menyimpan objek OLE dalam pangkalan data

  1. Semakan
  2. Daripada artikel anda akan mempelajari maklumat asas tentang OLE, beberapa perkara mengenai OLE 2 dan Automasi OLE. Artikel ini bercakap tentang menggunakan objek TOLEContainer untuk membina aplikasi OLE dalam Delphi.
  3. Asas OLE
  4. Sebelum kita masuk ke dalam asas OLE, kita perlu menyemak beberapa istilah.

    Akronim OLE bermaksud Objects Linked and Embedded J ). Data yang dikongsi antara aplikasi dipanggil objek OLE. Aplikasi yang boleh mengandungi objek OLE dipanggil Bekas OLE (Bekas OLE). Aplikasi dari mana data boleh dimasukkan ke dalam bekas OLE sebagai objek OLE dipanggilpelayan OLE.

    Contohnya, MicroSoft Word boleh memasukkan grafik, klip audio dan video serta banyak objek lain dalam dokumen (dokumen ini kadangkala dipanggil dokumen kompaun ).

    Seperti namanya, objek OLE boleh dilampirkan atau dimasukkan ke dalam bekas OLE. Dalam kes pertama, data akan disimpan dalam fail pada cakera, mana-mana aplikasi akan mempunyai akses kepada data ini dan akan dapat membuat perubahan. Dalam kes kedua, data disertakan dalam bekas OLE dan hanya ia akan dapat melihat dan mengubah suai data ini.

    OLE ialah pembangunan selanjutnya idea data yang dikongsi antara aplikasi. Jika menggunakan DDE adalah mungkin untuk berfungsi dengan teks, maka OLE memudahkan untuk menyepadukan pemprosesan sebarang jenis data ke dalam aplikasi. Seperti DDE, aplikasi klien (bekas OLE) memerlukan kehadiran aplikasi OLE pelayan. Setiap kali pengguna mengakses objek OLE dalam program klien untuk melihat atau mengedit data (biasanya mengklik dua kali pada objek), aplikasi pelayan dilancarkan, di mana data diproses.

    Secara semula jadi, terdapat beberapa jenis OLE, berbeza dalam cara pelayan OLE diaktifkan. OLE versi 1 menjalankan pelayan dalam tetingkap berasingan. OLE 2 melaksanakan apa yang dipanggilpengaktifan dan penyuntingan di tempat. Dalam kes ini, pelayan menjalankan "di dalam" aplikasi klien, mengubah suai paparan menu sistem, barisan alatan, dsb. Perkembangan idea OLE membawa kepada kemunculanAutomasi OLE - aplikasi klien boleh melaksanakan sebahagian daripada kod pelayan. Jenis objek OLE yang diletakkan dalam program klien ditentukan oleh versi OLE yang disokong oleh pelayan.

  5. Objek TOLEContainer
  6. Objek TOLEContainer terletak di halaman Komponen Palet Sistem dan diperlukan untuk mencipta aplikasi kontena OLE. TOLEContainer menyembunyikan semua kerumitan yang berkaitan dengan organisasi dalaman OLE dan menyediakan pengaturcara dengan antara muka yang agak mudah. Mari bina aplikasi mudah menggunakan objek OLE. Buat projek baru dan letakkan TOLEContainer pada borang, dalam Pemeriksa Objek, klik dua kali pada sifat ObjClass atau ObjDoc - dialog "Insert Object" Windows standard akan muncul (lihat Rajah 1)

    Dialog ini mengandungi senarai semua pelayan OLE yang didaftarkan dalam sistem (pendaftaran berlaku semasa pemasangan program). Jenis objek OLE ditentukan oleh pelayan yang anda tentukan. Jika anda mencipta objek baharu (Buat Baharu), maka apabila anda mengklik OK program pelayan OLE akan bermula, di mana objek baharu dicipta. Selepas keluar dari program pelayan, objek OLE baharu hidupkan(objek terbenam) ke dalam program. Objek OLE boleh dibuat menggunakan fail sedia ada dalam format salah satu pelayan OLE. Untuk melakukan ini, pilih Cipta daripada Fail (lihat Rajah 2)


    Objek yang dipilih boleh sama ada dimasukkan ke dalam aplikasi atau dipautkan dengan menyemak item Pautan.

    Jadi, mari kita cipta objek baharu semasa membuat projek kami, memilih untuk ini, sebagai contoh, Dokumen Microsoft Word (Gamb. 1). Klik OK dan selepas MS Word bermula, taip sebarang teks di sana (“ Ini ialah objek OLE dokumen Microsoft Word "). Untuk menyelesaikan kerja, menu mempunyai item khas "Fail|Tutup dan Kembali ke Borang1" (Win'95+MS Word 7.0). Jalankan projek, ia akan kelihatan seperti ini:

    Klik dua kali pada bekas OLE - MS Word akan melancarkan dengan dokumen daripada objek OLE, yang boleh diedit dan semua perubahan disimpan dalam objek OLE.

    Jika semasa reka bentuk anda memilih objek untuk dimasukkan ke dalam bekas OLE, maka ia ditulis sepenuhnya ke dalam fail borang (FORM1.DFM) dan kemudiannya disusun ke dalam fail EXE. Dalam kes objek yang sangat besar, ini boleh menyebabkan jeda yang lama semasa reka bentuk dan juga ralat "Kehabisan sumber". Oleh itu, adalah disyorkan untuk membuat objek besar dipautkan.

  7. Menyimpan objek OLE dalam pangkalan data

Kadangkala adalah perlu untuk menyimpan objek OLE bukan dalam fail, tetapi dalam pangkalan data (medan BLOB dalam jadual). Sudah tentu, dalam dalam kes ini Objek OLE mesti dibenamkan untuk tujuan mudah alih. Malangnya, dalam pengedaran Delphi standard tiada objek khas jenis TDBOLEContainer untuk tujuan ini, tetapi objek OLE boleh disimpan dan dipulihkan menggunakan kaedah SaveToStream dan LoadFromStream. Sebagai contoh:

prosedur TOLEForm.SaveOLE(Pengirim: TObject);

BlSt: TBlobStream;

bermula

Dengan Jadual1 lakukan

BlSt:=TBlobStream.Create(BlobField(FieldByName("OLE")),

bmReadWrite);

OLEContainer.SaveToStream(BlSt sebagai TStream);

BlSt.Free;

teknologi OLE

OLE- teknologi (Pemautan dan Pembenaman Objek– memaut dan membenam objek) membolehkan anda mencipta dokumen kompaun kompleks yang mengandungi pelbagai jenis objek yang dicipta oleh aplikasi yang berbeza. Jadi dalam Dokumen Teks Menggunakan editor Word, anda boleh memasukkan jadual Excel, gambar rajah yang menerangkan teks atau formula matematik; untuk pengguna ia akan kekal sebagai satu dokumen. Aplikasi yang bertanggungjawab untuk dokumen komposit biasanya dipanggil bekas. Ia mempunyai struktur yang kompleks, kerana ia boleh berfungsi dengan objek "alien". Aplikasi yang mencipta objek dipanggil pelayan.

Bekas dan pelayan boleh menyokong dua mod interaksi:

    pembenaman (pelaksanaan) objek. ini mod bermaksud bahawa data objek akan disimpan bersama dengan dokumen utama (contohnya, terbenam Hamparan Excel akan disimpan dalam .doc - fail editor Word).

    menghubungkan objek. Dokumen induk hanya menyimpan rujukan kepada objek yang datanya berada dalam dokumen lain.

Apabila membenamkan, jumlah dokumen yang disimpan meningkat, bagaimanapun, ia lebih mudah untuk dialihkan, manakala apabila memaut, anda mesti ingat bahawa menukar lokasi fail boleh membawa kepada pautan yang salah.

Untuk mengedit data berkaitan, tetingkap berasingan dibuka dalam aplikasi di mana data ini dicipta, i.e. pelayan. Apabila melaksanakan objek, anda juga boleh menjalankan pelayan dalam tetingkap berasingan, tetapi anda juga boleh mengedit data "di Tempat", i.e. dalam tetingkap bekas, jika ia membenarkannya. Dalam kes ini, bekas mesti mempunyai menu, dan pelayan "di Tempat" yang dibut akan menambahnya dengan arahannya sendiri.

Komponen OLEContainer

Pada halaman Sistem palet komponen dalam Borland Builder C++ terdapat komponen khas yang direka untuk membenamkan dan memautkan objek daripada aplikasi lain - OLEContainer.

Sifat asas

Harta benda negeri membolehkan anda menentukan keadaan objek dan pelayannya. Maksudnya:

    osKosong—bekas tidak mengandungi objek;

    osLoaded – objek dalam bekas, pelayan tidak berjalan;

    osRunning – pelayan sedang berjalan;

    osOpen – OLE – objek dibuka dalam tetingkap pelayan yang berasingan;

    osInPlaceActive – objek diaktifkan "di tempat", tetapi menu masih belum diubah. Ini ialah keadaan perantaraan objek sebelum ini dimuatkan sepenuhnya pelayan.

    Objek osUIActive diaktifkan "di tempat", menu diubah suai.

Kod berikut membolehkan anda mentakrifkan nama objek, dimuatkan ke dalam bekas (AnsiString property OleClassName), cara bekerja dengan objek ( Dipautkan= benar – memaut, sebaliknya – membenamkan), dan juga dapatkan nama dokumen yang dipautkan:

jika (OleContainer1 -> State != osEmpty)

Label2 -> Kapsyen = OleContainer1 -> OleClassName;

// Keadaan bekas – integer bermula dari 0 (osEmpty)

Label6 -> Kapsyen = OleContainer1 -> Negeri;

jika (OleContainer1 -> Dipautkan)

Label4 -> Kapsyen = OleContainer1 -> SourceDoc;

harta bool AllowInPlace mentakrifkan keupayaan untuk mengedit objek terbenam "di tempat". Jika AllowInPlace = true dan Iconic = false (sifat Ikonik menentukan sama ada objek harus diwakili sebagai ikon), maka "InPlace" - pengeditan dibenarkan. Apabila AllowInPlace = false, pelayan akan dibuka dalam tetingkap berasingan.

Harta benda AutoAktifkan mempunyai tiga nilai yang mungkin: aaManual, aaGetFocus, aaDoubleClick dan menentukan cara untuk mengaktifkan objek yang dimuatkan ke dalam bekas.

AutoAktif lalai = aaDoubleClick, iaitu objek menjadi aktif apabila dwiklik. Maknanya aaGetFocus mentakrifkan pengaktifan apabila menerima fokus input. Apabila AutoAktifkan = aaManual Pengaturcara bertanggungjawab untuk mengaktifkan objek. Dalam kes ini, anda boleh menggunakan kaedah DoVerb komponen kontena, yang bertanggungjawab untuk menghantar arahan daripada bekas ke pelayan. Sebagai contoh, anda boleh menggunakan operator berikut:

OleContainer1->DoVerb(ovShow); // Tunjukkan objek

Selain menghantar arahan ke pelayan, kaedah kontena menyediakan untuk penciptaan, pemuatan dan pemusnahan objek. Mari kita teruskan untuk mempertimbangkan mereka.

Mencipta dan menyimpan objek baharu (benam)

Penciptaan objek baharu boleh dicapai menggunakan kotak dialog khas SisipkanObjek(sisipan objek) atau panggilan kaedah CreateObject. Dalam kes pertama, pengguna memilih kelas objek daripada senarai sistem objek yang mungkin, dan dalam kes kedua, objek tertentu dibuat secara pemrograman.

Untuk menggunakan kotak dialog, anda boleh menggunakan kod berikut, yang terletak, sebagai contoh, dalam arahan menu "baru":

Nama_Fail AnsiString; // pembolehubah diisytiharkan secara global atau dalam kelas borang

jika (OleContainer1->InsertObjectDialog())

( Nama_Fail = "";

OleContainer1->DoVerb(ovShow);

Dalam kotak dialog yang muncul, anda perlu menetapkan nilai butang RadioButton kepada "Buat baharu", pilih jenis objek yang diperlukan daripada senarai dan klik "OK".

Objek boleh dibuat secara pengaturcaraan seperti ini (pengendali boleh dimasukkan, sebagai contoh, ke dalam item menu yang sepadan):

    Hamparan Excel

OleContainer1->CreateObject("Excel.sheet",false);

    Dokumen perkataan

OleContainer1->CreateObject("Word.Document",false);

Jika anda perlu mencipta objek yang nama jenisnya tidak diketahui, maka anda perlu sama ada merujuk kepada dokumentasi yang sepadan untuk pelayan, atau menulis program ujian yang memuatkan objek menggunakan kaedah OleContainer->InsertObjectDialog() dan gunakan sifat OleContainer -> OleClassName untuk menentukan namanya.

Apabila mencipta objek baharu, suntikan digunakan (kerana fail diperlukan untuk memaut). Dalam kes ini, program kontena bertanggungjawab untuk menyimpan data objek. Anda boleh menyimpan data ke fail menggunakan kaedah tersebut SaveToFile (<имя файла>), sebagai contoh, dalam item menu "Fail - Simpan..." anda boleh menggunakan kod berikut:

batal __fastcall TForm1::FSaveClick(TObject *Penghantar)

( jika (Nama_Fail=="")

jika (SaveDialog1->Execute())

Nama_Fail = SaveDialog1->Nama Fail;

OleContainer1->SaveToFile(ChangeFileExt(File_Name,"".ole"));

Dalam contoh ini, sambungan fail .ole menunjukkan bahawa objek akan disimpan dalam format khas yang berbeza daripada format pelayan. Aplikasi pelayan yang berasingan daripada bekas tidak akan dapat membaca data ini.

Fungsi ChangeFileExt telah digunakan dalam contoh untuk menggantikan sambungan fail. Apabila melaksanakan arahan untuk menyimpan dan mendapatkan semula data daripada fail, anda mungkin memerlukan fungsi lain untuk memproses nama fail:

    ChangeFileExt(const AnsiString FileName, const AnsiString Extension) – menukar nama fail FileName secara paksa, menggantikan sambungan dengan Extension;

    Fungsi AnsiString ExtractFileExt(AnsiString FileName) mengembalikan sambungan fail dan oleh itu membolehkan anda menyemak jenisnya;

    AnsiString ExtractFileName(AnsiString FileName) mengembalikan nama fail yang diekstrak daripada rentetan FileName, i.e. selepas garis miring terbalik atau titik bertindih yang terakhir;

    AnsiString ExtractFilePath(AnsiString FileName)Mengambil semula laluan fail, termasuk garis miring atau bertindih terakhir;

    AnsiString ExtractFileDrive(AnsiString FileName) mengekstrak fail cakera dengan titik bertindih (contohnya, "D:").

Kaedah bekas LoadFromFile(<имя файла>) membolehkan anda memuatkan objek yang diingati ke dalam bekas:

batal __fastcall TForm1::FOpenClick(TObject *Penghantar)

jika (OpenDialog1->Execute())

jika (ExtractFileExt(OpenDialog1->FileName)!= ".ole")

Nama_Fail = OpenDialog1->Nama Fail;

OleContainer1->LoadFromFile(File_Name);

OleContainer1->DoVerb(ovShow);

Mencipta objek daripada fail (benam)

Untuk mencipta objek daripada fail sedia ada, anda boleh menggunakan tetingkap yang sama SisipkanObjek, seperti dalam hal mencipta objek baharu. Dalam kes pembenaman, pengguna menetapkan nilai butang RadioButton kepada "Buat daripada fail", dan untuk mencari fail klik pada butang "Semak imbas...".

Cara pemrograman untuk mencipta objek daripada fail disediakan dengan kaedah: OleContainer->CreateObjectFromFile(AnsiString<имя файла>, boolIconic).

Parameter kaedah menentukan nama fail sumber dan mod paparan objek (Iconic=true – objek dalam bentuk ikon). Kod ini boleh dimasukkan ke dalam item menu yang sepadan:

batal __fastcall TForm1::FFileClick(TObject *Penghantar)

jika (OpenDialog1->Execute())

OleContainer1->CreateObjectFromFile(OpenDialog1->FileName,false);

OleContainer1->Repaint();

Kaedah OleContainer->Repaint() menyebabkan tetingkap bekas dilukis semula dan, akibatnya, data objek muncul pada skrin.

Mencipta Objek Berpaut

Sama seperti pembenaman, sama ada pengguna atau pengaturcara boleh mencipta objek yang berkaitan.

Kepada pengguna dalam tetingkap Sisipkan Objek anda harus mengikuti langkah pemilihan fail yang disenaraikan di atas dan sebagai tambahan pilih kotak semak "Komunikasi".

Pengaturcara mesti menggunakan kaedah: OleContainer->CreateLinkToFile(AnsiString<имя файла>, bool Ikonik).

Memandangkan apabila memautkan objek hanya boleh diedit dalam tetingkap yang berasingan, pengguna boleh mengakses menu pelayan untuk menyimpan objek.

Bekerja dengan pelayan

Memandangkan hanya program yang mencipta objek (pelayan) boleh berfungsi dengan data objek, bekas mungkin memerlukan pengetahuan tentang kemungkinan tindakan pada objek. Kaedah DoVerb(int Verb) memerlukan pelaksanaan salah satu arahan, dan keseluruhan senarai tindakan yang mungkin mengandungi harta ObjectVerbs komponen kontena. Anda boleh mendapatkan senarai ini hanya selepas memuatkan objek ke dalam bekas, dan, secara semula jadi, setiap pelayan (dan, akibatnya, objek) mempunyai senarai arahannya sendiri.

Pemalar ovShow ialah contoh perintah OLE yang dikhaskan. Menggunakan kaedah DoVerb dengan parameter movShow, yang telah dibincangkan dalam salah satu bahagian sebelumnya, membawa kepada pembukaan segera pelayan.

Kod berikut memaparkan senarai arahan yang mungkin untuk objek dalam komponen ListBox (arahan dinomborkan daripada sifar) dan meminta untuk melaksanakan perintah kedua dalam senarai:

ListBox1->Item = OleContainer1->ObjectVerbs;

OleContainer1->DoVerb(1);

Di samping itu, bekas boleh meminta pelayan untuk menyimpan data objek sebagai dokumen dalam format pelayan. Untuk tujuan ini kaedah digunakan SaveAsDocument(<имя файла>). Dokumen ini kemudiannya boleh diproses oleh pelayan aplikasi tanpa penyertaan bekas. Menariknya, kaedah ini boleh digunakan untuk kedua-dua objek terpaut dan terbenam.

Apabila selesai bekerja dengan objek, program boleh melepaskan OleContainer dengan memanggil kaedah OleContainer->DestroyObject() - Musnahkan objek yang dimuatkan. Kaedah ini boleh dipanggil sebelum memuatkan objek baharu atau dalam arahan menu File-Exit.

1. Buat aplikasi baharu. hidup bentuk utama Komponen berikut terletak:

  • Elemen Label Berbilang

Dan dua komponen bukan visual:

Pandangan anggaran tetingkap aplikasi utama ditunjukkan dalam rajah. Gambar (fail dengan sambungan .bmp) dimuatkan ke dalam OleContainer. Status pelayan: osRunning.

2. Tambahkan komponen pada borang yang akan memaparkan maklumat tentang objek: "tidak dimuatkan" / "benam" / "mengikat".

3. Menu hendaklah mengandungi arahan berikut:

    "Objek" (InsertDialog, objek Excel baharu, objek Paint baharu, terbenam daripada fail, terbenam daripada "nama persembahan PowerPoint", dipautkan daripada fail, dipautkan daripada "nama Dokumen perkataan", Laksanakan arahan);

    "Properties" (Properties Objek, Perintah Pelayan);

    "Bantuan" (Mengenai program).

Pastikan item menu hanya tersedia pada masa tindakan yang sepadan boleh dilakukan. Sebagai contoh, item "Objek"| "Run Command" hanya boleh diakses jika objek dimuatkan ke dalam OleContainer dan ListBox diletakkan arahan yang tersedia pelayan.

4. Buat pengendali acara yang sepadan untuk semua arahan menu.

    "Fail" | "Muat objek" - objek yang disimpan dimuatkan daripada fail ole.

    "Fail" | "Putus sambungan" - memutuskan sambungan dengan objek;

    "Fail" | "Keluar" - keluar yang betul dari program (jika terdapat sambungan dengan objek, pecahkannya);

    "Objek" | InsertDialog – objek dan kaedah pemuatannya ke dalam bekas dipilih dalam kotak dialog oleh pengguna;

    "Objek" | " Objek Excel» – objek baharu dicipta;

    "Objek" | " Melukis objek» – objek baharu dicipta;

    "Objek" | “Terbenam daripada fail” – nama fail ditentukan oleh pengguna dalam kotak dialog OpenDialog;

    "Objek" | “Dibenamkan daripada “PowerPoint Presentation Name” - persembahan slaid yang telah dibuat telah dimasukkan ke dalam bekas;

    "Objek" | "Dipautkan daripada fail" - nama fail ditentukan oleh pengguna dalam kotak dialog OpenDialog;

    "Objek" | "Dipautkan daripada "Nama dokumen Word" - dokumen yang dibuat sebelum ini dimasukkan ke dalam bekas;

    "Objek" | “Melaksanakan arahan” - arahan yang dipilih oleh pengguna dalam ListBox$ dihantar ke pelayan untuk dilaksanakan

    "Hartanah" | "Sifat objek" - kontena meminta dari pelayan nama objek, keadaan pelayan dan nama dokumen yang berkaitan, berdasarkan maklumat yang diterima, kesimpulan dibuat: "objek tidak dimuatkan / dibenamkan / dipautkan.” Maklumat yang diterima dipaparkan dalam komponen Label pada tetingkap aplikasi utama.

    "Hartanah" | "Perintah pelayan" - senarai arahan pelayan dipaparkan dalam komponen ListBox;

    "Bantuan" | "Mengenai program ..." - tetingkap dengan maklumat mengenai aplikasi dan pengarangnya.

5. Menjalankan ujian penuh aplikasi pada pelbagai objek dan pelayan.

Teknologi Ole membolehkan anda mengimport objek daripada aplikasi lain sambil mengekalkan sambungan. Selain itu, jika anda memasukkan imej daripada aplikasi seperti Word atau graf daripada Excel, ia akan disimpan dalam fail sebagai objek terbenam, i.e. apabila memindahkan lukisan, anda tidak perlu mengarkibkannya dengan lukisan, seperti yang perlu dilakukan apabila menggunakan pautan luaran dalam AutoCAD.

Pada tab Sisipkan terdapat arahan AutoCAD Ole Object.

Selepas mengaktifkan arahan, kotak dialog "Sisipkan Objek" muncul.

Di sini anda boleh mencipta fail baharu. Dalam kes ini, anda harus menentukan aplikasi (Photoshop, Microsoft Excel, Word, Power Point, dsb.) di mana anda akan bekerja, dan, seterusnya, letakkan objek anda dalam AutoCAD atau segera bekerja berdasarkan fail sedia ada. Dalam amalan, pilihan kedua digunakan lebih kerap. Mari kita lihat dengan lebih terperinci.

Dalam kotak dialog "Sisipkan Objek", tandai kotak semak "Buat daripada fail", dan kemudian klik butang "Semak imbas" untuk memilih fail yang sesuai. Selepas langkah ini, laluan ke dokumen anda ditulis.

Terdapat dua pilihan sisipan:

1) Bebas - ​​selepas memasukkan objek, ia "secara pegun" disimpan dalam AutoCAD. Dan apabila anda menukar fail sumber, tiada perubahan berlaku dalam lukisan anda.

2) Memautkan fail - dalam kes ini, lokasi mereka pada komputer harus kekal tidak berubah. Jika laluan berubah, sambungan akan terputus. Oleh itu, yang terbaik adalah untuk menyimpan fail ini dalam satu folder. Untuk memaut Fail AutoCAD tandakan kotak semak "Pautan" dalam kotak dialog "Sisipkan Objek".(Gamb. 3).

nasi. 3 – Bekerja dengan objek AutoCAD berdasarkan fail sedia ada.

Selepas mengklik OK, objek ole anda dimasukkan ke dalam ruang kerja AutoCAD. Kini anda boleh bekerja dengannya seperti dengan primitif AutoCAD biasa, sebagai contoh, gunakan arahan pengeditan.

nasi. 4 – Objek AutoCAD Ole dalam bentuk gambar daripada Word.

Jika anda mengklik dua kali pada objek ole tersebut, aplikasi di mana ia pada asalnya dicipta (atau disimpan) akan dibuka. Dalam contoh ini, gambar biasa daripada Word telah dimasukkan.

nasi. 5 – Ketersediaan maklum balas membolehkan anda membuka aplikasi sumber (dalam kes ini Word).

Pelaksanaan Ole dalam AutoCAD melalui papan keratan.

Ole AutoCAD: rahsia dan helah.

Dalam kursus ini pada contoh praktikal Bekerja dengan Ole-objek AutoCoad dipertimbangkan. Format video bercakap tentang:

Tetapan kualiti cetakan untuk objek ole;

Cara mengalih keluar bingkai yang membingkai objek ini secara lalai;

Pembolehubah sistem apabila bekerja dengan ole AutoCAD;

Proses terbalik memasukkan objek ole daripada AutoCAD ke dalam aplikasi pihak ketiga.

Nah, seperti yang anda lihat, objek ole dalam AutoCAD adalah teknologi yang sangat berguna! Dan yang paling penting, menggunakan prinsip ini membolehkan anda menjawab soalan: "Bagaimana untuk memasukkan gambar ke dalam AutoCAD tanpa pautan?" Kini anda boleh membenamkan logo syarikat anda dengan selamat pada lukisan atau latar belakang projek dan tidak takut bahawa pengguna lain tidak akan memaparkan objek grafik ini.

Komponen TOleContainer membolehkan anda meletakkan dokumen OLE pada permukaan borang. Sifat yang paling biasa digunakan bagi komponen ini ialah AutoActivate, yang menentukan cara dokumen OLE diaktifkan, State, yang menentukan keadaan bekas OLE dan OleClassName, yang menentukan nama kelas (CLSID) objek OLE yang terkandung dalam bekas. . Paling biasa digunakan kaedah berikut daripada komponen ini:

Ш InsertObjectDialog - memaparkan kotak dialog Objek standard untuk memilih jenis dokumen atau memuatkannya daripada fail; w CreateObject - mencipta objek OLE; Saya CreateObjectFromFile - mencipta objek OLE berdasarkan fail sedia ada yang mengandungi dokumen OLE dan meletakkannya dalam bekas OLE;

Dalam DestroyObject - memusnahkan objek yang terkandung dalam bekas OLE.

Mari cipta aplikasi ringkas yang menggambarkan penggunaan komponen TOleContainer. Untuk tujuan ini, kami akan meletakkan komponen TPanel pada borang dengan Selaraskan harta, sama dengan alClient, di atasnya - komponen TOleContainer dan menu utama (anda boleh mencipta objek Baharu dan item Keluar di dalamnya). Panel dan menu diperlukan untuk memaparkan bar alat dan menu pelayan OLE yang menyajikan objek yang dipaparkan dalam komponen TOleContainer. Jika borang yang mengandungi komponen TOleContainer mempunyai menu, menu pelayan akan dilampirkan pada menu aplikasi mengikut peraturan penggabungan menu Windows. Jika komponen TOleContainer diletakkan pada komponen TPanel, yang terakhir akan memaparkan bar alat pelayan (Rajah 5.1).

nasi. 5.1. Borang dengan komponen TOleContainer

Mari buat pengendali acara yang dikaitkan dengan memilih item menu Objek Baharu:

Prosedur TForml.NewlClick(Penghantar: TObject); mulakan 01eContai nerl.InsertObjectDi alog: end:

Dengan melancarkan aplikasi dan mengklik pada butang, kami mendapat kotak dialog Sisipkan Objek (Gamb. 5.2).


nasi. 5.2. Masukkan Kotak Dialog Objek

Senarai yang disediakan dalam kotak dialog ini menyenaraikan semua pelayan dokumen OEE yang didaftarkan komputer ini. Anda boleh memilih salah satu daripadanya (contohnya, Lembaran Kerja Microsoft Excel). Sekarang selepas Klik dua kali pada komponen TOleContainer komponen TPanel akan mengandungi panel alatan Microsoft Excel dan menu utama aplikasi ini, dan bekas OLE itu sendiri - yang baharu buku kerja Excel (Rajah 5.3).


nasi. 5.3. Objek aktif dalam bekas OLE

Jika jenis objek yang dipaparkan dalam bekas OLE diketahui lebih awal, anda boleh menggunakan kaedah CreateObject komponen TOleContainer:

Prosedur TForml.NewExcelworksheetlClick(Penghantar: TObject). mulakan 01eContainerl.CreateObjectC"Excel.Sheet". Salah): tamat;

Parameter kedua kaedah ini menentukan sama ada untuk memaparkan ikon dalam bekas OLE.

PERHATIAN -

Walaupun kotak dialog Sisipkan Objek hanya mengandungi nama pelayan dokumen OLE, pada dasarnya mana-mana pelayan COM yang mempunyai antara muka pengguna boleh dipaparkan dalam komponen tersebut, khususnya banyak elemen Kawalan ActiveX. Sekiranya perlu untuk dipaparkan dalam OLE-copyspace antaramuka pengguna Pelayan COM yang bukan pelayan dokumen OLE harus menentukan CLSIDnya sebagai parameter pertama kaedah CreateObject

Mari kita ubah suai aplikasi dengan menambah beberapa lagi item menu (Gamb. 5.4). Mari buat pengendali acara yang sepadan:

Prosedur TForml.ShowPropertieslClickCSender: TObject); mulakan jika 01 eCONtainerl.01eObjectInterface<>tiada kemudian 01eContai nerl.ObjectProperti esDi alog else ShowMessage("OleContainer kosong"); akhir; prosedur TForml.PastespeciallClick(Penghantar: TObject). mulakan 01eContai nerl.PasteSpeci alDialog: tamat

nasi. 5.4. Menu aplikasi yang menggunakan komponen TOIeContainer

Mari kita susun aplikasi dan tambahkan beberapa objek pada bekas OLE pada masa jalan. Dengan memilih arahan Action Show Properties aplikasi kami, kami mendapat kotak dialog standard yang menerangkan sifat objek OLE (Gamb. 5.5).


nasi. 5.5. Kotak dialog yang menerangkan sifat objek

Setelah meletakkan beberapa data pada papan keratan, pilih arahan Action PasteSpecial aplikasi kami dan dapatkan kotak dialog sisipan khas objek daripada papan keratan Tampal Khas (Gamb. 5.6).


nasi. 5.6. Tampal Kotak Dialog Khas

Setelah memilih jenis objek untuk dimasukkan dalam senarai yang dicadangkan, kita boleh meletakkannya di dalam bekas OBE (Rajah 5.7).


nasi. 5.7. Hasil tampalan objek dari papan keratan