AMALIY MASHG’ULOT.  DASTURLASH TILINING OFFICE DASTURLARI BILAN HAMKORLIGI.

OLE asoslari

OLE sо‘zi Objects Linked and Embedded (Bog‘langan va Ichki Obyektlar – B va IO ) ma’nosini bildiradi. Dasturlar orasida bо‘linadigan ma’lumotlar OLE obyekt deyiladi. OLE obyektlarini saqlovchi dastur, OLE konteyner (OLE Container) deyiladi.

Masalan, MicroSoft Word hujjatga grafik obyektlarni, audio xamda videokliplarni va boshqa kо‘plab obeyektlarni jamlashi mumkin (bunday hujjatni ba’zan tuzilgan hujjat - compound document deyiladi).

Nomidan kо‘rinib turibdiki, OLE obyektlarni OLE konteynerga qо‘shish yoki unga о‘rnatish mumkin. Birinchi holatda ma’lumotlar diskda fayl kо‘rinishida saqlanadi va ixtiyoriy dastur ularga murojaat qilishi hamda о‘zgartirishi mumkin bо‘ladi. Ikkinchi holatda ma’lumotlar OLE konteyneriga о‘rnatiladi va bu ma’lumotlarni faqat u kо‘rishi va о‘zgartirishi mumkin.

Agar DDE yordamida matnlar bilan ishlash mumkin bо‘lsa, OLE yordamida esa, dasturlarga ixtiyoriy tipdagi ma’lumotlarni kiritish mumkin. Xuddi DDEda kо‘rib о‘tganimizdek, mijoz dastur (OLE konteyner) ishlashi uchun OLE server mavjud bо‘ltsht talab qilinadi. Mijoz dasturda ishlayotgan foydalanuvchi har safar OLE obyektga kо‘rish yoki tahrirlash uchun murojaat qilganda server dastur ishga tushiriladi va ma’lumotlar shu yerda tahrirlanadi.

TOLEContainer obyekti

TOLEContainer obyekti System sahifasida joylashgan va OLE-konteyner dasturlarini tuzish uchun ishlatiladi. TOLEContainer OLEning hamma ichki murakkabliklarini yashiradi va dasturchi uchun ancha oddiy interfeysni taqdim qiladi. OLE obyektni ishlatuvchi oddiy dastur misolini kо‘rib о‘tamiz. Yangi loiha yarating va formaga TOLEContainer obyektini tashlang, Obyektlar Inspektoridagi ObjClass yoki ObjDoc xususiyatlariga sichqonni ikki marta bosing – shunda Windowsning standart “Insert Object” muloqot oynasi kо‘rinadi.



22-rasm. “Insert Object” muloqot oynasi

Bu muloqot oynasida tizimda mavjud barcha OLE-serverlar rо‘yxati keltirilgan. OLE-obyekt tipi siz tanlagan server tomonidan aniklanadi. Agar siz yangi obyekt yaratsangiz (Create New), u holda, OK tugmasi bosilgach, yangi obyekt yaratiladigan OLE-server ishga tushadi. Srver dasturidan chiqilgach, yangi OLE obyekt dasturga о‘rnatiladi (embedded object). Yangi OLE obyektni serverlardan birining formatida saqlanuvchi mavjud fayl yordamida ham yaratish mumkin. Buning uchun Create from File bо‘limini tanlash kerak.

Keling misol sifatida dasturimizga Microsoft Word Document ni tanlab yangi obyekt yaratamiz.



23-rasm. OLE hujjati kiritilgan dastur

OK tugmasini bossangiz MS Word yuklanadi va u yerda ixtiyoriy matnni terish mumkin. Ishni yakunlash maqsadida “File|Close and Return to Form1” buyrug‘ini tanlang.

OLE-konteynerga sichqonni bosing - MS Word OLE-obyektdagi hujjat bilan paydo bо‘ladi va uni tahrirlash mumkin, bu holda hamma о‘zgarishlar OLE-obyektda saqlanadi.

TOLEContainer dasturga obyektning о‘z xususiyatlari bilan (ya’ni uni turli darajada kattalashtirish yoki kichraytirish mumkin – Zoom xususiyati) yoki piktogramma, kо‘rinishida birga о‘rnatadi.

OLE-obyekt tanlovi faqat formalar dizayneri rejimida emas, balki dastur bajarilish vaqtida ham bajarilishi mumkin. Ish natijalarini fayllarda saqlash va kerak bо‘lganda uni fayldan qayta tiklash mumkin, buning uchun TOLEContainer ikkita SaveToFile va LoadFromFile uslublariga ega.

OLE dasturiga misol

Quyidagi dastur TOLEContainerning barcha asosiy imkoniyatlarini namoyish qiladi va quyidagilar imkonini beradi:

- dastur bajarilish vaqtida yangi OLE konteyner yaratish;

- OLE obyektni Windowsning standart “Insert Object” oynasi yordamida, yoki Clipboard yordamida, yokiolib tashlash” (drag-and-drop) texnologiyasi yordamida о‘rnatish;

- OLE obyektni faylda saqlash va uni qayta tiklash;

OLE obyektlarni drag-and-drop texnologiyasi yordamida о‘rnatish ancha qiziqarli. MS Wordni yuklang (uning oynasi va dastur oynasini ekranda yonma-yon о‘rnating), ixtiyoriy matnni tering, uni belgilang va sichqon yordamida tortib dasturning bosh oyeasiga tashlang. Endi dasturda shu matnni saqlovchi yangi ichki OLE konteyner hosil bо‘ladi. Bu imkoniyatni dasturiy yо‘l bilan bajarish ancha mushkul.

OLE obyektini ma’lumotlar omborida saklash

Ba’zan OLE obyektini fayllarda emas, ma’lumotlar omborlarida saqlash zarurati tug‘iladi (jadvalning BLOB tipli maydonida). Bu holda OLE obyekt albatta о‘rnatilgan bо‘lishi kerak. Afsuski, Delphining standart tо‘plamida TDBOLEContainer tipidagi obyekt mavjud emas, buning uchun biz OLE obyektni SaveToStream va LoadFromStream usullari bilan ma’lumotlar omboriga joylashtiramiz va unga murojaat qilamiz. Masalan:

procedure TOLEForm.SaveOLE(Sender: TObject);

var

BlSt : TBlobStream;

begin

With Table1 do BlSt:=TBlobStream.Create(BlobField(FieldByName('OLE')), bmReadWrite);

OLEContainer.SaveToStream(BlSt as TStream);

BlSt.Free; end;

Комментарии

Популярные сообщения из этого блога