Delphi : робота з MS WORD
Припустимо, у нас вже відкритий файл. Запитання відкриття і збереження документів вже були в інших статтях, так що докладно на цьому зупинятися не будемо. Просто по ходу справи буде приведено те, чого раніше не зустрічалося - вихід з документа без збереження змін. Якось забув, вибачте :)
Текст
Спочатку про найпростіший - додаванні в документ Word потрібного рядка тексту. Помістимо на форму компоненти WordDocument, WordApplicationі WordParagraphFormat з палітри Servers. Нас цікавлять в першу чергу властивість Range компонента WordDocument і властивість Selection компонента WordApplication. Класики стверджують, що вони є посиланням на об'єкти Range і Selection. Range представляє з себе, простіше кажучи, шматок тексту, це може бути як весь текст документа, так і будь-яка його частина. Його межі задаються двома (або менше) параметрами типу OleVariant. p> Наприклад: p> var range1, range2, range3, a, b: OleVariant;
...
range1: = WordDocument1.Range;
a: = 5;
b: = 15;
range2: = WordDocument1.Range (a, b);
range3: = WordDocument1.Range (a); p> Перший наш об'єкт включає в себе весь текст документа, у другого ми обмежили межі 5-м і 15-м символами, третій представляє з себе весь наступний текст документа, починаючи з 5-го символу. Об'єкт має кілька корисних методів, наприклад, з його допомогою можемо додати текст в документ:
range2.InsertAfter ('MS Word ');
Це ми вставили текст після виділеного Range. Точно також можемо вставити текст і перед ним, для цього служить метод InsertBefore (). Текст, укладений в об'єкті Range, можемо отримати так:
WordDocument1.Range (a, b). Text; p> Крім того, за допомогою Range можемо змінити шрифт в межах об'єкта. Приклад:
a: = 5;
b: = 15;
WordDocument1.Range (a, b). Font.Bold: = 1;
WordDocument1.Range (a, b). Font.Size: = 14;
WordDocument1.Range (a, b). Font.Color: = clRed; p> Якщо хочемо скасувати виділення жирним шрифтом, присвоюємо 0. Аналогічно можна зробити шрифт курсивом, підкресленим - наберіть WordDocument1.Range.Font., і Середа сама підкаже, які можуть бути варіанти. Методи Select, Cut, Copy і Paste працюють як у звичайному тексті. За допомогою Paste можемо на місце вибраного Range вставити не лише рядки, але й малюнок, що знаходиться в буфері обміну. p> WordDocument1.Range (a, b). Select;
WordDocument1.Range (a, b). Cut;
WordDocument1.Range (a, b). Copy;
WordDocument1.Range (a, b). Paste;
З допомогою Range можемо знайти в документі потрібний рядок. Нехай у тексті міститься слово "picture". Наприклад, нам на його місце треба буде вставити малюнок. p> var a, b, vstart, vend: OleVariant;
j, ilengy: Integer;
...
ilengy: = Length (WordDocument1.Range.Text);
for j: = 0 to ilengy-8 do begin
a: = j; ...