Добавил:
Studfiles2
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Операционные среды АСОИУ / L23
.TXT я2ЋЎ¬Ґ ¤ л¬Ё ў вҐе®«®ЈЁЁ OLE
OLE пў«пҐвбп бв®«м Ў®«ми®© ®Ў« бвмо вҐе®«®ЈЁЁ, зв® Ў®«миҐ
Ґ Ё¬ҐҐв пў®Ј® ®в®иҐЁп Є бўп§лў Ёо Ё ўҐ¤аҐЁо ®ЎкҐЄв®ў.
‚¬Ґбв® нв®Ј® ®® бўп§лў Ґвбп б ЈагЇЇ®© вҐе®«®ЈЁ©, ўЄ«оз ойЁе ў
ᥡп бўп§лў ЁҐ Ё ўҐ¤аҐЁҐ ®ЎкҐЄв®ў, Ћ‘•, бвагЄвгаЁа®ў го
Ї ¬пвм, ўв®¬ вЁ§ жЁо Ё вҐе®«®ЈЁо ЇҐаҐв бЄЁў Ёп. ‚ᥠнвЁ
вҐе®«®ЈЁЁ Ў §Ёаговбп Їа®Ја ¬¬®© вҐе®«®ЈЁЁ, §ў ®©
Component Object Model Ё«Ё COM.
—в® в Є®Ґ вҐе®«®ЈЁп OLE? ќв® Ў®а ®ЎкҐЄв®ў, Ї®бв஥ле
Ї®ўҐае ®ЎкҐЄв®© ¬®¤Ґ«Ё ‘ЋЊ, Є®в®а п ¤®ЇгбЄ Ґв Є®¬¬гЁЄ жЁо ў
室Ґ Їа®жҐбб . Ѓ®«ми п з бвм вҐе®«®ЈЁЁ бўп§ б Ї®«г票Ґ¬
ҐбЄ®«мЄЁе ЇаЁ«®¦ҐЁ©, Їа®жҐбб®ў, ¬ иЁ Ё«Ё ®ЇҐа жЁ®ле бЁб⥬,
®Ўй ойЁебп ¤агЈ б ¤агЈ®¬.
OLE - нв® Ґ Їа®бв® вҐе®«®ЈЁп ®Ў¬Ґ ¤ л¬Ё ¬Ґ¦¤г ЇаЁ«®¦Ґ-
Ёп¬Ё, OLE пў«пҐвбп п¤а®¬ ᮢ६Ґ®© Є®жҐЇжЁЁ ¤®Єг¬Ґв®-®аЁҐ-
вЁа®ў ®© б।л. Џ®н⮬㠤 ў ©вҐ вҐе®«®ЈЁо OLE Ї®б¬®ваЁ¬ Ў®-
«ҐҐ иЁа®Є®, 祬 Їа®бв® бЇ®б®Ў ®Ў¬Ґ ¤ л¬Ё.
я1Џ®пвЁҐ ¤®Єг¬Ґв®-®аЁҐвЁа®ў ®© б।л
Џ®«м§®ў вҐ«п¬ з бв® Ґ®Ўе®¤Ё¬® б®ў¬Ґб⮥ ЁбЇ®«м§®ў ЁҐ
ЇаЁ«®¦ҐЁ©. Ќ ЇаЁ¬Ґа, ў ⥪бв Ґ®Ўе®¤Ё¬® ўЄ«озЁвм Є авЁЄг. Љ Є
н⮠ᤥ« вм, Ґб«Ё । Єв®а, ў Є®в®а®¬ ⥪бв ᮧ¤ Ґвбп, Ґ
ЇаҐ¤ § зҐ ¤«п аЁб®ў Ёп Є авЁ®Є, Є авЁЄЁ ¬®¦® ᮧ¤ ў вм ў
б®ўҐа襮 ¤агЈ®¬ ЇаЁ«®¦ҐЁЁ. ’ Є ў®в Є®жҐЇжЁп
¤®Єг¬Ґв®-®аЁҐвЁа®ў ®© баҐ¤л ЇаҐ¤ § зҐ ¤«п нд䥪⨢®Ј®
ў§ Ё¬®¤Ґ©бвўЁп а §«Ёзле ЇаЁ«®¦ҐЁ©.
Џ® ¤®Єг¬Ґв®¬ Ї®Ё¬ Ґвбп Ґ в®«мЄ® ⥪бв, «оЎ®© д ©«,
Ї®¤Ј®в®ў«Ґл© Ї®«м§®ў ⥫Ґ¬.
„®Єг¬Ґв®-®аЁҐвЁа®ў п а Ў®в - нв® а Ў®в б Ў®а®¬
ЇаЁ«®¦ҐЁ©, Є ¦¤®Ґ Ё§ Є®в®але ўлЇ®«пҐв ®в¤Ґ«млҐ дгЄжЁЁ, Ґ
а Ў®в б ®¤Ё¬ ®Ја®¬л¬ ЇаЁ«®¦ҐЁҐ¬, ўлЇ®«пойЁ¬ ўбҐ дгЄжЁЁ. ‘
нв®© в®зЄЁ §аҐЁп ¬®¦® бзЁв вм, зв® ¤®Єг¬Ґв®-®аЁҐвЁа®ў п
б। - нв® ҐйҐ ®¤Ё бЇҐЄв бвагЄвгаЁ§ жЁЁ Їа®Ја ¬¬®Ј®
®ЎҐбЇҐзҐЁп.
‚ ¦®, зв® ў ¤-® Ї®¤е®¤Ґ ЇҐаў®Ґ ¬Ґбв® ўл室Ёв ¤®Єг¬Ґв,
Ґ ᮧ¤ ўиҐҐ ҐЈ® ЇаЁ«®¦ҐЁҐ Ё«Ё ап¤ ЇаЁ«®¦ҐЁ©. „®Єг¬Ґв -
ЇҐаўЁзҐ, ЇаЁ«®¦ҐЁҐ - ўв®аЁз®.
‘«Ґ¤гойЁҐ вҐе®«®ЈЁЁ бгйҐбвўгов ¤«п ®аЈ Ё§ жЁЁ ¤-® а Ў®вл.
1) OLE дЁа¬л Microsoft;
2) OpenDoc - ўбҐ, Єа®¬Ґ Microsoft, в.Ґ. Apple, IBM, Novell,
Oracle, Xerox;
3) CORBA - Common Object Request Broker Architecture ЋЎй п
ЂаеЁвҐЄвга Џ®б।ЁЄ ‡ Їа®б®ў ¬Ґ¦¤г ЋЎкҐЄв ¬Ё - IBM, HP, DEC,
Sun.
Њл Ўг¤Ґ¬ а бб¬ ваЁў вм вҐе®«®ЈЁо OLE.
‚ „Ћ‘ ва㤮 Ўл«® ᮧ¤ вм ¤®Єг¬Ґв - ⥪бв б аЁбгЄ ¬Ё. „Ґ«®
ў ⮬, зв® д®а¬ вл ¤ ле ў ЇаЁ«®¦ҐЁпе „Ћ‘ бгйҐб⢥® а §«Ёзл.
Ља®¬Ґ в®Ј®, Ї®бЄ®«мЄг „Ћ‘ Ё§ з «м® Їа®ҐЄвЁа®ў « бм Є Є
®¤®§ ¤ з п б। , Ґ Ўл«® Ґ®Ўе®¤Ё¬®бвЁ ў§ Ё¬®¤Ґ©бвўЁп ¬Ґ¦¤г
ЇаЁ«®¦ҐЁп¬Ё.
Џ®ЇлвЄЁ гбва Ёвм нв®в Ґ¤®бв в®Є ЇаЁўҐ«Ё Є ᮧ¤ Ёо
ЁвҐЈаЁа®ў ле Ї ЄҐв®ў, ЇаЁ¬Ґа, Framework. ќв® ЇаЁ¬Ґа вЁЇЁз®©
®ЇҐа жЁ®®© б।л, Єбв вЁ бЄ § вм. ‚ Ґ¬ ¬®¦® Ўл«® ¬®Ј®Ґ
¤Ґ« вм, Ґ ўле®¤п Ё§ Ї ЄҐв - ᮧ¤ вм ⥪бв, ўҐбвЁ Ў §г ¤ ле,
а Ў®в вм б д ©« ¬Ё, ЇҐз в вм. Ќ® ўбҐ а ў®, ®в¤Ґ«млҐ Є®¬Ї®Ґвл
Ї ЄҐв Ўл«Ё е㦥, 祬 б ¬®бв®п⥫млҐ ЇаЁ«®¦ҐЁп, ўлЇ®«пойЁҐ
ᮮ⢥вбвўгойЁҐ дгЄжЁЁ. ‘Є §лў « бм, ўЁ¤Ё¬®, Єў «ЁдЁЄ жЁп
г§Є®бЇҐжЁ «Ё§Ёа®ў ле а §а Ў®взЁЄ®ў.
‘«Ґ¤гойЁ¬ и Ј®¬ ЇгвЁ ¤-® а Ў®вл пў«пҐвбп Ї®пвЁҐ
Clipboard. Windows Є Є ¬®Ј®§ ¤ з п б। ба §г ¦Ґ
Їа®ҐЄвЁа®ў « бм б ўлб®Є®нд䥪⨢묨 б।бвў ¬Ё ®Ў¬Ґ ¤ л¬Ё
¬Ґ¦¤г ЇаЁ«®¦ҐЁп¬Ё. „®бв®Ёбвў® Clipboard б®бв®Ёв ў ⮬, зв®
Ёб祧« Їа®Ў«Ґ¬ ЇаҐ®Ўа §®ў Ёп ¤ ле ЇаЁ ЇҐаҐ¤ зҐ Ёе Ё§ ®¤®Ј®
ЇаЁ«®¦ҐЁп ў ¤агЈ®Ґ. ЏаҐ®Ўа §®ў ЁҐ Їа®Ёб室Ёв Ґ§ ¬Ґв® ¤«п
Ї®«м§®ў вҐ«п ®б®ўҐ ап¤ гбв ®ў«Ґле бв ¤ ав®ў. ЏаЁ«®¦ҐЁҐ
ўв®¬ вЁзҐбЄЁ Є®ва®«ЁагҐв «ЁзЁҐ ¤ ле ў ЎгдҐаҐ: ¤ лҐ Ґбвм -
дгЄжЁп Paste - ЄвЁў , ¤ ле Ґв - дгЄжЁп Paste - Ї ббЁў .
ЪДДДДДДДДДДДДДДДДДДДДДДДДДї
Copy і‚Ё§г «м®Ґ ЇаҐ¤бв ў«ҐЁҐі Paste
ЪДДДДДДДґ да Ј¬Ґв ГДДї
і АДДДДДДДДДДДДДДДДДДДДДДДДДЩ і
ЪДДДДДДДДБДДДДДДДДДДДї ЪДДДДДДДДДБДДДДДДДДДї
і ЏаЁ«®¦ҐЁҐ-Ёбв®зЁЄі іЏаЁ«®¦ҐЁҐ-ЇаЁҐ¬ЁЄі
і ЪДДДДДДДДДДї і і ЪДДДДДДДДДДДДДДДїі
і і ”а Ј¬Ґв і і і і ‚Ё§г «м®Ґ іі
і АДДДДДДДДДДЩ і і і ЇаҐ¤бв ў«ҐЁҐ іі
і і і і да Ј¬Ґв іі
і і і АДДДДДДДДДДДДДДДЩі
АДДДДДДДДДДДДДДДДДДДДЩ АДДДДДДДДДДДДДДДДДДДЩ
ЌҐ¤®бв вЄ®¬ пў«пҐвбп Ґў®§¬®¦®бвм Є®Ї«ҐЁп ¤ ле; ЇаЁ
Ї®пў«ҐЁЁ ®ў®Ј® Ў«®Є ¤ ле, бв алҐ вҐаповбп, в Є¦Ґ
®Ја ЁзҐ®бвм а §¬Ґа Ў«®Є , в.Є. Clipboard - нв® ЎгдҐа ў Ћ‡“.
‘«Ґ¤гойЁ¬ и Ј®¬ а §ўЁвЁп вҐе®«®ЈЁЁ ®Ў¬Ґ ¤ л¬Ё бв «
вҐе®«®ЈЁп DDE. ”а Ј¬Ґв, Є®в®ал© ¬л е®вЁ¬ ЇҐаҐҐбвЁ ў ¤агЈ®Ґ
ЇаЁ«®¦ҐЁҐ, ¤®«¦Ґ Ўлвм з бвмо д ©« , Є®в®ал© §лў Ґвбп
¤®Єг¬Ґв®¬-Ёбв®зЁЄ®¬. ”а Ј¬Ґв Ї®¬Ґй Ґвбп ў Clipboard Є®¬ ¤®©
Copy, бзЁвлў Ґвбп Ґ Є®¬ ¤®© Paste, a Є®¬ ¤®© Paste Link.
ЪДДДДДДДДДДДДДДДДДДДДДДДДДї
Copy і‚Ё§г «м®Ґ ЇаҐ¤бв ў«ҐЁҐі Paste Link
ЪДДДДД>Дґ да Ј¬Ґв ГД>ї
і АДДДДДДДДДДДДДДДДДДДДДДДДДЩ і
ЪДДДДДДДДБДДДДДДДДДДДї ЪДДДДДДДДДБДДДДДДДДДї
і ЏаЁ«®¦ҐЁҐ-Ёбв®зЁЄі іЏаЁ«®¦ҐЁҐ-ЇаЁҐ¬ЁЄі
і ЪДДДДДДДДДДї і і ЪДДДДДДДДДДДДДДДїі
і і ”а Ј¬Ґв і і і і ‚Ё§г «м®Ґ іі
і АДДДДДДДДДДЩ і і і ЇаҐ¤бв ў«ҐЁҐ іі
і і і і да Ј¬Ґв іі
і і і АДДДДДДДДДДДДДДДЩі
АДДДДДДДДВДДДДДДДДДДДЩ АДДДДДДДДДВДДДДДДДДДЩ
^ ббл«Є ®аЁЈЁ « і
АДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ
’ҐЇҐам «оЎлҐ Ё§¬ҐҐЁп ў да Ј¬ҐвҐ ¤®Єг¬Ґв -Ёбв®зЁЄ Ўг¤гв
®ва ¦ вмбп да Ј¬ҐвҐ, Ї®¬ҐйҐ®¬ ў ЇаЁ«®¦ҐЁҐ-ЇаЁҐ¬ЁЄ. ’.®.
да Ј¬Ґв б®еа Ё« бўп§м б ®аЁЈЁ «®¬, ў ¤®Єг¬ҐвҐ, Єг¤ ўбв ў«Ґ
да Ј¬Ґв Ґбвм ббл«Є ®аЁЈЁ «. ЏаЁ н⮬ бўп§м б®еа пҐвбп Ё
Ї®б«Ґ § ЄалвЁп ЇаЁ«®¦ҐЁ©.
’Ґе®«®ЈЁп DDE Ґ Ї®«гзЁ« иЁа®Є®Ј® а бЇа®бва ҐЁп.
Џ®«м§®ў ⥫Ё з йҐ ЁбЇ®«м§гов ®Ўлзл© Clipboard. „«п Їа®Ја ¬¬Ёбв®ў
Їа®в®Є®«л DDE ⮦Ґ ®зҐм б«®¦л. ‚л нв® ўЁ¤Ґ«Ё. DDE 楫Ґб®®Ўа §®
ЁбЇ®«м§®ў вм ¤«п ®Ў¬Ґ ¤®бв в®з® Їа®бвл¬Ё бвагЄвга ¬Ё ¤ ле,
Ё¬Ґ®, ⥪бв®ўл¬Ё бва®Є ¬Ё. „«п Ў®«ҐҐ б«®¦ле бвагЄвга Ё Ўл«
ᮧ¤ Їа®в®Є®« OLE.
— бв® Їа®Ё§ў®¤Ёвбп ба ўҐЁҐ Їа®в®Є®«®ў DDE Ё OLE Ё
бЇа иЁў Ґвбп, Є®Ј¤ Є Є®© Їа®в®Є®« Ґ®Ўе®¤Ё¬® ЇаЁ¬Ґпвм. Џа®в®Є®«
DDE 楫Ґб®®Ўа §® ЁбЇ®«м§®ў вм ¤«п ®Ў¬Ґ Їа®бвл¬Ё вЁЇ ¬Ё ¤ ле,
ЇаЁ¬Ґа, ⥪бв®ўл¬Ё бва®Є ¬Ё, ў в® ўаҐ¬п Є Є Їа®в®Є®« OLE
бЇ®б®ЎҐ Ї®¤¤Ґа¦Ёў вм ®Ў¬Ґ бгйҐб⢥® Ў®«ҐҐ б«®¦®©
Ёд®а¬ жЁҐ©, в Є®© Є Є §ўгЄЁ, Ё§®Ўа ¦ҐЁп.
я1ЏаЁжЁЇл OLE
‚ OLE Ї®пвЁҐ ®ЎкҐЄв Ё¬ҐҐв б«Ґ¤гойЁ© б¬лб«: ®ЎкҐЄв - нв®
б®ў®ЄгЇ®бвм ваҐе ўЁ¤®ў ¤ ле:
1) б®ЎбвўҐлҐ ¤ лҐ ў ⮬ ўгв॥¬ д®а¬ вҐ, ў Є®в®а®¬ Ёе
ᮧ¤ «® ЇаЁ«®¦ҐЁҐ-бҐаўҐа;
2) ¤ лҐ ¤«п ўЁ§г «м®Ј® ЇаҐ¤бв ў«ҐЁп;
3) б«г¦ҐЎ п Ёд®а¬ жЁп ® Їа®Ја ¬¬Ґ-бҐаўҐаҐ.
’.®. OLE-®ЎкҐЄв - нв® ¤ лҐ, а §¤Ґ«пҐ¬лҐ ¤ўг¬п
ЇаЁ«®¦ҐЁп¬Ё. ЏаЁ«®¦ҐЁҐ-Є«ЁҐв в®«мЄ® ®в®Ўа ¦ Ґв ¤ лҐ (2).
„«п ЇаЁ«®¦ҐЁп-Є«ЁҐв Ї®пўЁ«бп вҐа¬Ё - OLE-Є®вҐ©Ґа - нв®
ЇаЁ«®¦ҐЁҐ, Є®в®а®Ґ ¬®¦Ґв ᮤҐа¦ вм ®ЎкҐЄв. OLE-бҐаўҐа - нв®
ЇаЁ«®¦ҐЁҐ, Є®в®а®Ґ ¬®¦Ґв ᮧ¤ ў вм Ё । ЄвЁа®ў вм ®ЎкҐЄв.
Џ®пўЁ«®бм Ї®пвЁҐ "б®бв ў®© ¤®Єг¬Ґв" Є Є ¤®Єг¬Ґв,
ᮤҐа¦ йЁ© а §«ЁзлҐ вЁЇл ¤ ле, ®д®а¬«ҐлҐ Є Є ®ЎкҐЄвл.
„«п Ї®«м§®ў ⥫Ґ© ®б®ўл¬ ®ў®ўўҐ¤ҐЁҐ¬ бв « ў®§¬®¦®бвм
ЄвЁўЁ§ жЁЁ ЇаЁ«®¦ҐЁп, ᮧ¤ ўиҐЈ® ®ЎкҐЄв, Ё§ ЇаЁ«®¦ҐЁп-Є«ЁҐв ,
ў Є®в®а®¬ ®ЎкҐЄв 室Ёвбп. ‚ Ї®«Ґ ®ЎкҐЄв ¤® ᤥ« вм ¤ў®©®©
饫祪 «Ґў®© Є®ЇЄ®© ¬лиЁ. ‡ Јаг§Ёвбп бҐаўҐа Ё Ґ¬г Ўг¤Ґв ЇҐаҐ¤
®ЎкҐЄв.
ЏаЁ н⮬ Ї®пвЁҐ 宦¤ҐЁп ®ЎкҐЄв ў ЇаЁ«®¦ҐЁЁ-Є«ЁҐвҐ
¬®¦Ґв ЇаЁ®ЎаҐв вм ¤ў®пЄЁ© б¬лб«.
‚ аЁ в 1. ‚Ґ¤аҐЁҐ ®ЎкҐЄв . ‘¬лб« ўҐ¤аҐЁп б®бв®Ёв ў ⮬,
зв® ўбҐ ваЁ ўЁ¤ ¤ ле ®ЎкҐЄв Є®ЇЁаговбп ў б®бв ў®© ¤®Єг¬Ґв.
ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
іЪДДДДДДДДДДДїЪДДДДДДДДДДДДДїЪДДДДДДДДДДїі
Copy іі‘®Ўб⢥륳і ‚Ё§г «м®Ґ іі‘«г¦ҐЎ п іі Insert
ЪДДД>ґі ¤ лҐ ііЇаҐ¤бв ў«ҐЁҐііЁд®а¬ жЁпіГД>ї object
і іАДДДДДДДДДДДЩАДДДДДДДДДДДДДЩАДДДДДДДДДДЩі і
і і ЋЎкҐЄв і і
і АДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ і
ЪДДДБДДДДї ЪДДДБДДДДї
і ‘ҐаўҐа і і Љ«ЁҐв і
іЪДДДДДДїі іЪДДДДДДїі
ііЋЎкҐЄвіі ііЋЎкҐЄвіі
іАДДДДДДЩі іАДДДДДДЩі
АДДДДДДДДЩ АДДДДДДДДЩ
„®бв®Ёбвў® ¤ ®Ј® ¬Ґв®¤ б®бв®Ёв ў § Є®зҐ®бвЁ д ©«
б®бв ў®Ј® ¤®Єг¬Ґв . ‚бҐ, з⮠㦮, Ґбвм ў Ґ¬ б ¬®¬. ќв® ў ¦®
ў б«гз Ґ ў®§¬®¦®Ј® ЇҐаҐҐбҐЁп ¤®Єг¬Ґв ¤агЈго дЁ§ЁзҐбЄго
¬ иЁг.
ЌҐ¤®бв в®Є б®бв®Ёв ў ⮬, зв® ўҐ«ЁЄ а §¬Ґа д ©« б®бв ў®Ј®
¤®Єг¬Ґв . …б«Ё Ґбвм ҐбЄ®«мЄ® б®бв ўле ¤®Єг¬Ґв®ў б ¤ л¬
®ЎкҐЄв®¬, в® ®Ё бЄ®ЇЁа®ў л ў Є ¦¤®¬ Ё§ б®бв ўле ¤®Єг¬Ґв®ў.
‚ аЁ в 2. ‘ўп§лў ЁҐ ®ЎкҐЄв . ‚ н⮬ б«гз Ґ ўв®а п Є®ЇЁп
®ЎкҐЄв Ґ ᮧ¤ Ґвбп. „®Єг¬Ґв-Є«ЁҐв ᮤҐа¦Ёв в®«мЄ® ¤ лҐ ¤«п
ўЁ§г «м®Ј® ЇаҐ¤бв ў«ҐЁп Ё ббл«Єг ¤®Єг¬Ґв-бҐаўҐа, ᮤҐа¦ йЁ©
®ЎкҐЄв. ‘бл«Є - Ї®«л© Їгвм Є ®ЎкҐЄвг.
ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДї
іЪДДДДДДДДДДДДДїЪДДДДДДДДДДїі
Copy іі ‚Ё§г «м®Ґ іі‘бл«Є іі Paste
ЪДДД>ґіЇаҐ¤бв ў«.(1)іі®ЎкҐЄв (2)іГД>ї Link
і іАДДДДДДДДДДДДДЩАДДДДДДДДДДЩі і
і АДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ і
ЪДДДБДДДДї ЪДДДБДДДДї
і ‘ҐаўҐа і і Љ«ЁҐв і
іЪДДДДДДїі іЪДДДДДДїі
ііЋЎкҐЄвіі іі(1)(2)іі
іАДДДДДДЩі іАДДДДДДЩі
АДДДДДДДДЩ АДДДДДДДДЩ
‘ўп§лў ЁҐ нЄ®®¬Ёв ¬Ґбв® ¤ЁбЄҐ, ®б®ЎҐ®, Є®Ј¤ ®¤Ё
®ЎкҐЄв пў«пҐвбп Ёбв®зЁЄ®¬ ¤«п ¬®ЈЁе Є«ЁҐв®ў, ® ЇаЁ ЇҐаҐ®бҐ
¤агЈго ¬ иЁг ¤®Єг¬Ґв -Є«ЁҐв Ґ®Ўе®¤Ё¬® ®вб«Ґ¤Ёвм, зв®Ўл
ўбҐ ¤®Єг¬Ґвл-бҐаўҐал ⮦Ґ Ўл«Ё ЇҐаҐҐбҐл.
€бв®аЁзҐбЄЁ Їа®в®Є®« OLE бгйҐбвўгҐв ў ¤ўге ўҐабЁпе - OLE 1.0
Ё OLE 2.0. ‘Ґ©з б, ҐбвҐб⢥®, ЇаҐ¤Ї®з⥨Ґ ®в¤ Ґвбп OLE 2.0.
OLE 1.0 Ї®«®бвмо ॠ«Ё§®ў б।бвў ¬Ё DDE Ё ®Ў« ¤ Ґв
б«Ґ¤гойЁ¬ Ґг¤®Ўбвў®¬. ЏаЁ ЄвЁўЁ§ жЁЁ ®ЎкҐЄв ў
¤®Єг¬ҐвҐ-Є«ЁҐвҐ, § Јаг¦ Ґвбп ЇаЁ«®¦ҐЁҐ-бҐаўҐа Ё Ґ¬г ЇҐаҐ¤ Ґвбп
®ЎкҐЄв ¤«п । ЄвЁа®ў Ёп. ќв® е®а®и®, ® Ї«®е® в®, зв®
ЇаЁ«®¦ҐЁҐ-бҐаўҐа § Јаг¦ Ґвбп ў ®в¤Ґ«м®¬ ®ЄҐ Ё ЇаЁ
। ЄвЁа®ў ЁЁ ®ЎкҐЄв Ґ ўЁ¤® ®Єа㦥Ёп, ᮤҐа¦ 饣®бп ў
¤®Єг¬ҐвҐ-Є«ЁҐвҐ. ЌҐ¤®бв вЄЁ, бўп§ лҐ б нвЁ¬ гбва Ґл ў ®ў®©
ўҐабЁЁ OLE - OLE 2.0.
я1• а ЄвҐаЁбвЁЄ вҐе®«®ЈЁЁ OLE 2.0
1) Ќ®ў п ўҐабЁп OLE - OLE 2.0 ॠ«Ё§гҐв Є®жҐЇжЁо
ўЁ§г «м®Ј® । ЄвЁа®ў Ёп - । ЄвЁа®ў Ёп ¬ҐбвҐ.
ЏаЁ«®¦ҐЁҐ-бҐаўҐа § ЇгбЄ Ґвбп ЇаЁ ЄвЁўЁ§ жЁЁ ®ЎкҐЄв , ® ®® Є Є
Ўл § ЇгбЄ Ґвбп ў ®ЄҐ ЇаЁ«®¦ҐЁп-Є«ЁҐв . ЏаЁ«®¦ҐЁҐ-Є«ЁҐв Є Є
Ўл ЇаҐўа й Ґвбп ў ЇаЁ«®¦ҐЁҐ-бҐаўҐа. Ѓл«® ЇаЁ«®¦ҐЁҐ-Є«ЁҐв,
бв «® ЇаЁ«®¦ҐЁҐ-бҐаўҐа. ‚ бва®Єг ¬Ґо ЇаЁ«®¦ҐЁп-Є«ЁҐв
ўбва Ёў овбп Ї®§ЁжЁЁ ¬Ґо ЇаЁ«®¦ҐЁп-бҐаўҐа , Ґ®Ўе®¤Ё¬лҐ ¤«п
। ЄвЁа®ў Ёп, «®ЈЁз® б®Ј« б®ў ® Є®а४вЁаговбп Ё Ї Ґ«Ё
Ёбва㬥⮢. Ђ Ї®«Ґ ¤®Єг¬Ґв -Є«ЁҐв б ўЁ§г «мл¬
ЇаҐ¤бв ў«ҐЁҐ¬ а §«Ёзле ®ЎкҐЄв®ў Ґ Ёб祧 Ґв.
2) „агЈЁ¬ ®ўиҐбвў®¬ ў ЋL… 2.0 пў«пҐвбп ў®§¬®¦®бвм
ЇаЁ«®¦ҐЁп ЇаҐ¤®бв ўЁвм ап¤ бў®Ёе дгЄжЁ© ( ЇаЁ¬Ґа, Їа®ўҐаЄг
®ад®Ја дЁЁ) ¤«п ¤®бвгЇ Ё§ ¤агЈЁе ЇаЁ«®¦ҐЁ© - OLE-Automation.
Њ®¤г«м, ўлЇ®«пойЁ© г¦го дгЄжЁо, ®д®а¬«пҐвбп ў ўЁ¤Ґ ®ЎкҐЄв
ЋL… Ё ЇҐаҐ¤ Ґвбп ў ¤агЈ®Ґ ЇаЁ«®¦ҐЁҐ.
Ђўв®¬ вЁ§ жЁп OLE ЇаҐ¤®бв ў«пҐв ў®§¬®¦®бвЁ Ї® гЇа ў«ҐЁо
®ЎкҐЄв ¬Ё, Є®в®алҐ а §¬Ґй овбп ў ¤агЈЁе ЇаЁ«®¦ҐЁпе Ё«Ё ў DLL.
Ћ а Ў®в Ґв Ґ в®«мЄ® ўҐ Ја Ёж ЇаЁ«®¦ҐЁ©, ® Ё ўҐ
Ја Ёж п§лЄ®ў Ё, ў Ўг¤г饬, ўҐ Ја Ёж ®в¤Ґ«м®© ¬ иЁл.
Ђўв®¬ вЁ§ жЁп ўЄ«оз Ґв ў бҐЎп ‘…ђ‚…ђ› ўв®¬ вЁ§ жЁЁ Ё
Љ‹€…Ќ’Ћ‚ ўв®¬ вЁ§ жЁЁ.
‘ҐаўҐа ®ЎҐбЇҐзЁў Ґв ў®§¬®¦®бвЁ, Є«ЁҐв Ї®«гз Ґв Є Ё¬
¤®бвгЇ. ‘ҐаўҐал ¤Ґ«пвбп бҐаўҐал ўгв॥© ®Ўа Ў®вЄЁ Ё
«®Є «млҐ бҐаўҐал. ‘ҐаўҐа ўгв॥© ®Ўа Ў®вЄЁ - нв® DLL,
§ Јаг¦ Ґ¬ п ў ¤аҐб®Ґ Їа®бва бвў® Їа®Ја ¬¬л Є«ЁҐв . ‹®Є «млҐ
бҐаўҐал - нв® ўв®®¬лҐ Їа®Ја ¬¬л.
я1Џа®бв®© Є«ЁҐв ўв®¬ вЁ§ жЁЁ OLE
‘«Ґ¤гойЁ© ЇаЁ¬Ґа ®ЎҐбЇҐзЁў Ґв ¤®бвгЇ Ё§ ЇаЁ«®¦ҐЁп Delphi
Є дгЄжЁп¬ Word.
Var
V : Variant;
Begin
V := CreateOleObject('Word.Basic');
V.FileNew('Normal');
V.Insert('Hello from Delphi!');
V.FileSaveAs('C:\SAMPLE.DOC');
End;
ќв®в Є®¤ ᮧ¤ Ґв ¤®Єг¬Ґв Word, ўбв ў«пҐв ў ҐЈ® бва®Єг Ё
б®еа пҐв ҐЈ®. ‚ҐиҐ ўбҐ ®зҐм Їа®бв®, ® § ўҐиҐ© Їа®бв®в®©
бЄалв® ¬®¦Ґбвў® б«®¦Ґ©иЁе ¤Ґ©бвўЁ©.
‘«Ґ¤гҐв ®Ўа вЁвм ўЁ¬ ЁҐ вЁЇ ¤ ле Variant Ё
¬Ґв®¤л FileNew, Insert, FileSaveAs, Є®в®алҐ пў«повбп Ґ
Їа®жҐ¤га ¬Ё Delphi, ¬Ґв®¤ ¬Ё Word.
Љ Є ®бгйҐбвў«пҐвбп § ЇгбЄ Word. „«п нв®Ј® ®Їпвм вॡгҐвбп
॥бва.
Џ® б«®ў ¬ 'Word Basic' ў ॥бвॠ室Ёвбп § 票Ґ
бЇҐжЁ «м®Ј® Ё¤ҐвЁдЁЄ в®а CLSID. Џ® Ґ¬г ў н⮬ ¦Ґ ॥бваҐ
室Ёвбп бва®Є ЇаЁ¬Ґа® б«Ґ¤го饣® ўЁ¤ : ‘:\WINWORD\WINWORD.EXE
/Automation. Џ® Є«озг /Automation Word ў®§ўа й Ґв ббл«Єг
®ЎкҐЄв ўв®¬ вЁ§ жЁЁ, Ї®б«Ґ 祣® ®Є §лў овбп ¤®бвгЇл¬Ё ҐЈ®
¬Ґв®¤л.
я1Џа®бвлҐ бҐаўҐал ўв®¬ вЁ§ жЁЁ OLE
‚ ЇаЁ«®¦ҐЁЁ - бҐаўҐаҐ ўв®¬ вЁ§ жЁЁ ¤®«¦Ґ Ўлвм ¬®¤г«м,
ᮤҐа¦ йЁ© б«Ґ¤го饥 ®Ўкпў«ҐЁҐ:
Const
AutoClassInfo : TAutoClassInfo = (
AutoClass : TMyAuto; // €¬п Є« бб ®ЎкҐЄв ўв®¬ вЁ§ жЁЁ
ProgID : 'AutoProj.MyAuto'; // €¬п ЇаЁ«®¦ҐЁп.€¬п ¬®¤г«п
ClassID : '{12345678-1234-1234-123456789ABC}';
Description : 'Sam';
Instancing : acMultiInstance);
Љ«о祢묨 н«Ґ¬Ґв ¬Ё пў«повбп ProgID Ё ClassID, Є®в®алҐ
Ї®Ї ¤ ов ў ॥бва (ॣЁбва жЁ®го Ў §г ¤ ле) ЇаЁ ॣЁбва жЁЁ,
Є®в®а п ўлЇ®«пҐвбп ЇаЁ § ЇгбЄҐ ЇаЁ«®¦ҐЁп б Є«о祬 /regserver.
ClassID - б«гз ©®Ґ зЁб«®, зв®Ўл Ґ ббл« вмбп в Є®Ґ б«®¦®Ґ
зЁб«® ЁбЇ®«м§гҐвбп ProgID.
Instancing Ї®§ў®«пҐв ®аЈ Ё§®ў вм бҐаўҐа б ¤®бвгЇ®¬ Є
Ґ¬г «ЁЎ® ҐбЄ®«мЄЁе Є«ЁҐв®ў ®¤®ўаҐ¬Ґ®, «ЁЎ® ®¤®Ј®, «ЁЎ®
ўгв२© бҐаўҐа.
“б«гЈЁ, ЇаҐ¤®бв ў«пҐ¬лҐ бҐаўҐа®¬, ॠ«Ё§говбп ¬Ґв®¤ ¬Ё,
Ї®¬Ґй Ґ¬л¬Ё ў а §¤Ґ« Automated ®Ўкпў«ҐЁп Є« бб :
TMyAuto = Class(TAutoObject)
Private
{Private declarations}
Automated
Procedure ShowDialog;
End {TMyAuto};
Procedure TMyAuto.ShowDialog;
Begin
ShowMessage('Hello!');
End {TMyAuto.ShowDialog};
Џа®жҐ¤га ShowDialog ⥯Ґам ¤®бвгЇ Ё§ ЇаЁ«®¦ҐЁ©
Є«ЁҐв®ў, ўлЇ®«пойЁе б«Ґ¤гойЁҐ ¤Ґ©бвўЁп:
Var
V : Variant;
Begin
V := CreateOleObject('AutoProj.MyAuto');
V.ShowDialog;
End;
3) џ¤а®¬ ЋL… 2.0 бв « бЇ®б®Ў еа ҐЁп ¤ ле ў б®бв ў®¬
¤®Єг¬ҐвҐ. ‘®бв ў®© ¤®Єг¬Ґв ЇаҐ¤бв ў«пҐвбп ў ўЁ¤Ґ Ў®а
еа Ё«Ёй, ў Є ¦¤®¬ Ё§ Є®в®але ¬®¦Ґв ᮤҐа¦ вмбп ®ЎкҐЄв, ᮧ¤ л©
ЇаЁ«®¦ҐЁҐ¬-бҐаўҐа®¬. ‘ ¬® ЇаЁ«®¦ҐЁҐ-Є«ЁҐв Ґ § Ґв бЇ®б®Ў
еа ҐЁп ®ЎкҐЄв , ᮧ¤ ®Ј® ¤агЈЁ¬ ЇаЁ«®¦ҐЁҐ¬. Џ®н⮬㠯аЁ
б®еа ҐЁЁ ¤®Єг¬Ґв Є«ЁҐв Є Є Ўл "Їа®бЁв" бҐаўҐа б®еа Ёвм бў®Ё
®ЎкҐЄвл, б ¬ ЇаҐ¤®бв ў«пҐв еа Ё«Ёй ¤«п нв®Ј®. ЏаЁ н⮬ ®Ўй п
бвагЄвга ®ЎкҐЄв Ґ¤Ё ¤«п ўбҐе ЇаЁ«®¦ҐЁ©, Ї®¤¤Ґа¦Ёў ойЁе
Їа®в®Є®« ЋLE, Ё ўлЈ«п¤Ёв в Є Є Є Ўл«® Ї®Є § ® а ҐҐ.
‘вагЄвгаЁа®ў п Ї ¬пвм - нв® ®ў п вҐеЁЄ ¤«п § ЇЁбЁ
®ЎкҐЄв®ў Ё«Ё ¤ ле ¤ЁбЄ. ќв вҐеЁЄ ®ЎҐбЇҐзЁў Ґв ўбҐ гб«гЈЁ,
Є®в®алҐ бгйҐбвўгов ў бв ¤ а⮬ д ©«®ў®¬ ўў®¤Ґ/ўлў®¤Ґ. Њ®¦®
§ ЇЁблў вм д ©«л ¤ЁбЄ, ¬®¦® ᮧ¤ ў вм Є в «®ЈЁ Ё Ї®¤Є в «®ЈЁ.
Ћв«ЁзЁҐ бвагЄвгаЁа®ў ®© Ї ¬пвЁ ®в бв ¤ ав®Ј® д ©«®ў®Ј®
ўў®¤ /ўлў®¤ § Є«оз Ґвбп ў ⮬, зв® Є ¦¤л© Ў®а Є в «®Ј®ў Ё
д ©«®ў бвагЄвгаЁа®ў ®© Ї ¬пвЁ а §¬Ґй Ґвбп ўгваЁ Ґ¤Ё®Ј®
Ў®«ми®Ј® д ©« , Ї®¤®Ў® ⮬г, Є Є Ў®а в Ў«Ёж InterBase
а §¬Ґй Ґвбп ўгваЁ Ґ¤Ё®Ј® д ©« GDB.
” ©« бвагЄвгаЁа®ў ®© Ї ¬пвЁ §лў Ґвбп б®бв ўл¬
д ©«®¬. Љ в «®ЈЁ ўгваЁ нвЁе б®бв ўле д ©«®ў §лў овбп
Ї®в®Є ¬Ё.
Ќ ЇаЁ¬Ґа, ўбҐ DOC-д ©«л ў ¤Ґ©б⢨⥫м®бвЁ пў«повбп
д ©« ¬Ё бвагЄвгаЁа®ў ®© Ї ¬пвЁ.
‚®§¬®¦® бвагЄвгаЁа®ў п Ї ¬пвм Ўг¤Ґв бв ¤ ав®©
д®а¬®© д ©«®ў®Ј® ўў®¤ /ўлў®¤ ў Ўг¤гйЁе Ћ‘.
я1ђ Ў®в б® бвагЄвгаЁа®ў ®© Ї ¬пвмо
‘®бв ў®© д ©« ᮧ¤ Ґвбп ўл§®ў®¬ дгЄжЁЁ
StgCreateDocFile, Є®в®а п ў®§ўа й Ґв ббл«Єг ЁвҐа䥩бл©
®ЎкҐЄв IStorage. ќв®в ўл§®ў Є Є Ўл ᮧ¤ Ґв ®ўл© зЁбвл© ¦ҐбвЄЁ©
¤ЁбЄ.
Ћб®ўлҐ ¬Ґв®¤л а Ў®вл б ®ЎкҐЄв®¬ IStorage:
CreateStream;
OpenStream;
CreateStorage;
OpenStorage;
€ ¤а.
„«п Ї®«гзҐЁп Ї®в®Є ўл§лў Ґвбп ¬Ґв®¤ нв®Ј® ®ЎкҐЄв
CreateStream, Є®в®ал© ў®§ўа й Ґв ббл«Єг Ї®в®Є вЁЇ IStream.
ќв®в ўл§®ў Є Є Ўл ᮧ¤ Ґв ®ўл© д ©« ¤ЁбЄҐ.
‚ Ї®в®Є ¬®¦® ЇЁб вм ¤ лҐ ¬Ґв®¤®¬ Write. —Ёв вм ¤ лҐ
Ё§ Ї®в®Є ¬®¦® ¬Ґв®¤®¬ Read.
Ћб®ўлҐ ¬Ґв®¤л а Ў®вл б ®ЎкҐЄв®¬ IStream:
Read;
Write;
Seek;
€ ¤а.
‚ Є®жҐ а Ў®вл б Ї®в®Є®¬ Ё Ї ¬пвмо Ёе ¤® ®бў®Ў®¤Ёвм
¬Ґв®¤ ¬Ё Release.
‘гйҐбвўгҐв ¬®¦Ґбвў® ०Ё¬®ў а Ў®вл б® бвагЄвгаЁа®ў ®©
Ї ¬пвмо, ®ЇаҐ¤Ґ«пҐ¬ле Є®бв в ¬Ё, ЇҐаҐ¤ ў Ґ¬л¬Ё ў ўл§®ўл
StgCreateDocFile Ё CreateStream. ‚ з бв®бвЁ ў®§¬®¦Ґ ०Ё¬ б
ва § ЄжЁп¬Ё, ЇаЁ Є®в®а®¬ ¬®¦® ®в¬ҐЁвм १г«мв вл.
‘вагЄвгаЁа®ў п Ї ¬пвм - нв® ®зҐм § ¬ зЁў п бЁб⥬ ,
Є®Ј¤ вॡгҐвбп еа Ёвм ®зҐм ¬®Ј® д ©«®ў. ќв бЁб⥬ Ї®§ў®«пҐв
ўбҐ Ёе бЇапв вм ўгваЁ ®¤®Ј® д ©« .
4) „®Ї®«ЁвҐ«млҐ ў®§¬®¦®бвЁ OLE 2.0:
1) ђ §ўЁвЁҐ ¬Ґв®¤ Drag-and-Drop ¤«п ЇҐаҐ¬ҐйҐЁп «оЎле
®ЎкҐЄв®ў ўгваЁ «оЎле ®Є®, Ґ в®«мЄ® д ©«®ў Ё§ File Manager;
2) ‚®§¬®¦®бвм ᮧ¤ Ёп ў«®¦Ґле ®ЎкҐЄв®ў;
3) ‚®§¬®¦®бвм з бвЁз®Ј® бва Ёў Ёп бўп§Ґ© ЇаЁ
ЇҐаҐ¬ҐйҐЁЁ ¤®Єг¬Ґв®ў Ё§ Є в «®Ј ў Є в «®Ј;
4) ‚®§¬®¦®бвм ўлЎ®а бЇ®б®Ў ўҐ¤аҐЁп ®ЎкҐЄв ў
§ ўЁбЁ¬®бвЁ ®в 楫Ё, зв® Ї®§ў®«пҐв нЄ®®¬Ёвм Ї ¬пвм, ЇаЁ¬Ґа,
¬®¦® ўҐ¤аЁвм в Ў«Ёжг Ё§ Excel ў Word Є Є в Ў«Ёжг (¤«п ЄвЁў®Ј®
। ЄвЁа®ў Ёп), ¬®¦® - в®«мЄ® Є Є ЎЁв®ўл© ®Ўа § (в®«мЄ® ¤«п
®в®Ўа ¦ҐЁп).
5) ‚гв२Ґ ¬Ґе Ё§¬л OLE 2.0
OLE 2.0 - нв® Ў®а ЁвҐа䥩ᮢ, Ї®§ў®«пойЁе Є«ЁҐвг Ё
бҐаўҐаг ®Ў¬ҐЁў вмбп ¤ л¬Ё. Џа®в®Є®« ®Ў¬Ґ §лў Ґвбп UTD -
Uniform Data Transfer (“ЁдЁжЁа®ў п ЇҐаҐ¤ з ¤ ле). UTD -
нв® а биЁаҐЁҐ Їа®в®Є®« ®Ў¬Ґ зҐаҐ§ Clipboard,
ЇаҐ¤гб¬ ваЁў о饥 ¬Ґе Ё§¬л 㢥¤®¬«ҐЁп ®Ў Ё§¬ҐҐЁЁ ¤ ле Ё
ЇҐаҐЈ®ў®ал ® д®а¬ в е.
ЏаЁ н⮬ Ґв ®Ја ЁзҐЁ© а §¬Ґа ¤ ле, в.Є. ¬®¦®
ЇҐаҐ¤ ў вм Ё зҐаҐ§ ¤ЁбЄ, Ё«Ё Ї®«м§®ў вмбп ЇҐаҐ¤ 祩 ббл«ЄЁ, Ґ
б ¬Ёе ¤ ле.
‘ ¬®Ґ ў ¦®Ґ ў ¬Ґе Ё§¬ е OLE 2.0 - нв® ®вЄ § ®в Їа®в®Є®«
DDE, ®б®ў ®Ј® ¬Ґе Ё§¬Ґ ЇҐаҐ¤ зЁ б®®ЎйҐЁ©, ў Ї®«м§г
Їа®в®Є®« COM - Component Object Model, ®б®ў ®Ј® ¬Ґе Ё§¬Ґ
г¤ «Ґле Їа®жҐ¤гале ўл§®ў®ў - RPC Remote Procedure Call. COM -
нв® Їа®в®Є®« Ё§Є®Ј® га®ўп OLE, ЇаҐ¤гб¬ ваЁў ойЁ© Ў®а
бв ¤ ав®ў ¤«п ॠ«Ё§ жЁЁ ®ЎкҐЄв®ў, бЇ®б®Ўл Є®¬¬гЁЄ жЁЁ ®ЎкҐЄв®ў
¤агЈ б ¤агЈ®¬ Ё Ў®а дгЄжЁ© API.
‘ЋЊ - нв® вҐе®«®ЈЁп, Є®в®а п «Ґ¦Ёв Ї®¤ OLE, ® б ¬ Ґ
пў«пҐвбп з бвмо OLE.
‘ЋЊ - нв® бЇ®б®Ў ॠ«Ё§ жЁЁ ®ЎкҐЄв®ў га®ўҐ Ћ‘. ќв®
®§ з Ґв, зв® ®ЎкҐЄвл ‘ЋЊ ¬®Јгв Ўлвм ЁвҐЈаЁа®ў л ў б ¬г Ћ‘ Ё
¤Ґ©бвў®ў вм ў Є зҐб⢥ ҐбвҐб⢥®Ј® ҐҐ а биЁаҐЁп.
…б«Ё ®ЎкҐЄвл ‘ЋЊ а бЇ®« Ј овбп ў DLL, в® ®Ё бв ®ўпвбп
¤®бвгЇл¬Ё Ё§ а §«Ёзле п§лЄ®ў, в ЄЁ¬ ®Ўа §®¬ ®ЎкҐЄвл ‘ЋЊ
а §а Ў влў овбп ¤«п ЇаҐ®¤®«ҐЁп Ја Ёж ¬Ґ¦¤г Їа®Ја ¬¬ ¬Ё,
п§лЄ ¬Ё, ®ЇҐа жЁ®л¬Ё бЁб⥬ ¬Ё Ё ¬ иЁ ¬Ё.
Љ®ЄгаҐвл¬Ё вҐе®«®ЈЁп¬Ё пў«повбп CORBA Ё SOM.
я1‘®§¤ ЁҐ DLL бҐаўҐа
ЋЎкҐЄвл ‘ЋЊ ¬®Јгв а §¬Ґй вмбп «ЁЎ® ў DLL, «ЁЎ® ў
ЁбЇ®«пҐ¬ле ¬®¤г«пе, Ё«Ё, б® ўаҐ¬ҐҐ¬, г¤ «Ґле ¬ иЁ е.
Љ®Ј¤ ®Ё а §¬ҐйҐл ў DLL, в® Ё§ўҐбвл Ї®¤ Ё¬ҐҐ¬ бҐаўҐа®ў
ўгв॥© ®Ўа Ў®вЄЁ. ЏаЁ а §¬ҐйҐЁЁ ўгваЁ ЁбЇ®«пҐ¬®Ј® ¬®¤г«п,
Ёе §лў в «®Є «мл¬Ё бҐаўҐа ¬Ё. ЏаЁ а §¬ҐйҐЁЁ г¤ «Ґ®©
¬ иЁҐ Ёе §лў ов а бЇаҐ¤Ґ«Ґл¬Ё ®ЎкҐЄв ¬Ё.
‚§ Ё¬®бўп§м га®ўҐ© ЇаҐ¤бв ў«Ґ Ё¦Ґ:
ЪДДДДДДДДДДДДДДДДДДДДДДДДДї
і‚Ё§г «м®Ґ । ЄвЁа®ў ЁҐі
АДДДДДДДДДДДДДВДДДДДДДДДДДЩ
ЪДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДї
ЪДДДДБДДДДДї ЪДДДДБДДДДї ЪДДДДБДДДДї
і‘ўп§лў ЁҐі іDrag&Dropі і‚Ґ¤аҐЁҐі
АДДДДВДДДДДЩ АДДДДВДДДДЩ АДДДДВДДДДЩ
АДДДДДї і ЪДДДДЩ
ЪДДБДДДДДДДДДБДДДДДДДДДБї
і Uniform Data Transfer і
АДДДДДДДДДДДДВДДДДДДДДДДЩ
ЪДДДДДДДДДДДДДДБДДДДДДДДДДДДї
і‘вагЄвгаЁа®ў лҐ еа Ё«Ёй і
АДДДДДДДДДДДДДДВДДДДДДДДДДДДЩ
ЪДДДДДДДДДДДДБДДДДДДДДДДї
іComponent Object Model і
АДДДДДДДДДДДДДДДДДДДДДДДЩ
6) ЏҐабЇҐЄвЁўл OLE
- OLE Ё§ б।бвў ®Ў¬Ґ ¤ л¬Ё ЇаҐўа вЁ«®бм ў б।бвў®
ў§ Ё¬®¤Ґ©бвўЁп ЇаЁ«®¦ҐЁ© Ё еа ҐЁп ¤ ле;
- ‚ Windows 95 OLE - нв® п¤а® ®ЎкҐЄв®-®аЁҐвЁа®ў ®Ј®
Ї®«м§®ў ⥫мбЄ®Ј® ЁвҐа䥩б ;
- ‚ Windows NT OLE, ®б®ў п RPC, Ўг¤Ґв бҐвҐў®©
вҐе®«®ЈЁҐ© OLE 3.0, Ї®§ў®«по饩 Є«ЁҐвг Ё бҐаўҐаг 室Ёвмбп
а §ле дЁ§ЁзҐбЄЁе ¬ иЁ е.
7) ЌҐ¤®бв вЄЁ OLE
- з१ўлз ©® б«®¦ п вҐе®«®ЈЁп ¤«п а §а Ў®взЁЄ®ў;
- ҐЄ®в®а п Ґб®Ј« б®ў ®бвм ў ЁвҐа䥩б е а §ле
ЇаЁ«®¦ҐЁ©;
- ҐЄ®в®а®Ґ а б宦¤ҐЁҐ ў Ї®пвЁпе "®ЎкҐЄв " ў OLE Ё ЋЋЏ;
- Ґ блв®бвм ў ®в®иҐЁЁ ЇЇ а вле аҐбгаб®ў;
- ва㤮бвЁ ЇҐаҐў®¤ бҐвҐўго вҐе®«®ЈЁо, бўп§ лҐ б
Ё§ з «м®© ®аЁҐвЁа®ў ®бвмо Їа®в®Є®« UTD ®¤Ё®зго ¬ иЁг,
Ё б®бв®пйЁҐ ў Ў®«миЁе ®ЎкҐ¬ е ЇҐаҐ¤ ў Ґ¬ле ¤ ле.
я1’Ґе®«®ЈЁп Їа®ҐЄвЁа®ў Ёп OLE-Є®вҐ©Ґа
Љ Є 㦥 Ўл«® бЄ § ®, а §а Ў®вЄ ЇаЁ«®¦ҐЁп, Ї®¤¤Ґа¦Ёў о饣®
Їа®в®Є®« OLE, пў«пҐвбп з१ўлз ©® б«®¦®© § ¤ 祩. ‘«®¦®бвм
Ї®ўли Ґвбп, Ґб«Ё ®вбгвбвўгов ўпвлҐ ®ЇЁб Ёп нв®Ј® Їа®в®Є®« .
„«п в®Ј®, зв®Ўл Ё¬Ґвм ЇаҐ¤бв ў«ҐЁҐ ® е а ЄвҐаҐ § ¤ з,
ў®§ЁЄ ойЁе ЇаЁ ᮧ¤ ЁЁ OLE-ЇаЁ«®¦ҐЁп, а бᬮваЁ¬ нв Їл ҐЈ®
ᮧ¤ Ёп ЇаЁ¬ҐаҐ ᮧ¤ Ёп OLE-Є®вҐ©Ґа ў Delphi. Delphi б
ҐЈ® б।бвў ¬Ё ўЁ§г «м®Ј® Їа®ҐЄвЁа®ў Ёп Ё Ў®а®¬ Ј®в®ўле
Є®¬Ї®Ґв®ў ¤ Ґв ў®§¬®¦®бвм е®вп Ўл ®Ў®§аҐвм нв Їл ᮧ¤ Ёп
OLE-ЇаЁ«®¦ҐЁп.
1. ’аҐега®ўҐў п ¤аҐб жЁп OLE-®ЎкҐЄв
‚бЇ®¬Ё¬ ваҐега®ўҐўго ¤аҐб жЁо ¤ ле ў Їа®в®Є®«Ґ DDE. ‚
OLE в Є¦Ґ Ї®¤¤Ґа¦Ёў Ґвбп ваҐега®ўҐў п ¤аҐб жЁп ®ЎкҐЄв®ў
б«Ґ¤го饣® ўЁ¤ :
1. Љ« бб OLE-®ЎкҐЄв ®ЇаҐ¤Ґ«пҐв ЇаЁ«®¦ҐЁҐ-бҐаўҐа, Є®в®а®Ґ
ᮧ¤ «® OLE-®ЎкҐЄв. Љ« бб ¤®«¦Ґ Ўлвм ®ЇаҐ¤Ґ«Ґ Є Є ¤«п
бўп§ ®Ј®, в Є Ё ¤«п ўбв஥®Ј® ®ЎкҐЄв .
2. „®Єг¬Ґв OLE-®ЎкҐЄв ®ЇаҐ¤Ґ«пҐв д ©«-Ёбв®зЁЄ, Є®в®ал©
ᮤҐа¦Ёв ¤ лҐ ¤«п ®ЎкҐЄв . „®Єг¬Ґв ¤®«¦Ґ Ўлвм ®ЇаҐ¤Ґ«Ґ
®Ўп§ вҐ«м® в®«мЄ® ¤«п бўп§ ®Ј® ®ЎкҐЄв .
3. ќ«Ґ¬Ґв (item) OLE-®ЎкҐЄв ®ЇаҐ¤Ґ«пҐв, Є Є п з бвм
OLE-¤®Єг¬Ґв ᮤҐа¦Ёв ¤ лҐ ¤«п бўп§лў Ёп Ё«Ё ўбва Ёў Ёп.
ќ«Ґ¬Ґв ЁбЇ®«м§гҐвбп Ґб«Ё Ґ®Ўе®¤Ё¬® ЁбЇ®«м§®ў вм ¬Ґмиго з бвм
¤ ле, 祬 жҐ«л© д ©« ¤®Єг¬Ґв .
2. ЋЎй п е а ЄвҐаЁбвЁЄ вҐе®«®ЈЁЁ ᮧ¤ Ёп OLE-Є«ЁҐв
‘гвм ᮧ¤ Ёп ЇаЁ«®¦ҐЁп OLE-Є«ЁҐв б®бв®Ёв ў ¤®Ў ў«ҐЁЁ ў
д®а¬г - Ј« ў®Ґ ®Є® ЇаЁ«®¦ҐЁп, бЇҐжЁ «м®Ј® ҐўЁ§г «м®Ј®
Є®¬Ї®Ґв TOLEContainer, ЎҐаг饣® бҐЎп ўбҐ дгЄжЁЁ Ї®
§ Јаг§ЄҐ Ё б®еа ҐЁо ®ЎкҐЄв®ў, в Є¦Ґ Ї®¤¤Ґа¦Ёў о饣®
ўгв२Ґ Їа®в®Є®«л OLE, Є®в®алҐ ЁЈ¤Ґ Ґ ¤®Єг¬ҐвЁа®ў л, Ё
Ї®н⮬г б«®¦л ¤«п Ё§г票п. €¬Ґ® Ї®н⮬г и а ббЄ § ЈаҐиЁв
⥤ҐжЁҐ© Є ®ЇЁб ⥫쮬г га®ўо а бᬮв२п OLE.
Ља вЄ® Ё¤Ґп ўлЈ«п¤Ёв б«Ґ¤гойЁ¬ ®Ўа §®¬. Џ®бв஥ЁҐ OLE
ЇаЁ«®¦ҐЁп-Є«ЁҐв бўп§ ® б Ї®¬ҐйҐЁҐ¬ Є®¬Ї®Ґв OleContainer
д®а¬г. Џ®¬ҐйҐЁҐ ®ў®Ј® ®ЎкҐЄв бўп§ ® б ўл§®ў®¬ ¬Ґв®¤
InsertObjectDialog, бзЁвлў ЁҐ ®ЎкҐЄв Ё§ Clipboard - б ўл§®ў®¬
¬Ґв®¤ PasteSpecialDialog.
ЌҐ«м§п Їа®бв® ўбв ўЁвм «оЎ®© д ©« ў Є®вҐ©Ґа. ‚бв ўЁвм
¬®¦® в®«мЄ® д ©«, Є®в®ал© бўп§лў Ґвбп бЁб⥬®© б бҐаўҐа®¬ OLE.
ЏаЁ Ёбв ««пжЁЁ ЇаЁ«®¦ҐЁҐ, ®Ў« ¤ о饥 ў®§¬®¦®бвп¬Ё бҐаўҐа
ॣЁбваЁагҐвбп ў ђҐҐбвॠбЁб⥬л.
„Ґ©бвўЁп, Є®в®алҐ ¬®Јгв ўлЇ®«Ґл б ®ЎкҐЄв®¬ OLE,
®ЇЁблў овбп ў ђҐҐбвॠў а §¤Ґ«Ґ VERB. Ќ ЇаЁ¬Ґа, ¤«п ®ЎкҐЄв
mplayer в ЄЁ¬Ё ¤Ґ©бвўп¬Ё пў«повбп: Edit, Play, Open.
ќвЁ ¤Ґ©бвўЁп еа пвбп ў бў®©б⢥ ObjectVerbs Є®вҐ©Ґа .
€в Є, нв®в Є®¬Ї®Ґв Ї®¬Ґй Ґвбп ў д®а¬г. „«п § Јаг§ЄЁ
Є®¬Ї®Ґв ®ЎкҐЄв®¬ бгйҐбвўгов бЇҐжЁ «млҐ дгЄжЁЁ, ўл§®ў Є®в®але
б®Їа®ў®¦¤ Ґвбп ®вЄалвЁҐ¬ ᮮ⢥вбвўго饣® ¤Ё «®Ј®ў®Ј® ®Є .
ќвЁ дгЄжЁЁ аҐи ов б«Ґ¤гойЁҐ § ¤ зЁ Ї® § Јаг§ЄҐ:
- ᮧ¤ ЁҐ ®ў®Ј® ®ЎкҐЄв ;
- з⥨Ґ ®ЎкҐЄв Ё§ Clipboard;
- ЇҐаҐв бЄЁў ЁҐ ®ЎкҐЄв Ё§ бҐаўҐа .
‡ Јаг§Є Є®¬Ї®Ґв б Ї®¬®ймо ®¤®Ј® Ё§ ЇҐаҐзЁб«Ґле
ў аЁ в®ў б®Їа®ў®¦¤ Ґвбп гбв ®ўЄ®© в ЄЁе бў®©бвў Є®¬Ї®Ґв Є Є
Љ« бб, „®Єг¬Ґв Ё ќ«Ґ¬Ґв.
‘гйҐбвўгҐв ¤ў ў аЁ в бва®©ЄЁ бў®©бвў Є®¬Ї®Ґв -
нв ЇҐ Їа®ҐЄвЁа®ў Ёп ЇаЁ«®¦ҐЁп Ё нв ЇҐ ўлЇ®«ҐЁп.
Ќ нв ЇҐ Їа®ҐЄвЁа®ў Ёп, 室пбм ў б।Ґ а §а Ў®вЄЁ Delphi,
ЄвЁўЁ§ жЁп бў®©бвў Љ« бб, „®Єг¬Ґв Ё ќ«Ґ¬Ґв ЇаЁў®¤Ёв Є ®вЄалвЁо
¤Ё «®Ј®ўле ®Є®, ў Є®в®але ЇаҐ¤« Ј Ґвбп ўлЎа вм вЁЇ OLE-®ЎкҐЄв -
®ўл© Ё«Ё бгйҐбвўгойЁ©, в Є¦Ґ Є« бб, ¤®Єг¬Ґв Ё н«Ґ¬Ґв.
Ќ нв ЇҐ ўлЇ®«ҐЁп ЇаЁ«®¦ҐЁп Ї®¤е®¤пйЁҐ дгЄжЁЁ ўл§лў овбп
Їг⥬ ЄвЁўЁ§ жЁЁ ᮮ⢥вбвўгойЁе ЇгЄв®ў ¬Ґо.
ЏаЁ ўлЎ®аҐ ЋЉ ў ᮮ⢥вбвўго饬 ¤Ё «®Ј®ў®¬ ®ЄҐ ўл§лў Ґвбп
ЇаЁ«®¦ҐЁҐ-бҐаўҐа, ў Є®в®а®¬ ᮧ¤ Ґвбп ®ўл© ®ЎкҐЄв, Ё«Ё Є®в®а®¬г
ЇҐаҐ¤ Ґвбп бгйҐбвўгойЁ© ¤®Єг¬Ґв-Ёбв®зЁЄ, ў § ўЁбЁ¬®бвЁ ®в
ўлЎа ле ®ЇжЁ© ў ¤Ё «®Ј®ў®¬ ®ЄҐ. Џ®б«Ґ । ЄвЁа®ў Ёп ®ЎкҐЄв
¬®¦® ўл©вЁ Ё§ бҐаўҐа , ў Є®¬Ї®ҐвҐ-Є®вҐ©ҐаҐ
ЇаЁ«®¦ҐЁп-Є«ЁҐв ®Є ¦Ґвбп б®еа Ґл¬ ®в। ЄвЁа®ў л© ®ЎкҐЄв.
я23. ЊҐв®¤ЁЄ ᮧ¤ Ёп ЇаЁ«®¦ҐЁп б OLE-Є®вҐ©Ґа®¬
ЊҐв®¤ЁЄ ᮧ¤ Ёп ЇаЁ«®¦ҐЁп б OLE-Є®вҐ©Ґа®¬ ўЄ«оз Ґв ў
ᥡп б«Ґ¤гойЁҐ нв Їл.
1. ‘®§¤ ЁҐ д®а¬л б MDI - ¬®Ј®¤®Єг¬Ґвл¬ ЁвҐа䥩ᮬ.
2. ђ §а Ў®вЄ Їа®жҐ¤гал ўбв ўЄЁ ®ЎкҐЄв®ў.
3. ђ §а Ў®вЄ Їа®жҐ¤гал ЇҐаҐ®б ®ЎкҐЄв®ў Ё§ Clipboard.
4. ђ §а Ў®вЄ Їа®жҐ¤гал ЇҐаҐв бЄЁў Ёп ®ЎкҐЄв®ў.
5. ђ §а Ў®вЄ Їа®жҐ¤га Ї®¤¤Ґа¦ЄЁ еа ҐЁп ®ЎкҐЄв®ў ў д ©« е.
я11. ‘®§¤ ЁҐ д®а¬л б MDI - ¬®Ј®¤®Єг¬Ґвл¬ ЁвҐа䥩ᮬ
Њ®Ј®¤®Єг¬Ґвл© ЁвҐа䥩б - нв® б।бвў®, Ї®§ў®«по饥 ў
ЇаЁ«®¦ҐЁЁ ®вЄалў вм ¬®Ј® ¤®Єг¬Ґв®ў-д ©«®ў, Є ¦¤л© б бў®Ґ¬
®ЄҐ. ЋЄ , Є®в®алҐ ¤®Ў ў«повбп ў ЇаЁ«®¦ҐЁҐ ЇаЁ ®вЄалвЁЁ Є ¦¤®Ј®
¤®Єг¬Ґв , §лў овбп ¤®зҐаЁ¬Ё.
‘®§¤ ЁҐ MDI-ЇаЁ«®¦ҐЁп - Їа®бв п § ¤ з ¤«п Delphi.
„®бв в®з® бў®©бвўг FormStyle Ј« ў®Ј® ®Є ЇаЁ«®¦ҐЁп ЇаЁ¤ вм
§ 票Ґ fsMDIForm, § ⥬ ¤®Ў ўЁвм ®ўго д®а¬г ў ЇаЁ«®¦ҐЁҐ,
бў®©бвўг FormStyle Є®в®а®© ЇаЁ¤ вм § 票Ґ fsMDIChild.
‚ ¤®зҐаоо д®а¬г Ґ®Ўе®¤Ё¬® ¤®Ў ўЁвм Є®¬Ї®Ґв TOleConteiner.
„ ¤Ё¬ б«Ґ¤гойЁҐ Ё¬Ґ ўўҐ¤Ґл¬ ®ЎкҐЄв ¬:
- Ј« ў®© д®а¬Ґ - OLEFrameForm : TOLEFrameForm;
- ¤®зҐаҐ© д®а¬Ґ - OLEObjectForm : TOLEObjectForm;
- OLE-Є®вҐ©Ґаг - OleContainer : TOLEContainer.
ђ §а Ў®вЄ ¬Ґо ЇаЁ«®¦ҐЁп
ЋЎкҐЄв®-®аЁҐвЁа®ў ®Ґ ЇаЁ«®¦ҐЁҐ, зЁ п б Turbo Vision
DOS, а Ў®в Ґв б«Ґ¤гойЁ¬ ®Ўа §®¬. ‘®§¤ Ґвбп ¬Ґо ЇаЁ«®¦ҐЁп, Є
Ї®§ЁжЁп¬ Є®в®а®Ј® "ЇаЁўп§лў овбп" Їа®жҐ¤гал. ЏаЁ ўлЎ®аҐ
Ґ®Ўе®¤Ё¬®© Ї®§ЁжЁЁ ¬Ґо ўл§лў Ґвбп ᮮ⢥вбвўгой п Їа®жҐ¤га .
‚ 襬 б«гз Ґ ¬Ґо ЇаЁ«®¦ҐЁп ¬®¦Ґв Ї®¤ўҐаЈгвмбп
ва бд®а¬ жЁЁ Їг⥬ ¤Ё ¬ЁзҐбЄ®Ј® ¤®Ў ў«ҐЁп ў ҐЈ® Ї®§ЁжЁ©.
‚®-ЇҐаўле, ®® ва бд®а¬ЁагҐвбп ЇаЁ ®вЄалвЁЁ ¤®зҐаҐЈ® ®Є .
‚®-ўв®але, ®® ва бд®а¬ЁагҐвбп ЇаЁ ЄвЁўЁ§ жЁЁ бҐаўҐа ,
Ї®¤¤Ґа¦Ёў о饣® OLE 2.0.
Џ®§ЁжЁЁ, ў Є®в®алҐ ўҐ¤аповбп ®ўлҐ н«Ґ¬Ґвл ¬Ґо ¤®зҐаЁе
®Є® Ё бҐаўҐа , ®ЇаҐ¤Ґ«повбп бў®©бвў®¬ ¬Ґо GroupIndex. ќ«Ґ¬Ґвл
бв а®Ј® ¬Ґо ¬®Јгв Ўлвм "§ вҐавл", ¬®Јгв Ўлвм б¤ўЁгвл. …б«Ё
ЈагЇЇ®ўлҐ Ё¤ҐЄбл б®ўЇ ¤ ов, в® н«Ґ¬Ґвл ¬Ґо бҐаўҐа § ¬Ґй ов
ᮮ⢥вбвўгойЁҐ н«Ґ¬Ґвл ¬Ґо Є®вҐ©Ґа . ќ«Ґ¬Ґвл ¬Ґо б
Ў®«миЁ¬Ё Ё¤ҐЄб ¬Ё а §¬Ґй овбп Їа ўҐҐ ў бва®ЄҐ ¬Ґо.
ЊҐо Ј« ў®Ј® ®Є : File
New
Open
c GroupIndex = 0.
ЊҐо ¤®зҐаЁе ®Є®: File Edit Object
New Insert Deactivate
Open Paste
Save
б GroupIndex = 0, 1, 2 ᮮ⢥вб⢥®.
ђҐ ЄжЁп ўлЎ®а н«Ґ¬Ґв ¬Ґо File|New ®ЇЁблў Ґвбп
б«Ґ¤гойЁ¬Ё ¬Ґв®¤ ¬Ё:
function TOLEFrameForm.CreateChild: TOLEObjectForm;
begin
CreateChild := TOLEObjectForm.Create(Self);
end;
procedure TOLEFrameForm.New1Click(Sender: TObject);
begin
CreateChild
end;
ђҐ ЄжЁЁ ўлЎ®а ¤агЈЁе н«Ґ¬Ґв®ў ¬Ґо - Ё¦Ґ.
я12. ђ §а Ў®вЄ Їа®жҐ¤гал ўбв ўЄЁ ®ЎкҐЄв®ў
‚бв ўЁвм ®ЎкҐЄв ¬®¦®, ўлЎа ў ЇгЄв ¬Ґо Edit|Insert. ‚
Є зҐб⢥ ॠЄжЁЁ ўлЎ®а ᮧ¤ ¤Ё¬ б«Ґ¤гойго Їа®жҐ¤гаг:
procedure TOLEObjectForm.InsertObject1Click(Sender: TObject);
var
Info: Pointer;
begin
if InsertOLEObjectDlg(OLEFrameForm, 0, Info) then
InitializeOLEObject(Info);
end;
ЏаЁ ўл§®ўҐ нв®© Їа®жҐ¤гал ўлЇ®«пҐвбп бЇҐжЁ «м п ¤Ё «®Ј®ў п
дгЄжЁп:
function InsertOLEObjectDlg(Form:TForm;HelpContext:THelpContext;
Var PInitInfo:Pointer).
ќв дгЄжЁп ®вЄалў Ґв бЇҐжЁ «м®Ґ ¤Ё «®Ј®ў®Ґ ®Є®,
Ї®§ў®«по饥 ўлЎа вм вЁЇ OLE-®ЎкҐЄв ¤«п ўбв ўЄЁ, ЇаЁ¬Ґа, Audio
Recorder, Bitmap Image, Video Clip, Wave Sound Ё в.¤.
‘ ¬®Ґ ў ¦®Ґ - нв® в®, зв® ў б«гз Ґ ўлЎ®а вЁЇ ®ЎкҐЄв ,
дгЄжЁп ᮧ¤ Ґв бвагЄвгаг ¤ ле ¤«п ЁЁжЁ «Ё§ жЁЁ OLE-Є®вҐ©Ґа
Ё ў®§ўа й Ґв гЄ § ⥫м нвг бвагЄвгаг ў ЇҐаҐ¬Ґ®© Info. ќв
бвагЄвга Ґ ¤®Єг¬ҐвЁа®ў .
€ЁжЁ «Ё§ жЁп OLE-Є®вҐ©Ґа Їа®Ёб室Ёв, Є®Ј¤ гЄ § ⥫м
®ЇЁб го бвагЄвгаг ЇҐаҐ¤ Ґвбп бў®©бвўг PInitInfo Є®¬Ї®Ґв
OLE-Є®вҐ©Ґа .
‚ 襬 ЇаЁ¬ҐаҐ нв® Їа®Ёбў®¤Ёвбп б Ї®¬®ймо Їа®жҐ¤гал
IntializeOLEObject, Є®в®а п Ё¬ҐҐв б«Ґ¤го饥 ®ЇЁб ЁҐ:
procedure TOLEObjectForm.InitializeOLEObject(Info: Pointer);
begin
OLEContainer.PInitInfo := Info;
ReleaseOLEInitInfo(Info) {®бў®Ў®¦¤ҐЁҐ Ї ¬пвЁ}
end;
ЏаЁ ЁЁжЁ «Ё§ жЁЁ гбв ў«Ёў овбп бў®©бвў Є®¬Ї®Ґв
OLE-Є®вҐ©Ґа ObjClass, ObjDoc, ObjItem ў ᮮ⢥вбвўЁҐ б
б®бв®пЁҐ¬ ¤Ё «®Ј®ў®Ј® ®Є ўбв ўЄЁ ®ЎкҐЄв .
ЏаЁ ЁЁжЁ «Ё§ жЁЁ OLE-Є®вҐ©Ґа ЄвЁўЁ§ЁагҐвбп OLE-бҐаўҐа Ё
ЎҐаҐв ᥡп гЇа ў«ҐЁҐ, Ґб«Ё ®ЎкҐв 㦥 бгйҐбвў®ў «, в® ®
ЇҐаҐ¤ Ґвбп ў бҐаўҐа. Џ®«м§®ў ⥫м ⥯Ґам ¬®¦Ґв । ЄвЁа®ў вм
®ЎкҐЄв Є Є е®зҐв.
Џ®б«Ґ § ўҐа襨п а Ў®вл б ®ЎкҐЄв®¬, ҐЈ® Ґ®Ўе®¤Ё¬®
¤Ґ ЄвЁўЁа®ў вм. „Ґ ЄвЁўЁ§ жЁп Їа®Ё§ў®¤Ёвбп б¤ўЁЈ®¬ д®Єгб Є
¤агЈЁ¬ ®ЎкҐЄв ¬ ЇаЁ«®¦ҐЁп. ‚ ®ЎйҐ¬ б«гз Ґ ¤«п ¤Ґ ЄвЁў жЁЁ
®ЎкҐЄв , Ґ®Ўе®¤Ё¬® гбв ®ўЁвм бў®©бвў® Active OLE-Є®вҐ©Ґа ў
б®бв®пЁҐ False. ‚ ЇаЁ¬ҐаҐ нв® ¤Ґ« Ґв б«Ґ¤гой п Їа®жҐ¤га ,
ўл§лў Ґ¬ п Ё§ ¬Ґо Object|Deactivate:
procedure TOLEObjectForm.Deactivate1Click(Sender: TObject);
begin
OLEContainer.Active := False
end;
я13. ђ §а Ў®вЄ Їа®жҐ¤гал ЇҐаҐ®б ®ЎкҐЄв®ў Ё§ Clipboard
ЌҐЄ®в®алҐ OLE-бҐаўҐал Ї®§ў®«пов Ї®«м§®ў вҐ«о Є®ЇЁа®ў вм
OLE-®ЎкҐЄвл ў Clipboard. ’®Ј¤ ЇаЁ«®¦ҐЁҐ OLE-Є®вҐ©Ґа Ё¬ҐҐв
ў®§¬®¦®бвм Ї®«гзЁвм Ё§ Clipboard- нв®в ®ЎкҐЄв.
„«п нв®Ј® Ґ®Ўе®¤Ё¬® ЁбЇ®«м§®ў вм бЇҐжЁ «мго дгЄжЁо,
®вЄалў ойго ЇаЁ ўл§®ўҐ бЇҐжЁ «м®Ґ ¤Ё «®Ј®ў®Ґ ®Є® ўбв ўЄЁ
®ЎкҐЄв®ў Ё Ё¬Ґойго б«Ґ¤го饥 ®ЇЁб ЁҐ:
Function PasteSpecialDlg(Form : TForm;
Const Fmt : Array of BOLEFormat;
HelpContext : THelpContext;
Var Format : Word;
Var Handle : THandle;
Var PInitInfo : Pinter) : Boolean;
Ј¤Ґ Form - д®а¬ , ў« ¤Ґой п OLE-Є®вҐ©Ґа®¬;
Fmt - ¬ ббЁў § ॣЁбваЁа®ў ле д®а¬ в®ў ®ЎкҐЄв®ў;
HelpContext - ббл«Є а §¤Ґ« Є®вҐЄбв®© Ї®¬®йЁ;
Format - ўлЎа л© вЁЇ д®а¬ в ¤ ле ў Clipboard;
Handle - ббл«Є ¤ лҐ ў Clipboard-Ґ;
PInitInfo - гЄ § ⥫м бвагЄвгаг ¤ ле ¤«п ЁЁжЁ «Ё§ жЁЁ
OLE-Є®вҐ©Ґа .
ђ бᬮваЁ¬ Ў®«ҐҐ Ї®¤а®Ў® ¬ ббЁў § ॣЁбваЁа®ў ле д®а¬ в®ў
OLE-®ЎкҐЄв®ў.
ђ §¬Ґа®бвм нв®Ј® ¬ ббЁў ®ЇаҐ¤Ґ«пҐвбп Є®«ЁзҐбвў®¬ д®а¬ в®ў
Clipboard- , Є®в®алҐ ¤®«¦л ў®бЇаЁЁ¬ вмбп OLE-Є®вҐ©Ґа®¬. ‚
襬 б«гз Ґ ¬л Ї« Ёа㥬, зв®Ўл Є®вҐ©Ґа ў®бЇаЁЁ¬ « ¤ў
д®а¬ в - бўп§ лҐ ®ЎкҐЄвл Ё ўбва®ҐлҐ ®ЎкҐЄвл, Ї®н⮬㠬 ббЁў
д®а¬ в®ў, ЇҐаҐ¤ ў Ґ¬л© дгЄжЁЁ PasteSpecialDlg, ¬®¦Ґв Ё¬Ґвм
б«Ґ¤гойЁ© ўЁ¤:
Fmts : Array[0..1] Of BOLEFormat.
’ЁЇ BOLEFormat Ё¬ҐҐв б«Ґ¤гойго бвагЄвгаг:
Type
BOLEFormat = Record
fmtId : Word; {Ё¤ҐвЁдЁЄ в®а д®а¬ в }
fmtName : Array[0..31] Of Char; {Ё¬п вЁЇ ®ЎкҐЄв ,
Є®в®а®Ґ д®а¬ЁагҐв бҐаўҐа, ЇаЁ¬Ґа, 'Paintbrush Picture Object' Ё
Є®в®а®Ґ Ї®пў«пҐвбп ў бЇЁбЄҐ ў®§¬®¦ле вЁЇ®ў ®ЎкҐЄв®ў ў ¤Ё «®Ј®ў®¬
®ЄҐ}
fmtResultName : Array[0..31] Of Char; {१г«мвЁаго饥 Ё¬п
вЁЇ ®ЎкҐЄв , Ї®пў«по饥бп ў Ї®«Ґ १г«мвЁаго饣® Ё¬ҐЁ ў
¤Ё «®Ј®ў®¬ ®ЄҐ}
fmtIsLinkable : Boolean; {true - ¤«п бўп§ ®Ј® ®ЎкҐЄв ;
false - ¤«п ўбв஥®Ј®}
fmtMedium : BOLEMeduium; {зЁб«Ґ п Є®бв в ¤«п
®ЇаҐ¤Ґ«ҐЁп вЁЇ ¤ ле ®ЎкҐЄв , ¬.Ў. BOLE_MED_STREAM - ¤«п
бўп§ ®Ј® ®ЎкҐЄв Ё«Ё BOLE_MED_STORAGE - ¤«п ўбв஥®Ј®
®ЎкҐЄв . „«п ўлзЁб«ҐЁп ЁбЇ®«м§гҐвбп дгЄжЁп BOLEMediumCalc}
End {BOLEFormat};
ќвЁ д®а¬ вл ¤®«¦л Ўлвм § ॣЁбваЁа®ў л ў Clipboard-Ґ.
ђҐЈЁбва жЁп д®а¬ в®ў б®бв®Ёв ў ўл§®ўҐ бЇҐжЁ «м®© дгЄжЁЁ,
Є®в®а®© ЇҐаҐ¤ Ґвбп бва®Є б §ў ЁҐ¬ д®а¬ в , ў®§ўа й Ґвбп
Ё¤ҐвЁдЁЄ в®а § ॣЁбваЁа®ў ®Ј® д®а¬ в . ЏаЁ¬Ґал ўл§®ў дгЄжЁЁ
ॣЁбва жЁЁ ЇаҐ¤бв ў«Ґ Ё¦Ґ:
FLinkClipFmt := RegisterClipboardFormat('Link Source');
FEmbedClipFmt := RegisterClipboardFormat('Embedded Object');
Ј¤Ґ FLinkClipFmt Ё FEmbedClipFmt - ЇҐаҐ¬ҐлҐ вЁЇ Word, ў
Є®в®алҐ ў®§ўа й овбп Ё¤ҐвЁдЁЄ в®ал д®а¬ в®ў Ї®б«Ґ
ॣЁбва жЁЁ.
Џ®б«Ґ ॣЁбва жЁЁ Ґ®Ўе®¤Ё¬® § Ї®«Ёвм ¬ ббЁў д®а¬ в®ў.
ђҐЈЁбва жЁп д®а¬ в®ў Ё § Ї®«ҐЁҐ ¬ ббЁў д®а¬ в®ў ¤®«¦л
Ўлвм Їа®Ё§ўҐ¤Ґл з «м®¬ нв ЇҐ а Ў®вл ЇаЁ«®¦ҐЁп-Є®вҐ©Ґа .
Џ®н⮬г нвЁ ¤Ґ©бвўЁп ¬®Јгв Ўлвм Ї®¬ҐйҐл ў Їа®жҐ¤гаг, ўл§лў Ґ¬го
ЇаЁ ᮧ¤ ЁЁ Ј« ў®© д®а¬л, ЇаЁ¬Ґа:
procedure TOLEFrameForm.FormCreate(Sender:TObject)
begin
FLinkClipFmt := RegisterClipboardFormat('Link Source');
FEmbedClipFmt := RegisterClipboardFormat('Embedded Object');
Fmts[0].fmtId := FEmbedClipFmt;
Fmts[0].fmtMedium := BOLEMediumCalc(FEmbedClipFmt);
Fmts[0].fmtIsLinkable := False;
StrPCopy(Fmts[0].fmtName,'%s');
StrPCopy(Fmts[0].fmtResultName,'%s');
Fmts[0].fmtId := FLinkClipFmt;
Fmts[0].fmtMedium := BOLEMediumCalc(FLinkClipFmt);
Fmts[0].fmtIsLinkable := True;
StrPCopy(Fmts[0].fmtName,'%s');
StrPCopy(Fmts[0].fmtResultName,'%s');
end;
Џ®б«Ґ ॣЁбва жЁЁ д®а¬ в®ў Ё § Ї®«ҐЁп ¬ ббЁў , ®ЇЁблў ойҐ-
Ј® д®а¬ вл, ў®§¬®¦® ®бгйҐбвў«ҐЁҐ ўбв ўЄЁ ®ЎкҐЄв Ё§ Clipboard.
„«п нв®Ј® Ё§ ЇгЄв ¬Ґо Edit|Paste ¬®¦® ўл§лў вм б«Ґ¤гойго Їа®-
楤гаг:
procedure TOLEObjectForm.PasteSpecial1Click(Sender: TObject);
var
ClipFmt : Word;
DataHand : THandle;
Info : Pointer;
begin
if PasteSpecialEnabled(Self, OLEFrameForm.Fmts) then begin
if PasteSpecialDlg(Self, OLEFrameForm.Fmts, 0,
ClipFmt, DataHand, Info) then begin
InitializeOLEObject(Info);
end;
end;
end;
‡¤Ґбм дгЄжЁп PasteSpecialEnabled б з « Їа®ўҐапҐв, Ґбвм «Ё
ў Clipboard-Ґ ®¤Ё Ё§ д®а¬ в®ў, ®ЇаҐ¤Ґ«Ґле ў Fmts - ¬ ббЁўҐ, Ё
в®«мЄ® ў б«гз Ґ «ЁзЁп в Є®Ј® д®а¬ в , ўл§лў Ґвбп дгЄжЁп Pas-
teSpecialDlg, Є®в®а п в Є¦Ґ ў®§ўа й Ґв гЄ § ⥫м бвагЄвгаг
¤ ле ¤«п ЁЁжЁ «Ё§ жЁЁ OLE-Є®вҐ©Ґа .
я14. ђ §а Ў®вЄ Їа®жҐ¤гал ЇҐаҐв бЄЁў Ёп ®ЎкҐЄв®ў
ЏҐаҐв бЄЁў ЁҐ OLE-®ЎкҐЄв Ё§ бҐаўҐа Ё ®ЇгбЄ ЁҐ ҐЈ® ў
OLE-Є®вҐ©Ґа - нв® ЁЎ®«ҐҐ бўп§ вм Ё«Ё ўбва®Ёвм ®ЎкҐЄв. ‚ н⮬
б«гз Ґ Ґв Ґ®Ўе®¤Ё¬®бвЁ ўл§лў вм бЇҐжЁ «млҐ ¤Ё «®Ј®ўлҐ дгЄжЁЁ
ᮧ¤ Ёп ®ў®Ј® ®ЎкҐЄв Ё«Ё звҐЁп ®ЎкҐЄв Ё§ Clipboard- .
—в®Ўл д®а¬ Ё¬Ґ« ў®§¬®¦®бвм ЇаЁпвм ЇҐаҐв бЄЁў Ґ¬л© Ё§
бҐаўҐа ®ЎкҐЄв, ® ¤®«¦ Ўлвм § ॣЁбваЁа®ў ў б।Ґ Є Є "¬Ё-
иҐм ¤«п ЇҐаҐв бЄЁў Ёп". ќв® ¤Ґ« Ґвбп ўл§®ў®¬ бЇҐжЁ «м®© дгЄ-
жЁЁ б«Ґ¤го饣® ўЁ¤ :
procedure RegisterFormAsOleDropTarget(Form : TForm;
Const Fmts : Array Of BOLEFormat);
ќв®в ўл§®ў 楫Ґб®®Ўа §® ўЄ«озЁвм ў Їа®жҐ¤гаг
TOLEFrameForm.FormCreate.
Љ®Ј¤ ®ЎкҐЄв ЇҐаҐв бЄЁў Ґвбп д®а¬г, Ё¬ҐҐв ¬Ґбв® б®ЎлвЁҐ
OnDragDrop. ”®а¬ ЇаЁ«®¦ҐЁп Ё¬ҐҐв ®Ўа Ў®взЁЄ нв®Ј® б®ЎлвЁп
FormDragDrop. Џа®жҐ¤га -®Ўа Ў®взЁЄ Ё¬ҐҐв Ї а ¬Ґва Source, ў
Є®в®а®¬ Ґ© ЇҐаҐ¤ Ґвбп ЇҐаҐв бЄЁў Ґ¬л© ®ЎкҐЄв Є Є б«Ґ¤ЁЄ Є« бб
TOLEDropNotify. ќв®в Є« бб Ё¬ҐҐв бў®©бвў® PInitInfo,
ᮮ⢥вбвўго饥 бў®©бвўг PInitInfo OLE-Є®вҐ©Ґа . Џ®н⮬㠤«п
ЁЁжЁ «Ё§ жЁЁ Є®вҐ©Ґа ЇаЁ ЇҐаҐв бЄЁў ЁЁ ¤®бв в®з® ЇаЁбў®Ёвм
Ї®«о Є®вҐ©Ґа PInitInfo § 票Ґ Ї®«п PInitInfo ЇҐаҐ¤ ў Ґ¬®Ј®
Ї а ¬Ґва Є Є б«Ґ¤ЁЄ TOLEDropNotify. ќв® ¤Ґ« Ґв б«Ґ¤гой п
Їа®жҐ¤га :
procedure TOLEFrameForm.FormDragDrop(Sender, Source: TObject;
X, Y: Integer);
var
NewChild : TOLEObjectForm;
begin
if Source is TOLEDropNotify then begin
NewChild := CreateChild;
with Source as TOLEDropNotify do begin
NewChild.OLEContainer.PInitInfo := PInitInfo;
end {with};
end;
end;
Ћбў®Ў®¦¤ вм Ї ¬пвм, ўл¤Ґ«Ґго Ї®¤ InitInfo, ў н⮬ б«гз Ґ
Ґв Ґ®Ўе®¤Ё¬®бвЁ, в.Є. Delphi ЎҐаҐв н⮠ᥡп.
я15. ђ §а Ў®вЄ Їа®жҐ¤га Ї®¤¤Ґа¦ЄЁ еа ҐЁп ®ЎкҐЄв®ў ў д ©« е
”гЄжЁЁ б®еа ҐЁп OLE-®ЎкҐЄв®ў ў д ©« е Ё ў®ббв ®ў«ҐЁп Ёе
Ё§ д ©«®ў Delphi в Є¦Ґ ЎҐаҐв ᥡп.
„«п б®еа ҐЁп OLE-®ЎкҐЄв ў д ©«Ґ Ґ®Ўе®¤Ё¬® ЁбЇ®«м§®ў вм
¬Ґв®¤ SaveToFile Є®¬Ї®Ґв OLE-Є®вҐ©Ґа . „«п гЄ § Ёп Ё¬ҐЁ
д ©« , ў Є®в®а®¬ 㦮 б®еа Ёвм ®ЎкҐЄв, ¬®¦®
ЁбЇ®«м§®ў вм Є®¬Ї®Ґв TSaveDialog, ®ЎҐбЇҐзЁў ойЁ© ®вЄалвЁҐ
бв ¤ ав®Ј® ¤Ё «®Ј®ў®Ј® ®Є б®еа ҐЁп д ©« .
Џа®жҐ¤га , ўл§лў Ґ¬ п Ё§ ЇгЄв ¬Ґо File|Save, ¬®¦Ґв
ўлЈ«п¤Ґвм б«Ґ¤гойЁ¬ ®Ўа §®¬:
procedure TOLEObjectForm.SaveAsClick(Sender: TObject);
begin
if SaveAsDialog.Execute then
OLEContainer.SaveToFile(SaveAsDialog.FileName);
end;
„«п § Јаг§ЄЁ OLE-®ЎкҐЄв Ё§ д ©« , Ґ®Ўе®¤Ё¬® ЁбЇ®«м§®ў вм
¬Ґв®¤ LoadFromFile Є®¬Ї®Ґв OLE-Є®вҐ©Ґа . „«п гЄ § Ёп Ё¬ҐЁ
д ©« , Ё§ Є®в®а®Ј® вॡгҐвбп § Јаг§Ёвм ®ЎкҐЄв, ¬®¦® ЁбЇ®«м§®ў вм
Є®¬Ї®Ґв TOpenDialog, ®ЎҐбЇҐзЁў ойЁ© ®вЄалвЁҐ бв ¤ ав®Ј®
¤Ё «®Ј®ў®Ј® ®Є ®вЄалвЁп д ©« .
Џа®жҐ¤га , ўл§лў Ґ¬ п Ё§ ЇгЄв ¬Ґо File|Open, ¬®¦Ґв
ўлЈ«п¤Ґвм б«Ґ¤гойЁ¬ ®Ўа §®¬:
procedure TOLEFrameForm.OpenClick(Sender: TObject);
Var
NewChild: TOLEObjectForm;
begin
if OpenDialog.Execute then begin
NewChild := CreateChild;
NewChild.OLEContainer.LoadFromFile(OpenDialog.FileName);
end;
end;
я2‚лў®¤л
1. Љ ¦¤л© OLE-®ЎкҐЄв ¤®«¦Ґ еа Ёвмбп ў б®Ўб⢥®¬
OLE-Є®вҐ©ҐаҐ. ЂЄвЁўЁ§ жЁп OLE-бҐаўҐа Їа®Ё§ў®¤Ёвбп ¤ў®©л¬
饫窮¬ «Ґў®© Є« ўЁиЁ ¬лиЁ, Є®Ј¤ Єгаб®а ¬лиЁ е®¤Ёвбп ў Ї«®й ¤Ё
Є®вҐ©Ґа .
„«п гЇа ў«ҐЁп Ї®§ЁжЁп¬Ё ¬Ґо бҐаўҐа Ё Є«ЁҐв , Ґ®Ўе®¤Ё¬®
Ї®«м§®ў вмбп § 票ﬨ бў®©бвў GroupIndex Є®¬Ї®Ґв®ў ¬Ґо.
2. ‚бв ўЄ ®ЎкҐЄв®ў Їа®Ё§ў®¤Ёвбп б Ї®¬®ймо бЇҐжЁ «м®©
¤Ё «®Ј®ў®© дгЄжЁЁ InsertOLEObjectDlg, ў®§ўа й о饩 Ёд®а¬ жЁо
¤«п ЁЁжЁ «Ё§ жЁЁ Є®вҐ©Ґа ¬Ґв®¤®¬ InitializeOLEObject.
3. „«п ®ЎҐбЇҐзҐЁп ў®§¬®¦®бвЁ з⥨п OLE-®ЎкҐЄв®ў Ё§
Clipboard- , Ґ®Ўе®¤Ё¬® § ॣЁбваЁа®ў вм д®а¬ вл OLE-®ЎкҐЄв®ў б
Ї®¬®ймо дгЄжЁЁ RegisterClipboardFormat, Ё бд®а¬Ёа®ў вм ¬ ббЁўл,
®ЇЁблў ойЁҐ нвЁ д®а¬ вл.
‡ ⥬ Ґ®Ўе®¤Ё¬® ЁбЇ®«м§®ў вм дгЄжЁо PasteSpecialDlg,
ў®§ўа й ойго Ёд®а¬ жЁо ¤«п ЁЁжЁ «Ё§ жЁЁ OLE-Є®вҐ©Ґа .
4. „«п ЇҐаҐв бЄЁў Ёп ®ЎкҐЄв®ў ¬Ґв®¤®¬ Drag&Drop, Ґ®Ўе®¤Ё¬®
д®а¬г § ॣЁбваЁа®ў вм Є Є ¬ЁиҐм ¤«п ЇҐаҐв бЄЁў Ёп б Ї®¬®ймо
¬Ґв®¤ RegisterFormAsOLEDropTarget.
‚ ®Ўа Ў®взЁЄҐ б®ЎлвЁ© OnDragDrop Ґ®Ўе®¤Ё¬® Ёбв®зЁЄ б®ЎлвЁп
а бб¬ ваЁў вм Є Є б«Ґ¤ЁЄ Є« бб TOLEDropNotify, Ё¬Ґо饣®
бвагЄвгаг ¤ ле ¤«п ЁЁжЁ «Ё§ жЁЁ OLE-Є®вҐ©Ґа .
5. „«п а Ў®вл б д ©« ¬Ё ®ЎкҐЄв®ў б«Ґ¤гҐв ЁбЇ®«м§®ў вм ¬Ґв®¤л
Є®¬Ї®Ґв OLE-Є®вҐ©Ґа LoadFromFile Ё SaveToFile.
OLE пў«пҐвбп бв®«м Ў®«ми®© ®Ў« бвмо вҐе®«®ЈЁЁ, зв® Ў®«миҐ
Ґ Ё¬ҐҐв пў®Ј® ®в®иҐЁп Є бўп§лў Ёо Ё ўҐ¤аҐЁо ®ЎкҐЄв®ў.
‚¬Ґбв® нв®Ј® ®® бўп§лў Ґвбп б ЈагЇЇ®© вҐе®«®ЈЁ©, ўЄ«оз ойЁе ў
ᥡп бўп§лў ЁҐ Ё ўҐ¤аҐЁҐ ®ЎкҐЄв®ў, Ћ‘•, бвагЄвгаЁа®ў го
Ї ¬пвм, ўв®¬ вЁ§ жЁо Ё вҐе®«®ЈЁо ЇҐаҐв бЄЁў Ёп. ‚ᥠнвЁ
вҐе®«®ЈЁЁ Ў §Ёаговбп Їа®Ја ¬¬®© вҐе®«®ЈЁЁ, §ў ®©
Component Object Model Ё«Ё COM.
—в® в Є®Ґ вҐе®«®ЈЁп OLE? ќв® Ў®а ®ЎкҐЄв®ў, Ї®бв஥ле
Ї®ўҐае ®ЎкҐЄв®© ¬®¤Ґ«Ё ‘ЋЊ, Є®в®а п ¤®ЇгбЄ Ґв Є®¬¬гЁЄ жЁо ў
室Ґ Їа®жҐбб . Ѓ®«ми п з бвм вҐе®«®ЈЁЁ бўп§ б Ї®«г票Ґ¬
ҐбЄ®«мЄЁе ЇаЁ«®¦ҐЁ©, Їа®жҐбб®ў, ¬ иЁ Ё«Ё ®ЇҐа жЁ®ле бЁб⥬,
®Ўй ойЁебп ¤агЈ б ¤агЈ®¬.
OLE - нв® Ґ Їа®бв® вҐе®«®ЈЁп ®Ў¬Ґ ¤ л¬Ё ¬Ґ¦¤г ЇаЁ«®¦Ґ-
Ёп¬Ё, OLE пў«пҐвбп п¤а®¬ ᮢ६Ґ®© Є®жҐЇжЁЁ ¤®Єг¬Ґв®-®аЁҐ-
вЁа®ў ®© б।л. Џ®н⮬㠤 ў ©вҐ вҐе®«®ЈЁо OLE Ї®б¬®ваЁ¬ Ў®-
«ҐҐ иЁа®Є®, 祬 Їа®бв® бЇ®б®Ў ®Ў¬Ґ ¤ л¬Ё.
я1Џ®пвЁҐ ¤®Єг¬Ґв®-®аЁҐвЁа®ў ®© б।л
Џ®«м§®ў вҐ«п¬ з бв® Ґ®Ўе®¤Ё¬® б®ў¬Ґб⮥ ЁбЇ®«м§®ў ЁҐ
ЇаЁ«®¦ҐЁ©. Ќ ЇаЁ¬Ґа, ў ⥪бв Ґ®Ўе®¤Ё¬® ўЄ«озЁвм Є авЁЄг. Љ Є
н⮠ᤥ« вм, Ґб«Ё । Єв®а, ў Є®в®а®¬ ⥪бв ᮧ¤ Ґвбп, Ґ
ЇаҐ¤ § зҐ ¤«п аЁб®ў Ёп Є авЁ®Є, Є авЁЄЁ ¬®¦® ᮧ¤ ў вм ў
б®ўҐа襮 ¤агЈ®¬ ЇаЁ«®¦ҐЁЁ. ’ Є ў®в Є®жҐЇжЁп
¤®Єг¬Ґв®-®аЁҐвЁа®ў ®© баҐ¤л ЇаҐ¤ § зҐ ¤«п нд䥪⨢®Ј®
ў§ Ё¬®¤Ґ©бвўЁп а §«Ёзле ЇаЁ«®¦ҐЁ©.
Џ® ¤®Єг¬Ґв®¬ Ї®Ё¬ Ґвбп Ґ в®«мЄ® ⥪бв, «оЎ®© д ©«,
Ї®¤Ј®в®ў«Ґл© Ї®«м§®ў ⥫Ґ¬.
„®Єг¬Ґв®-®аЁҐвЁа®ў п а Ў®в - нв® а Ў®в б Ў®а®¬
ЇаЁ«®¦ҐЁ©, Є ¦¤®Ґ Ё§ Є®в®але ўлЇ®«пҐв ®в¤Ґ«млҐ дгЄжЁЁ, Ґ
а Ў®в б ®¤Ё¬ ®Ја®¬л¬ ЇаЁ«®¦ҐЁҐ¬, ўлЇ®«пойЁ¬ ўбҐ дгЄжЁЁ. ‘
нв®© в®зЄЁ §аҐЁп ¬®¦® бзЁв вм, зв® ¤®Єг¬Ґв®-®аЁҐвЁа®ў п
б। - нв® ҐйҐ ®¤Ё бЇҐЄв бвагЄвгаЁ§ жЁЁ Їа®Ја ¬¬®Ј®
®ЎҐбЇҐзҐЁп.
‚ ¦®, зв® ў ¤-® Ї®¤е®¤Ґ ЇҐаў®Ґ ¬Ґбв® ўл室Ёв ¤®Єг¬Ґв,
Ґ ᮧ¤ ўиҐҐ ҐЈ® ЇаЁ«®¦ҐЁҐ Ё«Ё ап¤ ЇаЁ«®¦ҐЁ©. „®Єг¬Ґв -
ЇҐаўЁзҐ, ЇаЁ«®¦ҐЁҐ - ўв®аЁз®.
‘«Ґ¤гойЁҐ вҐе®«®ЈЁЁ бгйҐбвўгов ¤«п ®аЈ Ё§ жЁЁ ¤-® а Ў®вл.
1) OLE дЁа¬л Microsoft;
2) OpenDoc - ўбҐ, Єа®¬Ґ Microsoft, в.Ґ. Apple, IBM, Novell,
Oracle, Xerox;
3) CORBA - Common Object Request Broker Architecture ЋЎй п
ЂаеЁвҐЄвга Џ®б।ЁЄ ‡ Їа®б®ў ¬Ґ¦¤г ЋЎкҐЄв ¬Ё - IBM, HP, DEC,
Sun.
Њл Ўг¤Ґ¬ а бб¬ ваЁў вм вҐе®«®ЈЁо OLE.
‚ „Ћ‘ ва㤮 Ўл«® ᮧ¤ вм ¤®Єг¬Ґв - ⥪бв б аЁбгЄ ¬Ё. „Ґ«®
ў ⮬, зв® д®а¬ вл ¤ ле ў ЇаЁ«®¦ҐЁпе „Ћ‘ бгйҐб⢥® а §«Ёзл.
Ља®¬Ґ в®Ј®, Ї®бЄ®«мЄг „Ћ‘ Ё§ з «м® Їа®ҐЄвЁа®ў « бм Є Є
®¤®§ ¤ з п б। , Ґ Ўл«® Ґ®Ўе®¤Ё¬®бвЁ ў§ Ё¬®¤Ґ©бвўЁп ¬Ґ¦¤г
ЇаЁ«®¦ҐЁп¬Ё.
Џ®ЇлвЄЁ гбва Ёвм нв®в Ґ¤®бв в®Є ЇаЁўҐ«Ё Є ᮧ¤ Ёо
ЁвҐЈаЁа®ў ле Ї ЄҐв®ў, ЇаЁ¬Ґа, Framework. ќв® ЇаЁ¬Ґа вЁЇЁз®©
®ЇҐа жЁ®®© б।л, Єбв вЁ бЄ § вм. ‚ Ґ¬ ¬®¦® Ўл«® ¬®Ј®Ґ
¤Ґ« вм, Ґ ўле®¤п Ё§ Ї ЄҐв - ᮧ¤ вм ⥪бв, ўҐбвЁ Ў §г ¤ ле,
а Ў®в вм б д ©« ¬Ё, ЇҐз в вм. Ќ® ўбҐ а ў®, ®в¤Ґ«млҐ Є®¬Ї®Ґвл
Ї ЄҐв Ўл«Ё е㦥, 祬 б ¬®бв®п⥫млҐ ЇаЁ«®¦ҐЁп, ўлЇ®«пойЁҐ
ᮮ⢥вбвўгойЁҐ дгЄжЁЁ. ‘Є §лў « бм, ўЁ¤Ё¬®, Єў «ЁдЁЄ жЁп
г§Є®бЇҐжЁ «Ё§Ёа®ў ле а §а Ў®взЁЄ®ў.
‘«Ґ¤гойЁ¬ и Ј®¬ ЇгвЁ ¤-® а Ў®вл пў«пҐвбп Ї®пвЁҐ
Clipboard. Windows Є Є ¬®Ј®§ ¤ з п б। ба §г ¦Ґ
Їа®ҐЄвЁа®ў « бм б ўлб®Є®нд䥪⨢묨 б।бвў ¬Ё ®Ў¬Ґ ¤ л¬Ё
¬Ґ¦¤г ЇаЁ«®¦ҐЁп¬Ё. „®бв®Ёбвў® Clipboard б®бв®Ёв ў ⮬, зв®
Ёб祧« Їа®Ў«Ґ¬ ЇаҐ®Ўа §®ў Ёп ¤ ле ЇаЁ ЇҐаҐ¤ зҐ Ёе Ё§ ®¤®Ј®
ЇаЁ«®¦ҐЁп ў ¤агЈ®Ґ. ЏаҐ®Ўа §®ў ЁҐ Їа®Ёб室Ёв Ґ§ ¬Ґв® ¤«п
Ї®«м§®ў вҐ«п ®б®ўҐ ап¤ гбв ®ў«Ґле бв ¤ ав®ў. ЏаЁ«®¦ҐЁҐ
ўв®¬ вЁзҐбЄЁ Є®ва®«ЁагҐв «ЁзЁҐ ¤ ле ў ЎгдҐаҐ: ¤ лҐ Ґбвм -
дгЄжЁп Paste - ЄвЁў , ¤ ле Ґв - дгЄжЁп Paste - Ї ббЁў .
ЪДДДДДДДДДДДДДДДДДДДДДДДДДї
Copy і‚Ё§г «м®Ґ ЇаҐ¤бв ў«ҐЁҐі Paste
ЪДДДДДДДґ да Ј¬Ґв ГДДї
і АДДДДДДДДДДДДДДДДДДДДДДДДДЩ і
ЪДДДДДДДДБДДДДДДДДДДДї ЪДДДДДДДДДБДДДДДДДДДї
і ЏаЁ«®¦ҐЁҐ-Ёбв®зЁЄі іЏаЁ«®¦ҐЁҐ-ЇаЁҐ¬ЁЄі
і ЪДДДДДДДДДДї і і ЪДДДДДДДДДДДДДДДїі
і і ”а Ј¬Ґв і і і і ‚Ё§г «м®Ґ іі
і АДДДДДДДДДДЩ і і і ЇаҐ¤бв ў«ҐЁҐ іі
і і і і да Ј¬Ґв іі
і і і АДДДДДДДДДДДДДДДЩі
АДДДДДДДДДДДДДДДДДДДДЩ АДДДДДДДДДДДДДДДДДДДЩ
ЌҐ¤®бв вЄ®¬ пў«пҐвбп Ґў®§¬®¦®бвм Є®Ї«ҐЁп ¤ ле; ЇаЁ
Ї®пў«ҐЁЁ ®ў®Ј® Ў«®Є ¤ ле, бв алҐ вҐаповбп, в Є¦Ґ
®Ја ЁзҐ®бвм а §¬Ґа Ў«®Є , в.Є. Clipboard - нв® ЎгдҐа ў Ћ‡“.
‘«Ґ¤гойЁ¬ и Ј®¬ а §ўЁвЁп вҐе®«®ЈЁЁ ®Ў¬Ґ ¤ л¬Ё бв «
вҐе®«®ЈЁп DDE. ”а Ј¬Ґв, Є®в®ал© ¬л е®вЁ¬ ЇҐаҐҐбвЁ ў ¤агЈ®Ґ
ЇаЁ«®¦ҐЁҐ, ¤®«¦Ґ Ўлвм з бвмо д ©« , Є®в®ал© §лў Ґвбп
¤®Єг¬Ґв®¬-Ёбв®зЁЄ®¬. ”а Ј¬Ґв Ї®¬Ґй Ґвбп ў Clipboard Є®¬ ¤®©
Copy, бзЁвлў Ґвбп Ґ Є®¬ ¤®© Paste, a Є®¬ ¤®© Paste Link.
ЪДДДДДДДДДДДДДДДДДДДДДДДДДї
Copy і‚Ё§г «м®Ґ ЇаҐ¤бв ў«ҐЁҐі Paste Link
ЪДДДДД>Дґ да Ј¬Ґв ГД>ї
і АДДДДДДДДДДДДДДДДДДДДДДДДДЩ і
ЪДДДДДДДДБДДДДДДДДДДДї ЪДДДДДДДДДБДДДДДДДДДї
і ЏаЁ«®¦ҐЁҐ-Ёбв®зЁЄі іЏаЁ«®¦ҐЁҐ-ЇаЁҐ¬ЁЄі
і ЪДДДДДДДДДДї і і ЪДДДДДДДДДДДДДДДїі
і і ”а Ј¬Ґв і і і і ‚Ё§г «м®Ґ іі
і АДДДДДДДДДДЩ і і і ЇаҐ¤бв ў«ҐЁҐ іі
і і і і да Ј¬Ґв іі
і і і АДДДДДДДДДДДДДДДЩі
АДДДДДДДДВДДДДДДДДДДДЩ АДДДДДДДДДВДДДДДДДДДЩ
^ ббл«Є ®аЁЈЁ « і
АДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ
’ҐЇҐам «оЎлҐ Ё§¬ҐҐЁп ў да Ј¬ҐвҐ ¤®Єг¬Ґв -Ёбв®зЁЄ Ўг¤гв
®ва ¦ вмбп да Ј¬ҐвҐ, Ї®¬ҐйҐ®¬ ў ЇаЁ«®¦ҐЁҐ-ЇаЁҐ¬ЁЄ. ’.®.
да Ј¬Ґв б®еа Ё« бўп§м б ®аЁЈЁ «®¬, ў ¤®Єг¬ҐвҐ, Єг¤ ўбв ў«Ґ
да Ј¬Ґв Ґбвм ббл«Є ®аЁЈЁ «. ЏаЁ н⮬ бўп§м б®еа пҐвбп Ё
Ї®б«Ґ § ЄалвЁп ЇаЁ«®¦ҐЁ©.
’Ґе®«®ЈЁп DDE Ґ Ї®«гзЁ« иЁа®Є®Ј® а бЇа®бва ҐЁп.
Џ®«м§®ў ⥫Ё з йҐ ЁбЇ®«м§гов ®Ўлзл© Clipboard. „«п Їа®Ја ¬¬Ёбв®ў
Їа®в®Є®«л DDE ⮦Ґ ®зҐм б«®¦л. ‚л нв® ўЁ¤Ґ«Ё. DDE 楫Ґб®®Ўа §®
ЁбЇ®«м§®ў вм ¤«п ®Ў¬Ґ ¤®бв в®з® Їа®бвл¬Ё бвагЄвга ¬Ё ¤ ле,
Ё¬Ґ®, ⥪бв®ўл¬Ё бва®Є ¬Ё. „«п Ў®«ҐҐ б«®¦ле бвагЄвга Ё Ўл«
ᮧ¤ Їа®в®Є®« OLE.
— бв® Їа®Ё§ў®¤Ёвбп ба ўҐЁҐ Їа®в®Є®«®ў DDE Ё OLE Ё
бЇа иЁў Ґвбп, Є®Ј¤ Є Є®© Їа®в®Є®« Ґ®Ўе®¤Ё¬® ЇаЁ¬Ґпвм. Џа®в®Є®«
DDE 楫Ґб®®Ўа §® ЁбЇ®«м§®ў вм ¤«п ®Ў¬Ґ Їа®бвл¬Ё вЁЇ ¬Ё ¤ ле,
ЇаЁ¬Ґа, ⥪бв®ўл¬Ё бва®Є ¬Ё, ў в® ўаҐ¬п Є Є Їа®в®Є®« OLE
бЇ®б®ЎҐ Ї®¤¤Ґа¦Ёў вм ®Ў¬Ґ бгйҐб⢥® Ў®«ҐҐ б«®¦®©
Ёд®а¬ жЁҐ©, в Є®© Є Є §ўгЄЁ, Ё§®Ўа ¦ҐЁп.
я1ЏаЁжЁЇл OLE
‚ OLE Ї®пвЁҐ ®ЎкҐЄв Ё¬ҐҐв б«Ґ¤гойЁ© б¬лб«: ®ЎкҐЄв - нв®
б®ў®ЄгЇ®бвм ваҐе ўЁ¤®ў ¤ ле:
1) б®ЎбвўҐлҐ ¤ лҐ ў ⮬ ўгв॥¬ д®а¬ вҐ, ў Є®в®а®¬ Ёе
ᮧ¤ «® ЇаЁ«®¦ҐЁҐ-бҐаўҐа;
2) ¤ лҐ ¤«п ўЁ§г «м®Ј® ЇаҐ¤бв ў«ҐЁп;
3) б«г¦ҐЎ п Ёд®а¬ жЁп ® Їа®Ја ¬¬Ґ-бҐаўҐаҐ.
’.®. OLE-®ЎкҐЄв - нв® ¤ лҐ, а §¤Ґ«пҐ¬лҐ ¤ўг¬п
ЇаЁ«®¦ҐЁп¬Ё. ЏаЁ«®¦ҐЁҐ-Є«ЁҐв в®«мЄ® ®в®Ўа ¦ Ґв ¤ лҐ (2).
„«п ЇаЁ«®¦ҐЁп-Є«ЁҐв Ї®пўЁ«бп вҐа¬Ё - OLE-Є®вҐ©Ґа - нв®
ЇаЁ«®¦ҐЁҐ, Є®в®а®Ґ ¬®¦Ґв ᮤҐа¦ вм ®ЎкҐЄв. OLE-бҐаўҐа - нв®
ЇаЁ«®¦ҐЁҐ, Є®в®а®Ґ ¬®¦Ґв ᮧ¤ ў вм Ё । ЄвЁа®ў вм ®ЎкҐЄв.
Џ®пўЁ«®бм Ї®пвЁҐ "б®бв ў®© ¤®Єг¬Ґв" Є Є ¤®Єг¬Ґв,
ᮤҐа¦ йЁ© а §«ЁзлҐ вЁЇл ¤ ле, ®д®а¬«ҐлҐ Є Є ®ЎкҐЄвл.
„«п Ї®«м§®ў ⥫Ґ© ®б®ўл¬ ®ў®ўўҐ¤ҐЁҐ¬ бв « ў®§¬®¦®бвм
ЄвЁўЁ§ жЁЁ ЇаЁ«®¦ҐЁп, ᮧ¤ ўиҐЈ® ®ЎкҐЄв, Ё§ ЇаЁ«®¦ҐЁп-Є«ЁҐв ,
ў Є®в®а®¬ ®ЎкҐЄв 室Ёвбп. ‚ Ї®«Ґ ®ЎкҐЄв ¤® ᤥ« вм ¤ў®©®©
饫祪 «Ґў®© Є®ЇЄ®© ¬лиЁ. ‡ Јаг§Ёвбп бҐаўҐа Ё Ґ¬г Ўг¤Ґв ЇҐаҐ¤
®ЎкҐЄв.
ЏаЁ н⮬ Ї®пвЁҐ 宦¤ҐЁп ®ЎкҐЄв ў ЇаЁ«®¦ҐЁЁ-Є«ЁҐвҐ
¬®¦Ґв ЇаЁ®ЎаҐв вм ¤ў®пЄЁ© б¬лб«.
‚ аЁ в 1. ‚Ґ¤аҐЁҐ ®ЎкҐЄв . ‘¬лб« ўҐ¤аҐЁп б®бв®Ёв ў ⮬,
зв® ўбҐ ваЁ ўЁ¤ ¤ ле ®ЎкҐЄв Є®ЇЁаговбп ў б®бв ў®© ¤®Єг¬Ґв.
ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
іЪДДДДДДДДДДДїЪДДДДДДДДДДДДДїЪДДДДДДДДДДїі
Copy іі‘®Ўб⢥륳і ‚Ё§г «м®Ґ іі‘«г¦ҐЎ п іі Insert
ЪДДД>ґі ¤ лҐ ііЇаҐ¤бв ў«ҐЁҐііЁд®а¬ жЁпіГД>ї object
і іАДДДДДДДДДДДЩАДДДДДДДДДДДДДЩАДДДДДДДДДДЩі і
і і ЋЎкҐЄв і і
і АДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ і
ЪДДДБДДДДї ЪДДДБДДДДї
і ‘ҐаўҐа і і Љ«ЁҐв і
іЪДДДДДДїі іЪДДДДДДїі
ііЋЎкҐЄвіі ііЋЎкҐЄвіі
іАДДДДДДЩі іАДДДДДДЩі
АДДДДДДДДЩ АДДДДДДДДЩ
„®бв®Ёбвў® ¤ ®Ј® ¬Ґв®¤ б®бв®Ёв ў § Є®зҐ®бвЁ д ©«
б®бв ў®Ј® ¤®Єг¬Ґв . ‚бҐ, з⮠㦮, Ґбвм ў Ґ¬ б ¬®¬. ќв® ў ¦®
ў б«гз Ґ ў®§¬®¦®Ј® ЇҐаҐҐбҐЁп ¤®Єг¬Ґв ¤агЈго дЁ§ЁзҐбЄго
¬ иЁг.
ЌҐ¤®бв в®Є б®бв®Ёв ў ⮬, зв® ўҐ«ЁЄ а §¬Ґа д ©« б®бв ў®Ј®
¤®Єг¬Ґв . …б«Ё Ґбвм ҐбЄ®«мЄ® б®бв ўле ¤®Єг¬Ґв®ў б ¤ л¬
®ЎкҐЄв®¬, в® ®Ё бЄ®ЇЁа®ў л ў Є ¦¤®¬ Ё§ б®бв ўле ¤®Єг¬Ґв®ў.
‚ аЁ в 2. ‘ўп§лў ЁҐ ®ЎкҐЄв . ‚ н⮬ б«гз Ґ ўв®а п Є®ЇЁп
®ЎкҐЄв Ґ ᮧ¤ Ґвбп. „®Єг¬Ґв-Є«ЁҐв ᮤҐа¦Ёв в®«мЄ® ¤ лҐ ¤«п
ўЁ§г «м®Ј® ЇаҐ¤бв ў«ҐЁп Ё ббл«Єг ¤®Єг¬Ґв-бҐаўҐа, ᮤҐа¦ йЁ©
®ЎкҐЄв. ‘бл«Є - Ї®«л© Їгвм Є ®ЎкҐЄвг.
ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДї
іЪДДДДДДДДДДДДДїЪДДДДДДДДДДїі
Copy іі ‚Ё§г «м®Ґ іі‘бл«Є іі Paste
ЪДДД>ґіЇаҐ¤бв ў«.(1)іі®ЎкҐЄв (2)іГД>ї Link
і іАДДДДДДДДДДДДДЩАДДДДДДДДДДЩі і
і АДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ і
ЪДДДБДДДДї ЪДДДБДДДДї
і ‘ҐаўҐа і і Љ«ЁҐв і
іЪДДДДДДїі іЪДДДДДДїі
ііЋЎкҐЄвіі іі(1)(2)іі
іАДДДДДДЩі іАДДДДДДЩі
АДДДДДДДДЩ АДДДДДДДДЩ
‘ўп§лў ЁҐ нЄ®®¬Ёв ¬Ґбв® ¤ЁбЄҐ, ®б®ЎҐ®, Є®Ј¤ ®¤Ё
®ЎкҐЄв пў«пҐвбп Ёбв®зЁЄ®¬ ¤«п ¬®ЈЁе Є«ЁҐв®ў, ® ЇаЁ ЇҐаҐ®бҐ
¤агЈго ¬ иЁг ¤®Єг¬Ґв -Є«ЁҐв Ґ®Ўе®¤Ё¬® ®вб«Ґ¤Ёвм, зв®Ўл
ўбҐ ¤®Єг¬Ґвл-бҐаўҐал ⮦Ґ Ўл«Ё ЇҐаҐҐбҐл.
€бв®аЁзҐбЄЁ Їа®в®Є®« OLE бгйҐбвўгҐв ў ¤ўге ўҐабЁпе - OLE 1.0
Ё OLE 2.0. ‘Ґ©з б, ҐбвҐб⢥®, ЇаҐ¤Ї®з⥨Ґ ®в¤ Ґвбп OLE 2.0.
OLE 1.0 Ї®«®бвмо ॠ«Ё§®ў б।бвў ¬Ё DDE Ё ®Ў« ¤ Ґв
б«Ґ¤гойЁ¬ Ґг¤®Ўбвў®¬. ЏаЁ ЄвЁўЁ§ жЁЁ ®ЎкҐЄв ў
¤®Єг¬ҐвҐ-Є«ЁҐвҐ, § Јаг¦ Ґвбп ЇаЁ«®¦ҐЁҐ-бҐаўҐа Ё Ґ¬г ЇҐаҐ¤ Ґвбп
®ЎкҐЄв ¤«п । ЄвЁа®ў Ёп. ќв® е®а®и®, ® Ї«®е® в®, зв®
ЇаЁ«®¦ҐЁҐ-бҐаўҐа § Јаг¦ Ґвбп ў ®в¤Ґ«м®¬ ®ЄҐ Ё ЇаЁ
। ЄвЁа®ў ЁЁ ®ЎкҐЄв Ґ ўЁ¤® ®Єа㦥Ёп, ᮤҐа¦ 饣®бп ў
¤®Єг¬ҐвҐ-Є«ЁҐвҐ. ЌҐ¤®бв вЄЁ, бўп§ лҐ б нвЁ¬ гбва Ґл ў ®ў®©
ўҐабЁЁ OLE - OLE 2.0.
я1• а ЄвҐаЁбвЁЄ вҐе®«®ЈЁЁ OLE 2.0
1) Ќ®ў п ўҐабЁп OLE - OLE 2.0 ॠ«Ё§гҐв Є®жҐЇжЁо
ўЁ§г «м®Ј® । ЄвЁа®ў Ёп - । ЄвЁа®ў Ёп ¬ҐбвҐ.
ЏаЁ«®¦ҐЁҐ-бҐаўҐа § ЇгбЄ Ґвбп ЇаЁ ЄвЁўЁ§ жЁЁ ®ЎкҐЄв , ® ®® Є Є
Ўл § ЇгбЄ Ґвбп ў ®ЄҐ ЇаЁ«®¦ҐЁп-Є«ЁҐв . ЏаЁ«®¦ҐЁҐ-Є«ЁҐв Є Є
Ўл ЇаҐўа й Ґвбп ў ЇаЁ«®¦ҐЁҐ-бҐаўҐа. Ѓл«® ЇаЁ«®¦ҐЁҐ-Є«ЁҐв,
бв «® ЇаЁ«®¦ҐЁҐ-бҐаўҐа. ‚ бва®Єг ¬Ґо ЇаЁ«®¦ҐЁп-Є«ЁҐв
ўбва Ёў овбп Ї®§ЁжЁЁ ¬Ґо ЇаЁ«®¦ҐЁп-бҐаўҐа , Ґ®Ўе®¤Ё¬лҐ ¤«п
। ЄвЁа®ў Ёп, «®ЈЁз® б®Ј« б®ў ® Є®а४вЁаговбп Ё Ї Ґ«Ё
Ёбва㬥⮢. Ђ Ї®«Ґ ¤®Єг¬Ґв -Є«ЁҐв б ўЁ§г «мл¬
ЇаҐ¤бв ў«ҐЁҐ¬ а §«Ёзле ®ЎкҐЄв®ў Ґ Ёб祧 Ґв.
2) „агЈЁ¬ ®ўиҐбвў®¬ ў ЋL… 2.0 пў«пҐвбп ў®§¬®¦®бвм
ЇаЁ«®¦ҐЁп ЇаҐ¤®бв ўЁвм ап¤ бў®Ёе дгЄжЁ© ( ЇаЁ¬Ґа, Їа®ўҐаЄг
®ад®Ја дЁЁ) ¤«п ¤®бвгЇ Ё§ ¤агЈЁе ЇаЁ«®¦ҐЁ© - OLE-Automation.
Њ®¤г«м, ўлЇ®«пойЁ© г¦го дгЄжЁо, ®д®а¬«пҐвбп ў ўЁ¤Ґ ®ЎкҐЄв
ЋL… Ё ЇҐаҐ¤ Ґвбп ў ¤агЈ®Ґ ЇаЁ«®¦ҐЁҐ.
Ђўв®¬ вЁ§ жЁп OLE ЇаҐ¤®бв ў«пҐв ў®§¬®¦®бвЁ Ї® гЇа ў«ҐЁо
®ЎкҐЄв ¬Ё, Є®в®алҐ а §¬Ґй овбп ў ¤агЈЁе ЇаЁ«®¦ҐЁпе Ё«Ё ў DLL.
Ћ а Ў®в Ґв Ґ в®«мЄ® ўҐ Ја Ёж ЇаЁ«®¦ҐЁ©, ® Ё ўҐ
Ја Ёж п§лЄ®ў Ё, ў Ўг¤г饬, ўҐ Ја Ёж ®в¤Ґ«м®© ¬ иЁл.
Ђўв®¬ вЁ§ жЁп ўЄ«оз Ґв ў бҐЎп ‘…ђ‚…ђ› ўв®¬ вЁ§ жЁЁ Ё
Љ‹€…Ќ’Ћ‚ ўв®¬ вЁ§ жЁЁ.
‘ҐаўҐа ®ЎҐбЇҐзЁў Ґв ў®§¬®¦®бвЁ, Є«ЁҐв Ї®«гз Ґв Є Ё¬
¤®бвгЇ. ‘ҐаўҐал ¤Ґ«пвбп бҐаўҐал ўгв॥© ®Ўа Ў®вЄЁ Ё
«®Є «млҐ бҐаўҐал. ‘ҐаўҐа ўгв॥© ®Ўа Ў®вЄЁ - нв® DLL,
§ Јаг¦ Ґ¬ п ў ¤аҐб®Ґ Їа®бва бвў® Їа®Ја ¬¬л Є«ЁҐв . ‹®Є «млҐ
бҐаўҐал - нв® ўв®®¬лҐ Їа®Ја ¬¬л.
я1Џа®бв®© Є«ЁҐв ўв®¬ вЁ§ жЁЁ OLE
‘«Ґ¤гойЁ© ЇаЁ¬Ґа ®ЎҐбЇҐзЁў Ґв ¤®бвгЇ Ё§ ЇаЁ«®¦ҐЁп Delphi
Є дгЄжЁп¬ Word.
Var
V : Variant;
Begin
V := CreateOleObject('Word.Basic');
V.FileNew('Normal');
V.Insert('Hello from Delphi!');
V.FileSaveAs('C:\SAMPLE.DOC');
End;
ќв®в Є®¤ ᮧ¤ Ґв ¤®Єг¬Ґв Word, ўбв ў«пҐв ў ҐЈ® бва®Єг Ё
б®еа пҐв ҐЈ®. ‚ҐиҐ ўбҐ ®зҐм Їа®бв®, ® § ўҐиҐ© Їа®бв®в®©
бЄалв® ¬®¦Ґбвў® б«®¦Ґ©иЁе ¤Ґ©бвўЁ©.
‘«Ґ¤гҐв ®Ўа вЁвм ўЁ¬ ЁҐ вЁЇ ¤ ле Variant Ё
¬Ґв®¤л FileNew, Insert, FileSaveAs, Є®в®алҐ пў«повбп Ґ
Їа®жҐ¤га ¬Ё Delphi, ¬Ґв®¤ ¬Ё Word.
Љ Є ®бгйҐбвў«пҐвбп § ЇгбЄ Word. „«п нв®Ј® ®Їпвм вॡгҐвбп
॥бва.
Џ® б«®ў ¬ 'Word Basic' ў ॥бвॠ室Ёвбп § 票Ґ
бЇҐжЁ «м®Ј® Ё¤ҐвЁдЁЄ в®а CLSID. Џ® Ґ¬г ў н⮬ ¦Ґ ॥бваҐ
室Ёвбп бва®Є ЇаЁ¬Ґа® б«Ґ¤го饣® ўЁ¤ : ‘:\WINWORD\WINWORD.EXE
/Automation. Џ® Є«озг /Automation Word ў®§ўа й Ґв ббл«Єг
®ЎкҐЄв ўв®¬ вЁ§ жЁЁ, Ї®б«Ґ 祣® ®Є §лў овбп ¤®бвгЇл¬Ё ҐЈ®
¬Ґв®¤л.
я1Џа®бвлҐ бҐаўҐал ўв®¬ вЁ§ жЁЁ OLE
‚ ЇаЁ«®¦ҐЁЁ - бҐаўҐаҐ ўв®¬ вЁ§ жЁЁ ¤®«¦Ґ Ўлвм ¬®¤г«м,
ᮤҐа¦ йЁ© б«Ґ¤го饥 ®Ўкпў«ҐЁҐ:
Const
AutoClassInfo : TAutoClassInfo = (
AutoClass : TMyAuto; // €¬п Є« бб ®ЎкҐЄв ўв®¬ вЁ§ жЁЁ
ProgID : 'AutoProj.MyAuto'; // €¬п ЇаЁ«®¦ҐЁп.€¬п ¬®¤г«п
ClassID : '{12345678-1234-1234-123456789ABC}';
Description : 'Sam';
Instancing : acMultiInstance);
Љ«о祢묨 н«Ґ¬Ґв ¬Ё пў«повбп ProgID Ё ClassID, Є®в®алҐ
Ї®Ї ¤ ов ў ॥бва (ॣЁбва жЁ®го Ў §г ¤ ле) ЇаЁ ॣЁбва жЁЁ,
Є®в®а п ўлЇ®«пҐвбп ЇаЁ § ЇгбЄҐ ЇаЁ«®¦ҐЁп б Є«о祬 /regserver.
ClassID - б«гз ©®Ґ зЁб«®, зв®Ўл Ґ ббл« вмбп в Є®Ґ б«®¦®Ґ
зЁб«® ЁбЇ®«м§гҐвбп ProgID.
Instancing Ї®§ў®«пҐв ®аЈ Ё§®ў вм бҐаўҐа б ¤®бвгЇ®¬ Є
Ґ¬г «ЁЎ® ҐбЄ®«мЄЁе Є«ЁҐв®ў ®¤®ўаҐ¬Ґ®, «ЁЎ® ®¤®Ј®, «ЁЎ®
ўгв२© бҐаўҐа.
“б«гЈЁ, ЇаҐ¤®бв ў«пҐ¬лҐ бҐаўҐа®¬, ॠ«Ё§говбп ¬Ґв®¤ ¬Ё,
Ї®¬Ґй Ґ¬л¬Ё ў а §¤Ґ« Automated ®Ўкпў«ҐЁп Є« бб :
TMyAuto = Class(TAutoObject)
Private
{Private declarations}
Automated
Procedure ShowDialog;
End {TMyAuto};
Procedure TMyAuto.ShowDialog;
Begin
ShowMessage('Hello!');
End {TMyAuto.ShowDialog};
Џа®жҐ¤га ShowDialog ⥯Ґам ¤®бвгЇ Ё§ ЇаЁ«®¦ҐЁ©
Є«ЁҐв®ў, ўлЇ®«пойЁе б«Ґ¤гойЁҐ ¤Ґ©бвўЁп:
Var
V : Variant;
Begin
V := CreateOleObject('AutoProj.MyAuto');
V.ShowDialog;
End;
3) џ¤а®¬ ЋL… 2.0 бв « бЇ®б®Ў еа ҐЁп ¤ ле ў б®бв ў®¬
¤®Єг¬ҐвҐ. ‘®бв ў®© ¤®Єг¬Ґв ЇаҐ¤бв ў«пҐвбп ў ўЁ¤Ґ Ў®а
еа Ё«Ёй, ў Є ¦¤®¬ Ё§ Є®в®але ¬®¦Ґв ᮤҐа¦ вмбп ®ЎкҐЄв, ᮧ¤ л©
ЇаЁ«®¦ҐЁҐ¬-бҐаўҐа®¬. ‘ ¬® ЇаЁ«®¦ҐЁҐ-Є«ЁҐв Ґ § Ґв бЇ®б®Ў
еа ҐЁп ®ЎкҐЄв , ᮧ¤ ®Ј® ¤агЈЁ¬ ЇаЁ«®¦ҐЁҐ¬. Џ®н⮬㠯аЁ
б®еа ҐЁЁ ¤®Єг¬Ґв Є«ЁҐв Є Є Ўл "Їа®бЁв" бҐаўҐа б®еа Ёвм бў®Ё
®ЎкҐЄвл, б ¬ ЇаҐ¤®бв ў«пҐв еа Ё«Ёй ¤«п нв®Ј®. ЏаЁ н⮬ ®Ўй п
бвагЄвга ®ЎкҐЄв Ґ¤Ё ¤«п ўбҐе ЇаЁ«®¦ҐЁ©, Ї®¤¤Ґа¦Ёў ойЁе
Їа®в®Є®« ЋLE, Ё ўлЈ«п¤Ёв в Є Є Є Ўл«® Ї®Є § ® а ҐҐ.
‘вагЄвгаЁа®ў п Ї ¬пвм - нв® ®ў п вҐеЁЄ ¤«п § ЇЁбЁ
®ЎкҐЄв®ў Ё«Ё ¤ ле ¤ЁбЄ. ќв вҐеЁЄ ®ЎҐбЇҐзЁў Ґв ўбҐ гб«гЈЁ,
Є®в®алҐ бгйҐбвўгов ў бв ¤ а⮬ д ©«®ў®¬ ўў®¤Ґ/ўлў®¤Ґ. Њ®¦®
§ ЇЁблў вм д ©«л ¤ЁбЄ, ¬®¦® ᮧ¤ ў вм Є в «®ЈЁ Ё Ї®¤Є в «®ЈЁ.
Ћв«ЁзЁҐ бвагЄвгаЁа®ў ®© Ї ¬пвЁ ®в бв ¤ ав®Ј® д ©«®ў®Ј®
ўў®¤ /ўлў®¤ § Є«оз Ґвбп ў ⮬, зв® Є ¦¤л© Ў®а Є в «®Ј®ў Ё
д ©«®ў бвагЄвгаЁа®ў ®© Ї ¬пвЁ а §¬Ґй Ґвбп ўгваЁ Ґ¤Ё®Ј®
Ў®«ми®Ј® д ©« , Ї®¤®Ў® ⮬г, Є Є Ў®а в Ў«Ёж InterBase
а §¬Ґй Ґвбп ўгваЁ Ґ¤Ё®Ј® д ©« GDB.
” ©« бвагЄвгаЁа®ў ®© Ї ¬пвЁ §лў Ґвбп б®бв ўл¬
д ©«®¬. Љ в «®ЈЁ ўгваЁ нвЁе б®бв ўле д ©«®ў §лў овбп
Ї®в®Є ¬Ё.
Ќ ЇаЁ¬Ґа, ўбҐ DOC-д ©«л ў ¤Ґ©б⢨⥫м®бвЁ пў«повбп
д ©« ¬Ё бвагЄвгаЁа®ў ®© Ї ¬пвЁ.
‚®§¬®¦® бвагЄвгаЁа®ў п Ї ¬пвм Ўг¤Ґв бв ¤ ав®©
д®а¬®© д ©«®ў®Ј® ўў®¤ /ўлў®¤ ў Ўг¤гйЁе Ћ‘.
я1ђ Ў®в б® бвагЄвгаЁа®ў ®© Ї ¬пвмо
‘®бв ў®© д ©« ᮧ¤ Ґвбп ўл§®ў®¬ дгЄжЁЁ
StgCreateDocFile, Є®в®а п ў®§ўа й Ґв ббл«Єг ЁвҐа䥩бл©
®ЎкҐЄв IStorage. ќв®в ўл§®ў Є Є Ўл ᮧ¤ Ґв ®ўл© зЁбвл© ¦ҐбвЄЁ©
¤ЁбЄ.
Ћб®ўлҐ ¬Ґв®¤л а Ў®вл б ®ЎкҐЄв®¬ IStorage:
CreateStream;
OpenStream;
CreateStorage;
OpenStorage;
€ ¤а.
„«п Ї®«гзҐЁп Ї®в®Є ўл§лў Ґвбп ¬Ґв®¤ нв®Ј® ®ЎкҐЄв
CreateStream, Є®в®ал© ў®§ўа й Ґв ббл«Єг Ї®в®Є вЁЇ IStream.
ќв®в ўл§®ў Є Є Ўл ᮧ¤ Ґв ®ўл© д ©« ¤ЁбЄҐ.
‚ Ї®в®Є ¬®¦® ЇЁб вм ¤ лҐ ¬Ґв®¤®¬ Write. —Ёв вм ¤ лҐ
Ё§ Ї®в®Є ¬®¦® ¬Ґв®¤®¬ Read.
Ћб®ўлҐ ¬Ґв®¤л а Ў®вл б ®ЎкҐЄв®¬ IStream:
Read;
Write;
Seek;
€ ¤а.
‚ Є®жҐ а Ў®вл б Ї®в®Є®¬ Ё Ї ¬пвмо Ёе ¤® ®бў®Ў®¤Ёвм
¬Ґв®¤ ¬Ё Release.
‘гйҐбвўгҐв ¬®¦Ґбвў® ०Ё¬®ў а Ў®вл б® бвагЄвгаЁа®ў ®©
Ї ¬пвмо, ®ЇаҐ¤Ґ«пҐ¬ле Є®бв в ¬Ё, ЇҐаҐ¤ ў Ґ¬л¬Ё ў ўл§®ўл
StgCreateDocFile Ё CreateStream. ‚ з бв®бвЁ ў®§¬®¦Ґ ०Ё¬ б
ва § ЄжЁп¬Ё, ЇаЁ Є®в®а®¬ ¬®¦® ®в¬ҐЁвм १г«мв вл.
‘вагЄвгаЁа®ў п Ї ¬пвм - нв® ®зҐм § ¬ зЁў п бЁб⥬ ,
Є®Ј¤ вॡгҐвбп еа Ёвм ®зҐм ¬®Ј® д ©«®ў. ќв бЁб⥬ Ї®§ў®«пҐв
ўбҐ Ёе бЇапв вм ўгваЁ ®¤®Ј® д ©« .
4) „®Ї®«ЁвҐ«млҐ ў®§¬®¦®бвЁ OLE 2.0:
1) ђ §ўЁвЁҐ ¬Ґв®¤ Drag-and-Drop ¤«п ЇҐаҐ¬ҐйҐЁп «оЎле
®ЎкҐЄв®ў ўгваЁ «оЎле ®Є®, Ґ в®«мЄ® д ©«®ў Ё§ File Manager;
2) ‚®§¬®¦®бвм ᮧ¤ Ёп ў«®¦Ґле ®ЎкҐЄв®ў;
3) ‚®§¬®¦®бвм з бвЁз®Ј® бва Ёў Ёп бўп§Ґ© ЇаЁ
ЇҐаҐ¬ҐйҐЁЁ ¤®Єг¬Ґв®ў Ё§ Є в «®Ј ў Є в «®Ј;
4) ‚®§¬®¦®бвм ўлЎ®а бЇ®б®Ў ўҐ¤аҐЁп ®ЎкҐЄв ў
§ ўЁбЁ¬®бвЁ ®в 楫Ё, зв® Ї®§ў®«пҐв нЄ®®¬Ёвм Ї ¬пвм, ЇаЁ¬Ґа,
¬®¦® ўҐ¤аЁвм в Ў«Ёжг Ё§ Excel ў Word Є Є в Ў«Ёжг (¤«п ЄвЁў®Ј®
। ЄвЁа®ў Ёп), ¬®¦® - в®«мЄ® Є Є ЎЁв®ўл© ®Ўа § (в®«мЄ® ¤«п
®в®Ўа ¦ҐЁп).
5) ‚гв२Ґ ¬Ґе Ё§¬л OLE 2.0
OLE 2.0 - нв® Ў®а ЁвҐа䥩ᮢ, Ї®§ў®«пойЁе Є«ЁҐвг Ё
бҐаўҐаг ®Ў¬ҐЁў вмбп ¤ л¬Ё. Џа®в®Є®« ®Ў¬Ґ §лў Ґвбп UTD -
Uniform Data Transfer (“ЁдЁжЁа®ў п ЇҐаҐ¤ з ¤ ле). UTD -
нв® а биЁаҐЁҐ Їа®в®Є®« ®Ў¬Ґ зҐаҐ§ Clipboard,
ЇаҐ¤гб¬ ваЁў о饥 ¬Ґе Ё§¬л 㢥¤®¬«ҐЁп ®Ў Ё§¬ҐҐЁЁ ¤ ле Ё
ЇҐаҐЈ®ў®ал ® д®а¬ в е.
ЏаЁ н⮬ Ґв ®Ја ЁзҐЁ© а §¬Ґа ¤ ле, в.Є. ¬®¦®
ЇҐаҐ¤ ў вм Ё зҐаҐ§ ¤ЁбЄ, Ё«Ё Ї®«м§®ў вмбп ЇҐаҐ¤ 祩 ббл«ЄЁ, Ґ
б ¬Ёе ¤ ле.
‘ ¬®Ґ ў ¦®Ґ ў ¬Ґе Ё§¬ е OLE 2.0 - нв® ®вЄ § ®в Їа®в®Є®«
DDE, ®б®ў ®Ј® ¬Ґе Ё§¬Ґ ЇҐаҐ¤ зЁ б®®ЎйҐЁ©, ў Ї®«м§г
Їа®в®Є®« COM - Component Object Model, ®б®ў ®Ј® ¬Ґе Ё§¬Ґ
г¤ «Ґле Їа®жҐ¤гале ўл§®ў®ў - RPC Remote Procedure Call. COM -
нв® Їа®в®Є®« Ё§Є®Ј® га®ўп OLE, ЇаҐ¤гб¬ ваЁў ойЁ© Ў®а
бв ¤ ав®ў ¤«п ॠ«Ё§ жЁЁ ®ЎкҐЄв®ў, бЇ®б®Ўл Є®¬¬гЁЄ жЁЁ ®ЎкҐЄв®ў
¤агЈ б ¤агЈ®¬ Ё Ў®а дгЄжЁ© API.
‘ЋЊ - нв® вҐе®«®ЈЁп, Є®в®а п «Ґ¦Ёв Ї®¤ OLE, ® б ¬ Ґ
пў«пҐвбп з бвмо OLE.
‘ЋЊ - нв® бЇ®б®Ў ॠ«Ё§ жЁЁ ®ЎкҐЄв®ў га®ўҐ Ћ‘. ќв®
®§ з Ґв, зв® ®ЎкҐЄвл ‘ЋЊ ¬®Јгв Ўлвм ЁвҐЈаЁа®ў л ў б ¬г Ћ‘ Ё
¤Ґ©бвў®ў вм ў Є зҐб⢥ ҐбвҐб⢥®Ј® ҐҐ а биЁаҐЁп.
…б«Ё ®ЎкҐЄвл ‘ЋЊ а бЇ®« Ј овбп ў DLL, в® ®Ё бв ®ўпвбп
¤®бвгЇл¬Ё Ё§ а §«Ёзле п§лЄ®ў, в ЄЁ¬ ®Ўа §®¬ ®ЎкҐЄвл ‘ЋЊ
а §а Ў влў овбп ¤«п ЇаҐ®¤®«ҐЁп Ја Ёж ¬Ґ¦¤г Їа®Ја ¬¬ ¬Ё,
п§лЄ ¬Ё, ®ЇҐа жЁ®л¬Ё бЁб⥬ ¬Ё Ё ¬ иЁ ¬Ё.
Љ®ЄгаҐвл¬Ё вҐе®«®ЈЁп¬Ё пў«повбп CORBA Ё SOM.
я1‘®§¤ ЁҐ DLL бҐаўҐа
ЋЎкҐЄвл ‘ЋЊ ¬®Јгв а §¬Ґй вмбп «ЁЎ® ў DLL, «ЁЎ® ў
ЁбЇ®«пҐ¬ле ¬®¤г«пе, Ё«Ё, б® ўаҐ¬ҐҐ¬, г¤ «Ґле ¬ иЁ е.
Љ®Ј¤ ®Ё а §¬ҐйҐл ў DLL, в® Ё§ўҐбвл Ї®¤ Ё¬ҐҐ¬ бҐаўҐа®ў
ўгв॥© ®Ўа Ў®вЄЁ. ЏаЁ а §¬ҐйҐЁЁ ўгваЁ ЁбЇ®«пҐ¬®Ј® ¬®¤г«п,
Ёе §лў в «®Є «мл¬Ё бҐаўҐа ¬Ё. ЏаЁ а §¬ҐйҐЁЁ г¤ «Ґ®©
¬ иЁҐ Ёе §лў ов а бЇаҐ¤Ґ«Ґл¬Ё ®ЎкҐЄв ¬Ё.
‚§ Ё¬®бўп§м га®ўҐ© ЇаҐ¤бв ў«Ґ Ё¦Ґ:
ЪДДДДДДДДДДДДДДДДДДДДДДДДДї
і‚Ё§г «м®Ґ । ЄвЁа®ў ЁҐі
АДДДДДДДДДДДДДВДДДДДДДДДДДЩ
ЪДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДї
ЪДДДДБДДДДДї ЪДДДДБДДДДї ЪДДДДБДДДДї
і‘ўп§лў ЁҐі іDrag&Dropі і‚Ґ¤аҐЁҐі
АДДДДВДДДДДЩ АДДДДВДДДДЩ АДДДДВДДДДЩ
АДДДДДї і ЪДДДДЩ
ЪДДБДДДДДДДДДБДДДДДДДДДБї
і Uniform Data Transfer і
АДДДДДДДДДДДДВДДДДДДДДДДЩ
ЪДДДДДДДДДДДДДДБДДДДДДДДДДДДї
і‘вагЄвгаЁа®ў лҐ еа Ё«Ёй і
АДДДДДДДДДДДДДДВДДДДДДДДДДДДЩ
ЪДДДДДДДДДДДДБДДДДДДДДДДї
іComponent Object Model і
АДДДДДДДДДДДДДДДДДДДДДДДЩ
6) ЏҐабЇҐЄвЁўл OLE
- OLE Ё§ б।бвў ®Ў¬Ґ ¤ л¬Ё ЇаҐўа вЁ«®бм ў б।бвў®
ў§ Ё¬®¤Ґ©бвўЁп ЇаЁ«®¦ҐЁ© Ё еа ҐЁп ¤ ле;
- ‚ Windows 95 OLE - нв® п¤а® ®ЎкҐЄв®-®аЁҐвЁа®ў ®Ј®
Ї®«м§®ў ⥫мбЄ®Ј® ЁвҐа䥩б ;
- ‚ Windows NT OLE, ®б®ў п RPC, Ўг¤Ґв бҐвҐў®©
вҐе®«®ЈЁҐ© OLE 3.0, Ї®§ў®«по饩 Є«ЁҐвг Ё бҐаўҐаг 室Ёвмбп
а §ле дЁ§ЁзҐбЄЁе ¬ иЁ е.
7) ЌҐ¤®бв вЄЁ OLE
- з१ўлз ©® б«®¦ п вҐе®«®ЈЁп ¤«п а §а Ў®взЁЄ®ў;
- ҐЄ®в®а п Ґб®Ј« б®ў ®бвм ў ЁвҐа䥩б е а §ле
ЇаЁ«®¦ҐЁ©;
- ҐЄ®в®а®Ґ а б宦¤ҐЁҐ ў Ї®пвЁпе "®ЎкҐЄв " ў OLE Ё ЋЋЏ;
- Ґ блв®бвм ў ®в®иҐЁЁ ЇЇ а вле аҐбгаб®ў;
- ва㤮бвЁ ЇҐаҐў®¤ бҐвҐўго вҐе®«®ЈЁо, бўп§ лҐ б
Ё§ з «м®© ®аЁҐвЁа®ў ®бвмо Їа®в®Є®« UTD ®¤Ё®зго ¬ иЁг,
Ё б®бв®пйЁҐ ў Ў®«миЁе ®ЎкҐ¬ е ЇҐаҐ¤ ў Ґ¬ле ¤ ле.
я1’Ґе®«®ЈЁп Їа®ҐЄвЁа®ў Ёп OLE-Є®вҐ©Ґа
Љ Є 㦥 Ўл«® бЄ § ®, а §а Ў®вЄ ЇаЁ«®¦ҐЁп, Ї®¤¤Ґа¦Ёў о饣®
Їа®в®Є®« OLE, пў«пҐвбп з१ўлз ©® б«®¦®© § ¤ 祩. ‘«®¦®бвм
Ї®ўли Ґвбп, Ґб«Ё ®вбгвбвўгов ўпвлҐ ®ЇЁб Ёп нв®Ј® Їа®в®Є®« .
„«п в®Ј®, зв®Ўл Ё¬Ґвм ЇаҐ¤бв ў«ҐЁҐ ® е а ЄвҐаҐ § ¤ з,
ў®§ЁЄ ойЁе ЇаЁ ᮧ¤ ЁЁ OLE-ЇаЁ«®¦ҐЁп, а бᬮваЁ¬ нв Їл ҐЈ®
ᮧ¤ Ёп ЇаЁ¬ҐаҐ ᮧ¤ Ёп OLE-Є®вҐ©Ґа ў Delphi. Delphi б
ҐЈ® б।бвў ¬Ё ўЁ§г «м®Ј® Їа®ҐЄвЁа®ў Ёп Ё Ў®а®¬ Ј®в®ўле
Є®¬Ї®Ґв®ў ¤ Ґв ў®§¬®¦®бвм е®вп Ўл ®Ў®§аҐвм нв Їл ᮧ¤ Ёп
OLE-ЇаЁ«®¦ҐЁп.
1. ’аҐега®ўҐў п ¤аҐб жЁп OLE-®ЎкҐЄв
‚бЇ®¬Ё¬ ваҐега®ўҐўго ¤аҐб жЁо ¤ ле ў Їа®в®Є®«Ґ DDE. ‚
OLE в Є¦Ґ Ї®¤¤Ґа¦Ёў Ґвбп ваҐега®ўҐў п ¤аҐб жЁп ®ЎкҐЄв®ў
б«Ґ¤го饣® ўЁ¤ :
1. Љ« бб OLE-®ЎкҐЄв ®ЇаҐ¤Ґ«пҐв ЇаЁ«®¦ҐЁҐ-бҐаўҐа, Є®в®а®Ґ
ᮧ¤ «® OLE-®ЎкҐЄв. Љ« бб ¤®«¦Ґ Ўлвм ®ЇаҐ¤Ґ«Ґ Є Є ¤«п
бўп§ ®Ј®, в Є Ё ¤«п ўбв஥®Ј® ®ЎкҐЄв .
2. „®Єг¬Ґв OLE-®ЎкҐЄв ®ЇаҐ¤Ґ«пҐв д ©«-Ёбв®зЁЄ, Є®в®ал©
ᮤҐа¦Ёв ¤ лҐ ¤«п ®ЎкҐЄв . „®Єг¬Ґв ¤®«¦Ґ Ўлвм ®ЇаҐ¤Ґ«Ґ
®Ўп§ вҐ«м® в®«мЄ® ¤«п бўп§ ®Ј® ®ЎкҐЄв .
3. ќ«Ґ¬Ґв (item) OLE-®ЎкҐЄв ®ЇаҐ¤Ґ«пҐв, Є Є п з бвм
OLE-¤®Єг¬Ґв ᮤҐа¦Ёв ¤ лҐ ¤«п бўп§лў Ёп Ё«Ё ўбва Ёў Ёп.
ќ«Ґ¬Ґв ЁбЇ®«м§гҐвбп Ґб«Ё Ґ®Ўе®¤Ё¬® ЁбЇ®«м§®ў вм ¬Ґмиго з бвм
¤ ле, 祬 жҐ«л© д ©« ¤®Єг¬Ґв .
2. ЋЎй п е а ЄвҐаЁбвЁЄ вҐе®«®ЈЁЁ ᮧ¤ Ёп OLE-Є«ЁҐв
‘гвм ᮧ¤ Ёп ЇаЁ«®¦ҐЁп OLE-Є«ЁҐв б®бв®Ёв ў ¤®Ў ў«ҐЁЁ ў
д®а¬г - Ј« ў®Ґ ®Є® ЇаЁ«®¦ҐЁп, бЇҐжЁ «м®Ј® ҐўЁ§г «м®Ј®
Є®¬Ї®Ґв TOLEContainer, ЎҐаг饣® бҐЎп ўбҐ дгЄжЁЁ Ї®
§ Јаг§ЄҐ Ё б®еа ҐЁо ®ЎкҐЄв®ў, в Є¦Ґ Ї®¤¤Ґа¦Ёў о饣®
ўгв२Ґ Їа®в®Є®«л OLE, Є®в®алҐ ЁЈ¤Ґ Ґ ¤®Єг¬ҐвЁа®ў л, Ё
Ї®н⮬г б«®¦л ¤«п Ё§г票п. €¬Ґ® Ї®н⮬г и а ббЄ § ЈаҐиЁв
⥤ҐжЁҐ© Є ®ЇЁб ⥫쮬г га®ўо а бᬮв२п OLE.
Ља вЄ® Ё¤Ґп ўлЈ«п¤Ёв б«Ґ¤гойЁ¬ ®Ўа §®¬. Џ®бв஥ЁҐ OLE
ЇаЁ«®¦ҐЁп-Є«ЁҐв бўп§ ® б Ї®¬ҐйҐЁҐ¬ Є®¬Ї®Ґв OleContainer
д®а¬г. Џ®¬ҐйҐЁҐ ®ў®Ј® ®ЎкҐЄв бўп§ ® б ўл§®ў®¬ ¬Ґв®¤
InsertObjectDialog, бзЁвлў ЁҐ ®ЎкҐЄв Ё§ Clipboard - б ўл§®ў®¬
¬Ґв®¤ PasteSpecialDialog.
ЌҐ«м§п Їа®бв® ўбв ўЁвм «оЎ®© д ©« ў Є®вҐ©Ґа. ‚бв ўЁвм
¬®¦® в®«мЄ® д ©«, Є®в®ал© бўп§лў Ґвбп бЁб⥬®© б бҐаўҐа®¬ OLE.
ЏаЁ Ёбв ««пжЁЁ ЇаЁ«®¦ҐЁҐ, ®Ў« ¤ о饥 ў®§¬®¦®бвп¬Ё бҐаўҐа
ॣЁбваЁагҐвбп ў ђҐҐбвॠбЁб⥬л.
„Ґ©бвўЁп, Є®в®алҐ ¬®Јгв ўлЇ®«Ґл б ®ЎкҐЄв®¬ OLE,
®ЇЁблў овбп ў ђҐҐбвॠў а §¤Ґ«Ґ VERB. Ќ ЇаЁ¬Ґа, ¤«п ®ЎкҐЄв
mplayer в ЄЁ¬Ё ¤Ґ©бвўп¬Ё пў«повбп: Edit, Play, Open.
ќвЁ ¤Ґ©бвўЁп еа пвбп ў бў®©б⢥ ObjectVerbs Є®вҐ©Ґа .
€в Є, нв®в Є®¬Ї®Ґв Ї®¬Ґй Ґвбп ў д®а¬г. „«п § Јаг§ЄЁ
Є®¬Ї®Ґв ®ЎкҐЄв®¬ бгйҐбвўгов бЇҐжЁ «млҐ дгЄжЁЁ, ўл§®ў Є®в®але
б®Їа®ў®¦¤ Ґвбп ®вЄалвЁҐ¬ ᮮ⢥вбвўго饣® ¤Ё «®Ј®ў®Ј® ®Є .
ќвЁ дгЄжЁЁ аҐи ов б«Ґ¤гойЁҐ § ¤ зЁ Ї® § Јаг§ЄҐ:
- ᮧ¤ ЁҐ ®ў®Ј® ®ЎкҐЄв ;
- з⥨Ґ ®ЎкҐЄв Ё§ Clipboard;
- ЇҐаҐв бЄЁў ЁҐ ®ЎкҐЄв Ё§ бҐаўҐа .
‡ Јаг§Є Є®¬Ї®Ґв б Ї®¬®ймо ®¤®Ј® Ё§ ЇҐаҐзЁб«Ґле
ў аЁ в®ў б®Їа®ў®¦¤ Ґвбп гбв ®ўЄ®© в ЄЁе бў®©бвў Є®¬Ї®Ґв Є Є
Љ« бб, „®Єг¬Ґв Ё ќ«Ґ¬Ґв.
‘гйҐбвўгҐв ¤ў ў аЁ в бва®©ЄЁ бў®©бвў Є®¬Ї®Ґв -
нв ЇҐ Їа®ҐЄвЁа®ў Ёп ЇаЁ«®¦ҐЁп Ё нв ЇҐ ўлЇ®«ҐЁп.
Ќ нв ЇҐ Їа®ҐЄвЁа®ў Ёп, 室пбм ў б।Ґ а §а Ў®вЄЁ Delphi,
ЄвЁўЁ§ жЁп бў®©бвў Љ« бб, „®Єг¬Ґв Ё ќ«Ґ¬Ґв ЇаЁў®¤Ёв Є ®вЄалвЁо
¤Ё «®Ј®ўле ®Є®, ў Є®в®але ЇаҐ¤« Ј Ґвбп ўлЎа вм вЁЇ OLE-®ЎкҐЄв -
®ўл© Ё«Ё бгйҐбвўгойЁ©, в Є¦Ґ Є« бб, ¤®Єг¬Ґв Ё н«Ґ¬Ґв.
Ќ нв ЇҐ ўлЇ®«ҐЁп ЇаЁ«®¦ҐЁп Ї®¤е®¤пйЁҐ дгЄжЁЁ ўл§лў овбп
Їг⥬ ЄвЁўЁ§ жЁЁ ᮮ⢥вбвўгойЁе ЇгЄв®ў ¬Ґо.
ЏаЁ ўлЎ®аҐ ЋЉ ў ᮮ⢥вбвўго饬 ¤Ё «®Ј®ў®¬ ®ЄҐ ўл§лў Ґвбп
ЇаЁ«®¦ҐЁҐ-бҐаўҐа, ў Є®в®а®¬ ᮧ¤ Ґвбп ®ўл© ®ЎкҐЄв, Ё«Ё Є®в®а®¬г
ЇҐаҐ¤ Ґвбп бгйҐбвўгойЁ© ¤®Єг¬Ґв-Ёбв®зЁЄ, ў § ўЁбЁ¬®бвЁ ®в
ўлЎа ле ®ЇжЁ© ў ¤Ё «®Ј®ў®¬ ®ЄҐ. Џ®б«Ґ । ЄвЁа®ў Ёп ®ЎкҐЄв
¬®¦® ўл©вЁ Ё§ бҐаўҐа , ў Є®¬Ї®ҐвҐ-Є®вҐ©ҐаҐ
ЇаЁ«®¦ҐЁп-Є«ЁҐв ®Є ¦Ґвбп б®еа Ґл¬ ®в। ЄвЁа®ў л© ®ЎкҐЄв.
я23. ЊҐв®¤ЁЄ ᮧ¤ Ёп ЇаЁ«®¦ҐЁп б OLE-Є®вҐ©Ґа®¬
ЊҐв®¤ЁЄ ᮧ¤ Ёп ЇаЁ«®¦ҐЁп б OLE-Є®вҐ©Ґа®¬ ўЄ«оз Ґв ў
ᥡп б«Ґ¤гойЁҐ нв Їл.
1. ‘®§¤ ЁҐ д®а¬л б MDI - ¬®Ј®¤®Єг¬Ґвл¬ ЁвҐа䥩ᮬ.
2. ђ §а Ў®вЄ Їа®жҐ¤гал ўбв ўЄЁ ®ЎкҐЄв®ў.
3. ђ §а Ў®вЄ Їа®жҐ¤гал ЇҐаҐ®б ®ЎкҐЄв®ў Ё§ Clipboard.
4. ђ §а Ў®вЄ Їа®жҐ¤гал ЇҐаҐв бЄЁў Ёп ®ЎкҐЄв®ў.
5. ђ §а Ў®вЄ Їа®жҐ¤га Ї®¤¤Ґа¦ЄЁ еа ҐЁп ®ЎкҐЄв®ў ў д ©« е.
я11. ‘®§¤ ЁҐ д®а¬л б MDI - ¬®Ј®¤®Єг¬Ґвл¬ ЁвҐа䥩ᮬ
Њ®Ј®¤®Єг¬Ґвл© ЁвҐа䥩б - нв® б।бвў®, Ї®§ў®«по饥 ў
ЇаЁ«®¦ҐЁЁ ®вЄалў вм ¬®Ј® ¤®Єг¬Ґв®ў-д ©«®ў, Є ¦¤л© б бў®Ґ¬
®ЄҐ. ЋЄ , Є®в®алҐ ¤®Ў ў«повбп ў ЇаЁ«®¦ҐЁҐ ЇаЁ ®вЄалвЁЁ Є ¦¤®Ј®
¤®Єг¬Ґв , §лў овбп ¤®зҐаЁ¬Ё.
‘®§¤ ЁҐ MDI-ЇаЁ«®¦ҐЁп - Їа®бв п § ¤ з ¤«п Delphi.
„®бв в®з® бў®©бвўг FormStyle Ј« ў®Ј® ®Є ЇаЁ«®¦ҐЁп ЇаЁ¤ вм
§ 票Ґ fsMDIForm, § ⥬ ¤®Ў ўЁвм ®ўго д®а¬г ў ЇаЁ«®¦ҐЁҐ,
бў®©бвўг FormStyle Є®в®а®© ЇаЁ¤ вм § 票Ґ fsMDIChild.
‚ ¤®зҐаоо д®а¬г Ґ®Ўе®¤Ё¬® ¤®Ў ўЁвм Є®¬Ї®Ґв TOleConteiner.
„ ¤Ё¬ б«Ґ¤гойЁҐ Ё¬Ґ ўўҐ¤Ґл¬ ®ЎкҐЄв ¬:
- Ј« ў®© д®а¬Ґ - OLEFrameForm : TOLEFrameForm;
- ¤®зҐаҐ© д®а¬Ґ - OLEObjectForm : TOLEObjectForm;
- OLE-Є®вҐ©Ґаг - OleContainer : TOLEContainer.
ђ §а Ў®вЄ ¬Ґо ЇаЁ«®¦ҐЁп
ЋЎкҐЄв®-®аЁҐвЁа®ў ®Ґ ЇаЁ«®¦ҐЁҐ, зЁ п б Turbo Vision
DOS, а Ў®в Ґв б«Ґ¤гойЁ¬ ®Ўа §®¬. ‘®§¤ Ґвбп ¬Ґо ЇаЁ«®¦ҐЁп, Є
Ї®§ЁжЁп¬ Є®в®а®Ј® "ЇаЁўп§лў овбп" Їа®жҐ¤гал. ЏаЁ ўлЎ®аҐ
Ґ®Ўе®¤Ё¬®© Ї®§ЁжЁЁ ¬Ґо ўл§лў Ґвбп ᮮ⢥вбвўгой п Їа®жҐ¤га .
‚ 襬 б«гз Ґ ¬Ґо ЇаЁ«®¦ҐЁп ¬®¦Ґв Ї®¤ўҐаЈгвмбп
ва бд®а¬ жЁЁ Їг⥬ ¤Ё ¬ЁзҐбЄ®Ј® ¤®Ў ў«ҐЁп ў ҐЈ® Ї®§ЁжЁ©.
‚®-ЇҐаўле, ®® ва бд®а¬ЁагҐвбп ЇаЁ ®вЄалвЁЁ ¤®зҐаҐЈ® ®Є .
‚®-ўв®але, ®® ва бд®а¬ЁагҐвбп ЇаЁ ЄвЁўЁ§ жЁЁ бҐаўҐа ,
Ї®¤¤Ґа¦Ёў о饣® OLE 2.0.
Џ®§ЁжЁЁ, ў Є®в®алҐ ўҐ¤аповбп ®ўлҐ н«Ґ¬Ґвл ¬Ґо ¤®зҐаЁе
®Є® Ё бҐаўҐа , ®ЇаҐ¤Ґ«повбп бў®©бвў®¬ ¬Ґо GroupIndex. ќ«Ґ¬Ґвл
бв а®Ј® ¬Ґо ¬®Јгв Ўлвм "§ вҐавл", ¬®Јгв Ўлвм б¤ўЁгвл. …б«Ё
ЈагЇЇ®ўлҐ Ё¤ҐЄбл б®ўЇ ¤ ов, в® н«Ґ¬Ґвл ¬Ґо бҐаўҐа § ¬Ґй ов
ᮮ⢥вбвўгойЁҐ н«Ґ¬Ґвл ¬Ґо Є®вҐ©Ґа . ќ«Ґ¬Ґвл ¬Ґо б
Ў®«миЁ¬Ё Ё¤ҐЄб ¬Ё а §¬Ґй овбп Їа ўҐҐ ў бва®ЄҐ ¬Ґо.
ЊҐо Ј« ў®Ј® ®Є : File
New
Open
c GroupIndex = 0.
ЊҐо ¤®зҐаЁе ®Є®: File Edit Object
New Insert Deactivate
Open Paste
Save
б GroupIndex = 0, 1, 2 ᮮ⢥вб⢥®.
ђҐ ЄжЁп ўлЎ®а н«Ґ¬Ґв ¬Ґо File|New ®ЇЁблў Ґвбп
б«Ґ¤гойЁ¬Ё ¬Ґв®¤ ¬Ё:
function TOLEFrameForm.CreateChild: TOLEObjectForm;
begin
CreateChild := TOLEObjectForm.Create(Self);
end;
procedure TOLEFrameForm.New1Click(Sender: TObject);
begin
CreateChild
end;
ђҐ ЄжЁЁ ўлЎ®а ¤агЈЁе н«Ґ¬Ґв®ў ¬Ґо - Ё¦Ґ.
я12. ђ §а Ў®вЄ Їа®жҐ¤гал ўбв ўЄЁ ®ЎкҐЄв®ў
‚бв ўЁвм ®ЎкҐЄв ¬®¦®, ўлЎа ў ЇгЄв ¬Ґо Edit|Insert. ‚
Є зҐб⢥ ॠЄжЁЁ ўлЎ®а ᮧ¤ ¤Ё¬ б«Ґ¤гойго Їа®жҐ¤гаг:
procedure TOLEObjectForm.InsertObject1Click(Sender: TObject);
var
Info: Pointer;
begin
if InsertOLEObjectDlg(OLEFrameForm, 0, Info) then
InitializeOLEObject(Info);
end;
ЏаЁ ўл§®ўҐ нв®© Їа®жҐ¤гал ўлЇ®«пҐвбп бЇҐжЁ «м п ¤Ё «®Ј®ў п
дгЄжЁп:
function InsertOLEObjectDlg(Form:TForm;HelpContext:THelpContext;
Var PInitInfo:Pointer).
ќв дгЄжЁп ®вЄалў Ґв бЇҐжЁ «м®Ґ ¤Ё «®Ј®ў®Ґ ®Є®,
Ї®§ў®«по饥 ўлЎа вм вЁЇ OLE-®ЎкҐЄв ¤«п ўбв ўЄЁ, ЇаЁ¬Ґа, Audio
Recorder, Bitmap Image, Video Clip, Wave Sound Ё в.¤.
‘ ¬®Ґ ў ¦®Ґ - нв® в®, зв® ў б«гз Ґ ўлЎ®а вЁЇ ®ЎкҐЄв ,
дгЄжЁп ᮧ¤ Ґв бвагЄвгаг ¤ ле ¤«п ЁЁжЁ «Ё§ жЁЁ OLE-Є®вҐ©Ґа
Ё ў®§ўа й Ґв гЄ § ⥫м нвг бвагЄвгаг ў ЇҐаҐ¬Ґ®© Info. ќв
бвагЄвга Ґ ¤®Єг¬ҐвЁа®ў .
€ЁжЁ «Ё§ жЁп OLE-Є®вҐ©Ґа Їа®Ёб室Ёв, Є®Ј¤ гЄ § ⥫м
®ЇЁб го бвагЄвгаг ЇҐаҐ¤ Ґвбп бў®©бвўг PInitInfo Є®¬Ї®Ґв
OLE-Є®вҐ©Ґа .
‚ 襬 ЇаЁ¬ҐаҐ нв® Їа®Ёбў®¤Ёвбп б Ї®¬®ймо Їа®жҐ¤гал
IntializeOLEObject, Є®в®а п Ё¬ҐҐв б«Ґ¤го饥 ®ЇЁб ЁҐ:
procedure TOLEObjectForm.InitializeOLEObject(Info: Pointer);
begin
OLEContainer.PInitInfo := Info;
ReleaseOLEInitInfo(Info) {®бў®Ў®¦¤ҐЁҐ Ї ¬пвЁ}
end;
ЏаЁ ЁЁжЁ «Ё§ жЁЁ гбв ў«Ёў овбп бў®©бвў Є®¬Ї®Ґв
OLE-Є®вҐ©Ґа ObjClass, ObjDoc, ObjItem ў ᮮ⢥вбвўЁҐ б
б®бв®пЁҐ¬ ¤Ё «®Ј®ў®Ј® ®Є ўбв ўЄЁ ®ЎкҐЄв .
ЏаЁ ЁЁжЁ «Ё§ жЁЁ OLE-Є®вҐ©Ґа ЄвЁўЁ§ЁагҐвбп OLE-бҐаўҐа Ё
ЎҐаҐв ᥡп гЇа ў«ҐЁҐ, Ґб«Ё ®ЎкҐв 㦥 бгйҐбвў®ў «, в® ®
ЇҐаҐ¤ Ґвбп ў бҐаўҐа. Џ®«м§®ў ⥫м ⥯Ґам ¬®¦Ґв । ЄвЁа®ў вм
®ЎкҐЄв Є Є е®зҐв.
Џ®б«Ґ § ўҐа襨п а Ў®вл б ®ЎкҐЄв®¬, ҐЈ® Ґ®Ўе®¤Ё¬®
¤Ґ ЄвЁўЁа®ў вм. „Ґ ЄвЁўЁ§ жЁп Їа®Ё§ў®¤Ёвбп б¤ўЁЈ®¬ д®Єгб Є
¤агЈЁ¬ ®ЎкҐЄв ¬ ЇаЁ«®¦ҐЁп. ‚ ®ЎйҐ¬ б«гз Ґ ¤«п ¤Ґ ЄвЁў жЁЁ
®ЎкҐЄв , Ґ®Ўе®¤Ё¬® гбв ®ўЁвм бў®©бвў® Active OLE-Є®вҐ©Ґа ў
б®бв®пЁҐ False. ‚ ЇаЁ¬ҐаҐ нв® ¤Ґ« Ґв б«Ґ¤гой п Їа®жҐ¤га ,
ўл§лў Ґ¬ п Ё§ ¬Ґо Object|Deactivate:
procedure TOLEObjectForm.Deactivate1Click(Sender: TObject);
begin
OLEContainer.Active := False
end;
я13. ђ §а Ў®вЄ Їа®жҐ¤гал ЇҐаҐ®б ®ЎкҐЄв®ў Ё§ Clipboard
ЌҐЄ®в®алҐ OLE-бҐаўҐал Ї®§ў®«пов Ї®«м§®ў вҐ«о Є®ЇЁа®ў вм
OLE-®ЎкҐЄвл ў Clipboard. ’®Ј¤ ЇаЁ«®¦ҐЁҐ OLE-Є®вҐ©Ґа Ё¬ҐҐв
ў®§¬®¦®бвм Ї®«гзЁвм Ё§ Clipboard- нв®в ®ЎкҐЄв.
„«п нв®Ј® Ґ®Ўе®¤Ё¬® ЁбЇ®«м§®ў вм бЇҐжЁ «мго дгЄжЁо,
®вЄалў ойго ЇаЁ ўл§®ўҐ бЇҐжЁ «м®Ґ ¤Ё «®Ј®ў®Ґ ®Є® ўбв ўЄЁ
®ЎкҐЄв®ў Ё Ё¬Ґойго б«Ґ¤го饥 ®ЇЁб ЁҐ:
Function PasteSpecialDlg(Form : TForm;
Const Fmt : Array of BOLEFormat;
HelpContext : THelpContext;
Var Format : Word;
Var Handle : THandle;
Var PInitInfo : Pinter) : Boolean;
Ј¤Ґ Form - д®а¬ , ў« ¤Ґой п OLE-Є®вҐ©Ґа®¬;
Fmt - ¬ ббЁў § ॣЁбваЁа®ў ле д®а¬ в®ў ®ЎкҐЄв®ў;
HelpContext - ббл«Є а §¤Ґ« Є®вҐЄбв®© Ї®¬®йЁ;
Format - ўлЎа л© вЁЇ д®а¬ в ¤ ле ў Clipboard;
Handle - ббл«Є ¤ лҐ ў Clipboard-Ґ;
PInitInfo - гЄ § ⥫м бвагЄвгаг ¤ ле ¤«п ЁЁжЁ «Ё§ жЁЁ
OLE-Є®вҐ©Ґа .
ђ бᬮваЁ¬ Ў®«ҐҐ Ї®¤а®Ў® ¬ ббЁў § ॣЁбваЁа®ў ле д®а¬ в®ў
OLE-®ЎкҐЄв®ў.
ђ §¬Ґа®бвм нв®Ј® ¬ ббЁў ®ЇаҐ¤Ґ«пҐвбп Є®«ЁзҐбвў®¬ д®а¬ в®ў
Clipboard- , Є®в®алҐ ¤®«¦л ў®бЇаЁЁ¬ вмбп OLE-Є®вҐ©Ґа®¬. ‚
襬 б«гз Ґ ¬л Ї« Ёа㥬, зв®Ўл Є®вҐ©Ґа ў®бЇаЁЁ¬ « ¤ў
д®а¬ в - бўп§ лҐ ®ЎкҐЄвл Ё ўбва®ҐлҐ ®ЎкҐЄвл, Ї®н⮬㠬 ббЁў
д®а¬ в®ў, ЇҐаҐ¤ ў Ґ¬л© дгЄжЁЁ PasteSpecialDlg, ¬®¦Ґв Ё¬Ґвм
б«Ґ¤гойЁ© ўЁ¤:
Fmts : Array[0..1] Of BOLEFormat.
’ЁЇ BOLEFormat Ё¬ҐҐв б«Ґ¤гойго бвагЄвгаг:
Type
BOLEFormat = Record
fmtId : Word; {Ё¤ҐвЁдЁЄ в®а д®а¬ в }
fmtName : Array[0..31] Of Char; {Ё¬п вЁЇ ®ЎкҐЄв ,
Є®в®а®Ґ д®а¬ЁагҐв бҐаўҐа, ЇаЁ¬Ґа, 'Paintbrush Picture Object' Ё
Є®в®а®Ґ Ї®пў«пҐвбп ў бЇЁбЄҐ ў®§¬®¦ле вЁЇ®ў ®ЎкҐЄв®ў ў ¤Ё «®Ј®ў®¬
®ЄҐ}
fmtResultName : Array[0..31] Of Char; {१г«мвЁаго饥 Ё¬п
вЁЇ ®ЎкҐЄв , Ї®пў«по饥бп ў Ї®«Ґ १г«мвЁаго饣® Ё¬ҐЁ ў
¤Ё «®Ј®ў®¬ ®ЄҐ}
fmtIsLinkable : Boolean; {true - ¤«п бўп§ ®Ј® ®ЎкҐЄв ;
false - ¤«п ўбв஥®Ј®}
fmtMedium : BOLEMeduium; {зЁб«Ґ п Є®бв в ¤«п
®ЇаҐ¤Ґ«ҐЁп вЁЇ ¤ ле ®ЎкҐЄв , ¬.Ў. BOLE_MED_STREAM - ¤«п
бўп§ ®Ј® ®ЎкҐЄв Ё«Ё BOLE_MED_STORAGE - ¤«п ўбв஥®Ј®
®ЎкҐЄв . „«п ўлзЁб«ҐЁп ЁбЇ®«м§гҐвбп дгЄжЁп BOLEMediumCalc}
End {BOLEFormat};
ќвЁ д®а¬ вл ¤®«¦л Ўлвм § ॣЁбваЁа®ў л ў Clipboard-Ґ.
ђҐЈЁбва жЁп д®а¬ в®ў б®бв®Ёв ў ўл§®ўҐ бЇҐжЁ «м®© дгЄжЁЁ,
Є®в®а®© ЇҐаҐ¤ Ґвбп бва®Є б §ў ЁҐ¬ д®а¬ в , ў®§ўа й Ґвбп
Ё¤ҐвЁдЁЄ в®а § ॣЁбваЁа®ў ®Ј® д®а¬ в . ЏаЁ¬Ґал ўл§®ў дгЄжЁЁ
ॣЁбва жЁЁ ЇаҐ¤бв ў«Ґ Ё¦Ґ:
FLinkClipFmt := RegisterClipboardFormat('Link Source');
FEmbedClipFmt := RegisterClipboardFormat('Embedded Object');
Ј¤Ґ FLinkClipFmt Ё FEmbedClipFmt - ЇҐаҐ¬ҐлҐ вЁЇ Word, ў
Є®в®алҐ ў®§ўа й овбп Ё¤ҐвЁдЁЄ в®ал д®а¬ в®ў Ї®б«Ґ
ॣЁбва жЁЁ.
Џ®б«Ґ ॣЁбва жЁЁ Ґ®Ўе®¤Ё¬® § Ї®«Ёвм ¬ ббЁў д®а¬ в®ў.
ђҐЈЁбва жЁп д®а¬ в®ў Ё § Ї®«ҐЁҐ ¬ ббЁў д®а¬ в®ў ¤®«¦л
Ўлвм Їа®Ё§ўҐ¤Ґл з «м®¬ нв ЇҐ а Ў®вл ЇаЁ«®¦ҐЁп-Є®вҐ©Ґа .
Џ®н⮬г нвЁ ¤Ґ©бвўЁп ¬®Јгв Ўлвм Ї®¬ҐйҐл ў Їа®жҐ¤гаг, ўл§лў Ґ¬го
ЇаЁ ᮧ¤ ЁЁ Ј« ў®© д®а¬л, ЇаЁ¬Ґа:
procedure TOLEFrameForm.FormCreate(Sender:TObject)
begin
FLinkClipFmt := RegisterClipboardFormat('Link Source');
FEmbedClipFmt := RegisterClipboardFormat('Embedded Object');
Fmts[0].fmtId := FEmbedClipFmt;
Fmts[0].fmtMedium := BOLEMediumCalc(FEmbedClipFmt);
Fmts[0].fmtIsLinkable := False;
StrPCopy(Fmts[0].fmtName,'%s');
StrPCopy(Fmts[0].fmtResultName,'%s');
Fmts[0].fmtId := FLinkClipFmt;
Fmts[0].fmtMedium := BOLEMediumCalc(FLinkClipFmt);
Fmts[0].fmtIsLinkable := True;
StrPCopy(Fmts[0].fmtName,'%s');
StrPCopy(Fmts[0].fmtResultName,'%s');
end;
Џ®б«Ґ ॣЁбва жЁЁ д®а¬ в®ў Ё § Ї®«ҐЁп ¬ ббЁў , ®ЇЁблў ойҐ-
Ј® д®а¬ вл, ў®§¬®¦® ®бгйҐбвў«ҐЁҐ ўбв ўЄЁ ®ЎкҐЄв Ё§ Clipboard.
„«п нв®Ј® Ё§ ЇгЄв ¬Ґо Edit|Paste ¬®¦® ўл§лў вм б«Ґ¤гойго Їа®-
楤гаг:
procedure TOLEObjectForm.PasteSpecial1Click(Sender: TObject);
var
ClipFmt : Word;
DataHand : THandle;
Info : Pointer;
begin
if PasteSpecialEnabled(Self, OLEFrameForm.Fmts) then begin
if PasteSpecialDlg(Self, OLEFrameForm.Fmts, 0,
ClipFmt, DataHand, Info) then begin
InitializeOLEObject(Info);
end;
end;
end;
‡¤Ґбм дгЄжЁп PasteSpecialEnabled б з « Їа®ўҐапҐв, Ґбвм «Ё
ў Clipboard-Ґ ®¤Ё Ё§ д®а¬ в®ў, ®ЇаҐ¤Ґ«Ґле ў Fmts - ¬ ббЁўҐ, Ё
в®«мЄ® ў б«гз Ґ «ЁзЁп в Є®Ј® д®а¬ в , ўл§лў Ґвбп дгЄжЁп Pas-
teSpecialDlg, Є®в®а п в Є¦Ґ ў®§ўа й Ґв гЄ § ⥫м бвагЄвгаг
¤ ле ¤«п ЁЁжЁ «Ё§ жЁЁ OLE-Є®вҐ©Ґа .
я14. ђ §а Ў®вЄ Їа®жҐ¤гал ЇҐаҐв бЄЁў Ёп ®ЎкҐЄв®ў
ЏҐаҐв бЄЁў ЁҐ OLE-®ЎкҐЄв Ё§ бҐаўҐа Ё ®ЇгбЄ ЁҐ ҐЈ® ў
OLE-Є®вҐ©Ґа - нв® ЁЎ®«ҐҐ бўп§ вм Ё«Ё ўбва®Ёвм ®ЎкҐЄв. ‚ н⮬
б«гз Ґ Ґв Ґ®Ўе®¤Ё¬®бвЁ ўл§лў вм бЇҐжЁ «млҐ ¤Ё «®Ј®ўлҐ дгЄжЁЁ
ᮧ¤ Ёп ®ў®Ј® ®ЎкҐЄв Ё«Ё звҐЁп ®ЎкҐЄв Ё§ Clipboard- .
—в®Ўл д®а¬ Ё¬Ґ« ў®§¬®¦®бвм ЇаЁпвм ЇҐаҐв бЄЁў Ґ¬л© Ё§
бҐаўҐа ®ЎкҐЄв, ® ¤®«¦ Ўлвм § ॣЁбваЁа®ў ў б।Ґ Є Є "¬Ё-
иҐм ¤«п ЇҐаҐв бЄЁў Ёп". ќв® ¤Ґ« Ґвбп ўл§®ў®¬ бЇҐжЁ «м®© дгЄ-
жЁЁ б«Ґ¤го饣® ўЁ¤ :
procedure RegisterFormAsOleDropTarget(Form : TForm;
Const Fmts : Array Of BOLEFormat);
ќв®в ўл§®ў 楫Ґб®®Ўа §® ўЄ«озЁвм ў Їа®жҐ¤гаг
TOLEFrameForm.FormCreate.
Љ®Ј¤ ®ЎкҐЄв ЇҐаҐв бЄЁў Ґвбп д®а¬г, Ё¬ҐҐв ¬Ґбв® б®ЎлвЁҐ
OnDragDrop. ”®а¬ ЇаЁ«®¦ҐЁп Ё¬ҐҐв ®Ўа Ў®взЁЄ нв®Ј® б®ЎлвЁп
FormDragDrop. Џа®жҐ¤га -®Ўа Ў®взЁЄ Ё¬ҐҐв Ї а ¬Ґва Source, ў
Є®в®а®¬ Ґ© ЇҐаҐ¤ Ґвбп ЇҐаҐв бЄЁў Ґ¬л© ®ЎкҐЄв Є Є б«Ґ¤ЁЄ Є« бб
TOLEDropNotify. ќв®в Є« бб Ё¬ҐҐв бў®©бвў® PInitInfo,
ᮮ⢥вбвўго饥 бў®©бвўг PInitInfo OLE-Є®вҐ©Ґа . Џ®н⮬㠤«п
ЁЁжЁ «Ё§ жЁЁ Є®вҐ©Ґа ЇаЁ ЇҐаҐв бЄЁў ЁЁ ¤®бв в®з® ЇаЁбў®Ёвм
Ї®«о Є®вҐ©Ґа PInitInfo § 票Ґ Ї®«п PInitInfo ЇҐаҐ¤ ў Ґ¬®Ј®
Ї а ¬Ґва Є Є б«Ґ¤ЁЄ TOLEDropNotify. ќв® ¤Ґ« Ґв б«Ґ¤гой п
Їа®жҐ¤га :
procedure TOLEFrameForm.FormDragDrop(Sender, Source: TObject;
X, Y: Integer);
var
NewChild : TOLEObjectForm;
begin
if Source is TOLEDropNotify then begin
NewChild := CreateChild;
with Source as TOLEDropNotify do begin
NewChild.OLEContainer.PInitInfo := PInitInfo;
end {with};
end;
end;
Ћбў®Ў®¦¤ вм Ї ¬пвм, ўл¤Ґ«Ґго Ї®¤ InitInfo, ў н⮬ б«гз Ґ
Ґв Ґ®Ўе®¤Ё¬®бвЁ, в.Є. Delphi ЎҐаҐв н⮠ᥡп.
я15. ђ §а Ў®вЄ Їа®жҐ¤га Ї®¤¤Ґа¦ЄЁ еа ҐЁп ®ЎкҐЄв®ў ў д ©« е
”гЄжЁЁ б®еа ҐЁп OLE-®ЎкҐЄв®ў ў д ©« е Ё ў®ббв ®ў«ҐЁп Ёе
Ё§ д ©«®ў Delphi в Є¦Ґ ЎҐаҐв ᥡп.
„«п б®еа ҐЁп OLE-®ЎкҐЄв ў д ©«Ґ Ґ®Ўе®¤Ё¬® ЁбЇ®«м§®ў вм
¬Ґв®¤ SaveToFile Є®¬Ї®Ґв OLE-Є®вҐ©Ґа . „«п гЄ § Ёп Ё¬ҐЁ
д ©« , ў Є®в®а®¬ 㦮 б®еа Ёвм ®ЎкҐЄв, ¬®¦®
ЁбЇ®«м§®ў вм Є®¬Ї®Ґв TSaveDialog, ®ЎҐбЇҐзЁў ойЁ© ®вЄалвЁҐ
бв ¤ ав®Ј® ¤Ё «®Ј®ў®Ј® ®Є б®еа ҐЁп д ©« .
Џа®жҐ¤га , ўл§лў Ґ¬ п Ё§ ЇгЄв ¬Ґо File|Save, ¬®¦Ґв
ўлЈ«п¤Ґвм б«Ґ¤гойЁ¬ ®Ўа §®¬:
procedure TOLEObjectForm.SaveAsClick(Sender: TObject);
begin
if SaveAsDialog.Execute then
OLEContainer.SaveToFile(SaveAsDialog.FileName);
end;
„«п § Јаг§ЄЁ OLE-®ЎкҐЄв Ё§ д ©« , Ґ®Ўе®¤Ё¬® ЁбЇ®«м§®ў вм
¬Ґв®¤ LoadFromFile Є®¬Ї®Ґв OLE-Є®вҐ©Ґа . „«п гЄ § Ёп Ё¬ҐЁ
д ©« , Ё§ Є®в®а®Ј® вॡгҐвбп § Јаг§Ёвм ®ЎкҐЄв, ¬®¦® ЁбЇ®«м§®ў вм
Є®¬Ї®Ґв TOpenDialog, ®ЎҐбЇҐзЁў ойЁ© ®вЄалвЁҐ бв ¤ ав®Ј®
¤Ё «®Ј®ў®Ј® ®Є ®вЄалвЁп д ©« .
Џа®жҐ¤га , ўл§лў Ґ¬ п Ё§ ЇгЄв ¬Ґо File|Open, ¬®¦Ґв
ўлЈ«п¤Ґвм б«Ґ¤гойЁ¬ ®Ўа §®¬:
procedure TOLEFrameForm.OpenClick(Sender: TObject);
Var
NewChild: TOLEObjectForm;
begin
if OpenDialog.Execute then begin
NewChild := CreateChild;
NewChild.OLEContainer.LoadFromFile(OpenDialog.FileName);
end;
end;
я2‚лў®¤л
1. Љ ¦¤л© OLE-®ЎкҐЄв ¤®«¦Ґ еа Ёвмбп ў б®Ўб⢥®¬
OLE-Є®вҐ©ҐаҐ. ЂЄвЁўЁ§ жЁп OLE-бҐаўҐа Їа®Ё§ў®¤Ёвбп ¤ў®©л¬
饫窮¬ «Ґў®© Є« ўЁиЁ ¬лиЁ, Є®Ј¤ Єгаб®а ¬лиЁ е®¤Ёвбп ў Ї«®й ¤Ё
Є®вҐ©Ґа .
„«п гЇа ў«ҐЁп Ї®§ЁжЁп¬Ё ¬Ґо бҐаўҐа Ё Є«ЁҐв , Ґ®Ўе®¤Ё¬®
Ї®«м§®ў вмбп § 票ﬨ бў®©бвў GroupIndex Є®¬Ї®Ґв®ў ¬Ґо.
2. ‚бв ўЄ ®ЎкҐЄв®ў Їа®Ё§ў®¤Ёвбп б Ї®¬®ймо бЇҐжЁ «м®©
¤Ё «®Ј®ў®© дгЄжЁЁ InsertOLEObjectDlg, ў®§ўа й о饩 Ёд®а¬ жЁо
¤«п ЁЁжЁ «Ё§ жЁЁ Є®вҐ©Ґа ¬Ґв®¤®¬ InitializeOLEObject.
3. „«п ®ЎҐбЇҐзҐЁп ў®§¬®¦®бвЁ з⥨п OLE-®ЎкҐЄв®ў Ё§
Clipboard- , Ґ®Ўе®¤Ё¬® § ॣЁбваЁа®ў вм д®а¬ вл OLE-®ЎкҐЄв®ў б
Ї®¬®ймо дгЄжЁЁ RegisterClipboardFormat, Ё бд®а¬Ёа®ў вм ¬ ббЁўл,
®ЇЁблў ойЁҐ нвЁ д®а¬ вл.
‡ ⥬ Ґ®Ўе®¤Ё¬® ЁбЇ®«м§®ў вм дгЄжЁо PasteSpecialDlg,
ў®§ўа й ойго Ёд®а¬ жЁо ¤«п ЁЁжЁ «Ё§ жЁЁ OLE-Є®вҐ©Ґа .
4. „«п ЇҐаҐв бЄЁў Ёп ®ЎкҐЄв®ў ¬Ґв®¤®¬ Drag&Drop, Ґ®Ўе®¤Ё¬®
д®а¬г § ॣЁбваЁа®ў вм Є Є ¬ЁиҐм ¤«п ЇҐаҐв бЄЁў Ёп б Ї®¬®ймо
¬Ґв®¤ RegisterFormAsOLEDropTarget.
‚ ®Ўа Ў®взЁЄҐ б®ЎлвЁ© OnDragDrop Ґ®Ўе®¤Ё¬® Ёбв®зЁЄ б®ЎлвЁп
а бб¬ ваЁў вм Є Є б«Ґ¤ЁЄ Є« бб TOLEDropNotify, Ё¬Ґо饣®
бвагЄвгаг ¤ ле ¤«п ЁЁжЁ «Ё§ жЁЁ OLE-Є®вҐ©Ґа .
5. „«п а Ў®вл б д ©« ¬Ё ®ЎкҐЄв®ў б«Ґ¤гҐв ЁбЇ®«м§®ў вм ¬Ґв®¤л
Є®¬Ї®Ґв OLE-Є®вҐ©Ґа LoadFromFile Ё SaveToFile.