Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Delphi. Π’Ρ€ΡŽΠΊΠΈ ΠΈ эффСкты». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 42

Автор Π’Π°Π»Π΅Ρ€ΠΈΠΉ Борисок

Π’ этом Ρ€Π°Π·Π΄Π΅Π»Π΅ ΠΌΡ‹ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ остановимся Π½Π° рассмотрСнии практичСских ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² использования БОМ-сСрвСра Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° Microsoft Word. Достаточно популярный Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ ΠΎΠ±ΡˆΠΈΡ€Π½Ρ‹ΠΌ Π½Π°Π±ΠΎΡ€ΠΎΠΌ возмоТностСй, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ (Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎΠ΅ созданиС ΠΈ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²) ΠΈ с ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ БОМ. ОсновноС удобство послСднСго ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ€ΡƒΡ‚ΠΈΠ½Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ составлСния ΠΎΡ‚Ρ‡Π΅Ρ‚ΠΎΠ². Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°ΠΌ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ Π² ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ°Ρ… построСния ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ² Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°Π½Π΅Π΅ ΡƒΠΆΠ΅ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΈΡΡŒ. ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния БОМ прСдставляСт собой ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ посрСдством Π²Ρ‹Π·ΠΎΠ²Π° ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ сСрвСра ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ манипуляции Π½Π°Π΄ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ. Π’ Microsoft Word это ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ написаниС тСкста Π² установлСнном Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ ΠΈ Ρ‚. Π΄.

Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€ прилоТСния, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ Microsoft Word, Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Π² Π½Π΅Π³ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ тСкст, Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ ΠΈ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ Π² Ρ„Π°ΠΉΠ». Π’ цСлях Π½Π°ΠΈΠ»ΡƒΡ‡ΡˆΠ΅Π³ΠΎ понимания ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ² использования ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² БОМ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ срСды Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. Π˜Ρ‚Π°ΠΊ, приступим ΠΊ созданию прилоТСния. Для Π½Π°Ρ‡Π°Π»Π° создаСм Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΈ ΠΏΠΎΠΌΠ΅Ρ‰Π°Π΅ΠΌ Π½Π° Ρ„ΠΎΡ€ΠΌΡƒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ:

β€’ открытия прилоТСния Microsoft Word;

β€’ Π²Ρ‹Π²ΠΎΠ΄Π° тСкста;

β€’ добавлСния Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹;

β€’ сохранСния Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°;

β€’ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Microsoft Word.

ΠœΡ‹ Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹, поэтому добавляСм Π² ΡΠ΅ΠΊΡ†ΠΈΡŽ uses ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ComOb j. Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с БОМ-сСрвСром Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° Π½Π°ΠΌ понадобится ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ OLE. ДобавляСм ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Ρ‚ΠΈΠΏΠ° OleVariant:

...

var

//ΠžΠ±ΡŠΠ΅ΠΊΡ‚ OLE

Wrd: OleVariant;

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΊΠ½ΠΎΠΏΠΊΠΈ запуска Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π²ΠΈΠ΄ (листинг 9.2).

...

Листинг 9.2.

Запуск Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° Microsoft Word

procedure TFormWord.bnOpenWordClick(Sender: TObject);

begin

//Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚

