DDE bo’yicha boshqa dasturdan ma'lumotlar oluvchi yoki boshqa dasturni DDE buyruqlari yordamida boshqaruvchi dastur DDE-mijozi hisoblanadi. Bu holda ikkinchi dastur DDE-serveri bo’ladi. Bir dasturning o’zi bir Vaqtda ham mijoz, ham server bo’lishi mumkin (masalan, MicroSoft Word).
Endi keling Delphiqanday qilib DDE-dasturlarni tuzish mumkinligini ko’rib o’taylik.
DDE-serverlar
Delphida DDE-serverni qurish uchun System sahifasidagi ikki - TDdeServerConv Va TDdeServerItemkomponentlari xizmat qiladi. Odatda loihada bitta TDdeServerConv obyekti Va bir yoki bir nechta TDdeServerItem obyekti ishlatidi. DDE-serverning servislariga murojaat qilish uchun mijoz bir necha parametrlarni bilishi keark: servis nomi (Service Name) - bu dastur nomi (odatda - EXE kengaytmasiz bajariluvchi fayl nomi, to’liq yuli bilan); Topic Name - Delphida bu nom TDdeServerConvkomponenti; Item Name - Delphida bu TDdeServerltemning kerakli bo’limi nomi.
Б7
TDdeServerConv obyektining Vazifalari- DDEni umumiy boshqarish Va makrovlarning bajarilishi uchun mijozlardan so’rovlarni qabul qilish. Oxirgi ama l OnExecuteMacro holatlar qayta ishlovchisida bajariladi, masalan, bizning holdaquyidagicha:
TDdeServerItem obyekti TDdeServerConv bilan bog’lanadi VaDDE bo’yicha aynan nima yuborilishini aniqlanadi. Buning uchun unda Text Va Lines xususiyatlari mavjud. (Text ning qiymati doimo Lines[0] ga teng bo’ladi) bu qiymatlar o’zgarganda server bilan bog’langan hamma mijozlarga yangilangan ma'lumotlar yuboriladi. Bizning dasturimizda Lines xususiyati qiymatining o’zgarishi Edit1 komponentining OnChange holatlari qayta ishlovchisida amalga oshadi:
Shu komponentning o’zi mijozlardan ma'lumot olishni a'minlaydi, bizning misolimizda bu holat Poke Data tugmasi bosilganda, OnPokeData holati qayta ishlovchisida bajariladi:
procedure TDdeSrvrForm.doOnPoke(Sender: TObject);
begin
FInPoke :q True;
68
Editl.Lines :q DdeTestItem.Lines;
FInPoke :qFalse;
end;
Shunday qilib biz Delphi komponentlari yordamida qurilgan to’liq ishlovchi DDE-serverni ko’rib o’tdik. Ko’pincha mavjud DDE-serverlar DDE imkoniyatlarini to’liq namoyish qila olmaydi Va servis imkoniyatlarning faqat bir qismi bilan chegaralaniladi. Masalan,ReportSmith faqatgina DDE bo’yicha buyruqlar (makroslar)ni bajaradi.