Wrd := CreateOleObject(\'Word.Application\');

//Π”Π΅Π»Π°Π΅ΠΌ Π²ΠΈΠ΄ΠΈΠΌΡ‹ΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅

Wrd.Visible := true;

//ДобавляСм Π½ΠΎΠ²Ρ‹ΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚

Wrd.Documents.Add;

end;

ПослС ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° создаСм Π½ΠΎΠ²Ρ‹ΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚, ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π°ΠΊΡ‚ΠΈΠ²ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π² (ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΠ² Π½Π° экранС) ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. ПослС Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ Microsoft Word Π·Π°ΠΏΡƒΡ‰Π΅Π½ ΠΈ Π² Π½Π΅ΠΌ создан Π½ΠΎΠ²Ρ‹ΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚, ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ тСкст. Для этого опрСдСляСм ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΊΠ½ΠΎΠΏΠΊΠΈ Π²Ρ‹Π²ΠΎΠ΄Π° тСкста (листинг 9.3).

...

Листинг 9.3.

Π’Ρ‹Π²ΠΎΠ΄ тСкста Π² Microsoft Word

procedure TFormWord.bnSetTextClick(Sender: TObject);

begin

//ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° записи тСкста

//УстанавливаСм ΡˆΡ€ΠΈΡ„Ρ‚

Wrd.Selection.Font.Size := 20;

Wrd.Selection.Font.Bold := true;

//ПишСм тСкст

Wrd.Selection.TypeText(\'ВСхнология COM являСтся ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· соврСмСнных\');

Wrd.Selection.TypeText(\'Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ мСТпроцСссного взаимодСйствия\'#13#10#13#10);

//Π—Π°Π΄Π°Π΅ΠΌ Π½ΠΎΠ²Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΡˆΡ€ΠΈΡ„Ρ‚Π°

Wrd.Selection.Font.Size := 12;

Wrd.Selection.Font.Bold := false;

Wrd.Selection.Font.Italic := true;

Wrd.Selection.TypeText(\'Подпись: \');

Wrd.Selection.Font.Bold := true;

Wrd.Selection.TypeText(\'Delphi\'#13#10#13#10);

end;

Особой слоТности Π΄Π°Π½Π½Ρ‹ΠΉ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ настройка ΡˆΡ€ΠΈΡ„Ρ‚Π° ΠΈ Π²Ρ‹Π²ΠΎΠ΄ тСста производятся посрСдством ΠΈΠ½Ρ‚ΡƒΠΈΡ‚ΠΈΠ²Π½ΠΎ понятных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ Π·Π°Π΄Π°Π½ΠΈΠ΅ΠΌ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… свойств. Но Π½Π°Π΄ΠΎ ΠΏΠΎΡΡΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π½Π°Π±ΠΎΡ€ символов # 13 # 10 эквивалСнтСн ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Ρƒ Π½Π° Π½ΠΎΠ²ΡƒΡŽ строку.

ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° добавлСния Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ являСтся достаточно простой ΠΈ выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ (листинг 9.4).

...

Листинг 9.4.

Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹

procedure TFormWord.bnAddTableClick(Sender: TObject);

begin

//ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° добавлСния Π½ΠΎΠ²ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹

Wrd.ActiveDocument.Tables.Add(Wrd.Selection.Range,3,3);

end;

Π’Π°Π±Π»ΠΈΡ†Π° содСрТит Ρ‚Ρ€ΠΈ столбца ΠΈ ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΆΠ΅ строк. Π”Π°Π»Π΅Π΅ слСдуСт ΠΏΠΎΡΡΠ½ΠΈΡ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ наТатия ΠΊΠ½ΠΎΠΏΠΊΠΈ сохранСния Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° (листинг 9.5).

...

Листинг 9.5.

Π‘ΠΎΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° Microsoft Word

procedure TFormWord.bnSaveClick(Sender: TObject);

begin

//Π‘ΠΎΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°

Wrd.ActiveDocument.SaveAs(ExtractFilePath(Application.EXEName) +

\'_result.DOC\');

end;

Π‘ΠΎΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ осущСствляСтся ΠΏΡƒΡ‚Π΅ΠΌ Π²Ρ‹Π·ΠΎΠ²Π° MeTOflaSaveAs ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ActiveDocument, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π² качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΏΡƒΡ‚ΡŒ ΠΊ Ρ„Π°ΠΉΠ»Ρƒ. ПослС наТатия ΠΊΠ½ΠΎΠΏΠΊΠΈ сохранСния Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ с тСкстом Π±ΡƒΠ΄Π΅Ρ‚ записан Π² Ρ„Π°ΠΉΠ» (result. doc) ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°, ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π±Ρ‹Π»Π° Π·Π°ΠΏΡƒΡ‰Π΅Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°.

ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Ρ€Π°Π±ΠΎΡ‚Ρ‹ основана Π½Π° Π²Ρ‹Π·ΠΎΠ²Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Quit (листинг 9.6).

...

Листинг 9.6.

Π—Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Microsoft Word

procedure TFormWord.bnExitWordClick(Sender: TObject);

begin

//Π—Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ прилоТСния

Wrd.Quit;

end;

РассмотрСнноС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ являСтся ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹ΠΌ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠΌ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ»ΡƒΠΆΠΈΡ‚ΡŒ ΠΎΡ‚ΠΏΡ€Π°Π²Π½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ создания Π±ΠΎΠ»Π΅Π΅ слоТных ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ автоматичСского составлСния ΠΎΡ‚Ρ‡Π΅Ρ‚ΠΎΠ² ΠΈ Ρ‚. ΠΏ.

Π”Π°Π»Π΅Π΅ приступим ΠΊ созданию прилоТСния, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒΡΡ ΠΊ сСрвСру COM Microsoft Word ΠΈ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ тСкст, Π΄Π°Ρ‚Ρƒ ΠΈ врСмя Π²Ρ‹Π²ΠΎΠ΄Π° этого тСкста Π² Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ ΠΏΡ€ΠΈ Π΅Π³ΠΎ смСнС (ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ). На этот Ρ€Π°Π· ΠΌΡ‹ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ WordDocument ΠΈ WordApplication с Π²ΠΊΠ»Π°Π΄ΠΊΠΈ Servers.

Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΈ Π½Π° Π³Π»Π°Π²Π½ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ прилоТСния ΠΏΠΎΠΌΠ΅Ρ‰Π°Π΅ΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ WordDocument nWordApplication. Π”Π°Π»Π΅Π΅ устанавливаСм CBoftcTBoConnectKind ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° Wo Π³ dApp licationBc kRunni ng I ns t anc e, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ свойства AutoConnect Π² True. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Microsoft Word ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒΡΡ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚, Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡΡ ΠΊ ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΌΡƒ сСрвСру. ΠžΡΠ½ΠΎΠ²Π½ΡƒΡŽ ΠΏΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Ρ†Π΅Π½Π½ΠΎΡΡ‚ΡŒ для нас прСдставляСт ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ опрСдСлСния Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π² Π½Π΅Π³ΠΎ тСкста, Π΄Π°Ρ‚Ρ‹ ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ (листинг 9.7).

...

Листинг 9.7.

РСакция Π½Π° смСну Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°

procedure TFormActiveWord.WordApplicationActiveDocumentChange

(Sender: TObject);

begin

//ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΡΡ ΠΊ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌΡƒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρƒ

WordDocumentNew.ConnectTo( WordApplicationActive.ActiveDocument);

//ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ добавляСт Π½ΠΎΠ²ΡƒΡŽ строку Π² Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚

WordDocumentNew.Range.InsertAfter(#13#10+\'ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΊ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρƒ\'+#13#10+

WordApplicationActive.ActiveDocument.Get_FullName+\' ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ :\'+ DateTimeToStr(Now));

end;

Как Π²Ρ‹ Π·Π°ΠΌΠ΅Ρ‚ΠΈΠ»ΠΈ, ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΊ ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΌΡƒ сСрвСру происходит ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· послС смСны Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°. Π’ этот ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π² содСрТимоС Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° записываСтся информация: тСкстовая строка, Π΄Π°Ρ‚Π° ΠΈ врСмя ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° ΠΊ этому Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρƒ.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ этого прилоТСния, запуститС Microsoft Word ΠΈ создайтС Π² Π½Π΅ΠΌ Π΄Π²Π° Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°. ЗапуститС созданный ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΈ ΠΏΠΎΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎ Π°ΠΊΡ‚ΠΈΠ²ΠΈΠ·ΠΈΡ€ΡƒΠΉΡ‚Π΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ (Ρ‰Π΅Π»Ρ‡ΠΊΠΎΠΌ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΌΡ‹ΡˆΠΈ Π½Π° ПанСли Π·Π°Π΄Π°Ρ‡).

Π’Ρ€ΡŽΠΊΠΈ Π² Microsoft Excel

НС ΠΌΠ΅Π½Π΅Π΅ популярным ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΈΠ· ΠΏΠ°ΠΊΠ΅Ρ‚Π° Microsoft Office являСтся Microsoft Excel. Π­Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с элСктронными Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ. Как ΠΈ ΡƒΠΆΠ΅ Π·Π½Π°ΠΊΠΎΠΌΠΎΠ΅ Π½Π°ΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Microsoft Word, Microsoft Excel Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ создания ΠΈ рСдактирования Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² (Π² Π΄Π°Π½Π½ΠΎΠΌ случаС Ρ‚Π°Π±Π»ΠΈΡ†) посрСдством БОМ. ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° использования Microsoft Excel ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½Π° прСдоставляСт ΡˆΠΈΡ€ΠΎΠΊΠΈΠΉ спСктр возмоТностСй ΠΏΠΎ ΠΏΠΎΡΡ‚Ρ€ΠΎΠ΅Π½ΠΈΡŽ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌ, Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ², ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΡŽ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… расчСтов ΠΈ ΠΏΡ€. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π² качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° создадим ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ запуск Microsoft Excel, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠΉ ΠΊΠ½ΠΈΠ³ΠΈ, созданиС листа ΠΈ ΠΏΠΎΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ Π² Π΅Π³ΠΎ ячСйки тСкста ΠΈ Ρ„ΠΎΡ€ΠΌΡƒΠ».

Как ΠΈ Π² случаС с Microsoft Word, Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ THnaOleVariant. Но ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ свойства БОМ-сСрвСра ΠΏΠΎΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ. Рассмотрим исходный тСкст прилоТСния для выполнСния нСслоТных ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ с сСрвСром Microsoft Excel (листинг 9.8).

...

Листинг 9.8.

Π Π°Π±ΠΎΡ‚Π° с Microsoft Excel

unit COMinExcel;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics,

Controls, Forms,

Dialogs,

//Π’ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с COM-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ

ComObj;

type

TFormCOMExcel = class(TForm)

//ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°, вызываСмая ΠΏΡ€ΠΈ создании Ρ„ΠΎΡ€ΠΌΡ‹

procedure FormCreate(Sender: TObject);

//ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°, вызываСмая ΠΏΡ€ΠΈ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ прилоТСния

procedure FormDestroy(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

FormCOMExcel: TFormCOMExcel;

//ОбъявлСниС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° OleVariant с ΠΈΠΌΠ΅Π½Π΅ΠΌ Microsoft Excel

Excel: OleVariant;

implementation

{$R *.dfm}

procedure TFormCOMExcel.FormCreate(Sender: TObject);

begin

//Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚

Excel := CreateOleObject(\'Excel.Application\');

//УстанавливаСм Π²ΠΈΠ΄ΠΈΠΌΡ‹ΠΌ ΠΎΠΊΠ½ΠΎ прилоТСния Microsoft Excel

Excel.Visible := true;

//ДобавляСм Π½ΠΎΠ²ΡƒΡŽ ΠΊΠ½ΠΈΠ³Ρƒ

Excel.Application.Workbooks.Add;

//Π’Π²ΠΎΠ΄ΠΈΠΌ тСкст Π² ячСйку с индСксом E5

Excel.Application.Worksheets.Item[\'Лист1\'].

Cells.Item[5,5].FormulaR1C1 := \'! Π’Π•ΠšΠ‘Π’ !\

//Π—Π°Π΄Π°Π΅ΠΌ характСристики ΡˆΡ€ΠΈΡ„Ρ‚Π°

Excel.Application.Worksheets.Item[\'Лист1\'].

Cells.Item[1,1].Font.Bold := true;

//Π’ ячСйку с индСксом A1 записываСм Ρ„ΠΎΡ€ΠΌΡƒΠ»Ρƒ

Excel.Application.Worksheets.Item[\'Лист1\'].

Cells.Item[1,1].FormulaR1C1 := \'=18*2\

end;

procedure TFormCOMExcel.FormDestroy(Sender: TObject);

begin

//Π—Π°ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Microsoft Excel

Excel.Quit;

end;

end.

ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ листинг дСмонстрируСт основы ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ управлСния ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ Microsoft Excel. Запуск Microsoft Excel, Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ячССк Π½ΠΎΠ²ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ происходит Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ FormCreate.

Π’ΠΎ врСмя создания Π³Π»Π°Π²Π½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΡ‹ прилоТСния-ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Π½Π° экранС появится ΠΎΠΊΠ½ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Microsoft Excel с числом Π² ячСйкС с индСксом А1 ΠΈ тСкстом Π² ячСйкС с индСксом Π•5. Π₯отя Π² ячСйку с индСксом А1 ΠΌΡ‹ записывали =18*2, Π½Π° экранС Π² этой ячСйкС Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒΡΡ 32, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Microsoft Excel автоматичСски ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ выраТСния Π² ячСйках.

Π“Π»Π°Π²Π° 10 Окна Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ

β€’ Π›ΠΎΠ²ΡƒΡˆΠΊΠΈ Windows

β€’ ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Β«ΠžΠΊΠΎΠ½Π½Ρ‹ΠΉ шпион»

Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ свСдСния, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Π΅ Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… Π³Π»Π°Π²Π°Ρ… (Π° Ρ‚ΠΎΡ‡Π½Π΅Π΅, Π² Π³Π»Π°Π²Π°Ρ… 1, 2 ΠΈ 8), для построСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅ΠΉ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с ΠΎΠΊΠ½Π°ΠΌΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚Π΅ΡΡŒ с Ρ‚Π΅Ρ…Π½ΠΈΠΊΠΎΠΉ примСнСния Π»ΠΎΠ²ΡƒΡˆΠ΅ΠΊ (hook) Π² Windows ΠΈ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ использования проСцирования Ρ„Π°ΠΉΠ»Π° Π² ΠΏΠ°ΠΌΡΡ‚ΡŒ для ΠΎΠ±ΠΌΠ΅Π½Π° Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ нСсколькими прилоТСниями. ΠŸΡ€ΠΈΡ‡Π΅ΠΌ Π²Ρ‚ΠΎΡ€ΠΎΠ΅ Π² нашСм ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ обусловлСно ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π»ΠΎΠ²ΡƒΡˆΠ΅ΠΊ, слСдящих Π·Π° Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊ ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΡΡ‚ΡŒ всС ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Π΅ ΠΎΠΊΠ½Π° ΠΈ, соотвСтствСнно, ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ ΠΊ Π½ΠΈΠΌ доступ. Но ΠΎΠ±ΠΎ всСм ΠΏΠΎ порядку.