Проверка на правописа от кода на Delphi с помощта на автоматизация на MS Word

click fraud protection

01

от 07

Какво е (OLE) автоматизация? Какво е сървър за автоматизация? Какво е клиент за автоматизация?

Да предположим, че разработвате HTML редактор като HTML Kit. Както всеки друг текстов редактор, вашето приложение трябва да съдържа някаква система за проверка на правописа. Защо да купувате компоненти за проверка на правописа или да ги пишете от нулата, когато лесно можете да използвате MS Word?

OLE автоматизация

едно приложение може да контролира друго

клиент за автоматизация

сървър за автоматизация

Автоматизацията (известна още като OLE Automation) е функция, която програмите използват, за да излагат обектите си на инструменти за разработка, макро езици и други програми, които поддържат автоматизацията. Например Microsoft Outlook може да изложи обекти за изпращане и получаване на електронна поща, за планиране и за управление на контакти и управление на задачи.

Използвайки Word Automation (сървър), можем да използваме Delphi (клиент) за динамично създаване на нов документ, добавяне на текст, който искаме да проверим правописа, и след това Word да провери правописа. Ако държим на Microsoft Word сведен до минимум, потребителите ни никога няма да знаят! Благодарение на OLE интерфейса на Microsoft Word можем да предприемем пътуване от Delphi и да разгледаме начини за измама при разработването на нашата версия на редактора на Notepad :)

instagram viewer

Има само един проблем;) Потребителите на приложението трябва да имат инсталиран Word. Но не позволявайте това да ви спре.

Разбира се, за да овладеете напълно използването на автоматизацията във вашите приложения, трябва да имате подробни работни познания за приложенията, които интегрирате - в случая MS Word.

За да работят вашите програми в Office, потребителят трябва да притежава приложението, което действа като сървър за автоматизация. В нашия случай MS Word трябва да бъде инсталиран на машината на потребителя.

02

от 07

Свързване с Word: „Hello Word“ Early Binding vs. Късно обвързване

Има няколко основни стъпки и три основни начина за автоматизиране на Word от Delphi.

Delphi> = 5 - Компоненти на сървъра на Office XX

TWordApplication

TWordDocument

Delphi 3,4 - Ранно обвързване

Въведете библиотеки

За да използвате библиотеката на Word в Delphi (версия 3 или 4), изберете Project | Импортиране на Тип библиотека… и изберете файла msword8.olb, намиращ се в директорията „Office“ на Microsoft Office. Това ще създаде файла "Word_TLB.pas", който е обектният паскален превод на библиотеката тип. Включи Word_TLB в списъка с употребите на всяка единица, която ще има достъп до свойства или методи на Word. Извиква се методите за рефериране на Word, използващи библиотеката тип ранно свързване.

Delphi 2 - Късно обвързване

Късно обвързване

трябва да се избягва, ако е възможно, тъй като е много по-лесно и по-бързо да използвате тип библиотеки - компилаторът помага, като улавя грешки в източника. При използване на късно свързване Word се декларира като променлива от тип Variant. Това по-специално означава, отколкото да извиквате методи и достъп до свойства, трябва да знаете какви са те.

04

от 07

Проектът за проверка на правописа - TWordApplication, TWordDocument

Проектът за заклинания в Design-Time
Проектът за заклинания в Design-Time.

За да изградим проект за проверка на правописа, ще ни трябват два формуляра: единият се използва за редактиране на текста, а другият за да видите предложенията за правопис... но, да тръгнем от началото.

Стартирайте Delphi. Създайте нов проект с един празен формуляр (form1, по подразбиране). Това ще бъде основната форма в проверката на правописа с MS Word проект. Добавете един TMemo (Стандартен раздел) и две TButtons към формата. Добавете малко текст към бележката, която попълва свойството Lines. Разбира се, с някои печатни грешки. Изберете раздела Сървъри и добавете TWordApplication и TWordDocument към формата. Променете името на компонента TWordApplication от WordApplication1 на WordApp, WordDocument1 на WordDoc.

TWordApplication, TWordDocument

Публикуваната собственост ConnectKind се използва за контрол дали се свързваме с ново стартиран екземпляр на Word или към съществуващ екземпляр, който вече работи. Задайте ConnectKind на ckRunningInstance.

Когато отваряме или създаваме файл в Word, създаваме обект Document. Обща задача, когато използвате автоматизиране на Word, е да определите област в документа и след това да направите нещо с него, като например вмъкване на текст и проверка на правописа. Обект, който представлява съседна област в документа, се нарича Range.

05

от 07

Проектът за проверка на правописа - проверка на правописа / замяна

GetSpellingSuggestions в Design-Time
GetSpellingSuggestions в Design-Time.

Идеята е да прекарате текста в бележката и да го анализирате на думи, ограничени от пространството. За всяка дума наричаме MS Word, за да я проверим. Моделът за автоматизация на Word съдържа метода SpellingErrors, който ви позволява да проверите изписването на текст, съдържащ се в някакъв диапазон.

Обхватът е определен, че съдържа само думата, която току що е разбрана. Методът SpellingErrors връща колекция от неправилно написани думи. Ако тази колекция съдържа повече от нула думи, ние продължаваме. Обаждането към метода GetSpellingSuggesitions, като въведете неправилно написаната дума, попълва колекция от SpellingSuggestions на предложени заместващи думи.

Предаваме тази колекция във формуляра SpellCheck. Това е втората форма в нашия проект.

За да добавите нов формуляр към проект, използвайте File | Нова форма. Нека има името 'frSpellCheck'. Добавете три компонента TBitBtn в този формуляр. Два редакционни редактора и един ListBox. Забележете още трите етикета. Етикетът "Не е в речника" е "свързан" с полето за редактиране на edNID. EdNID просто показва грешно написана дума. Полето lbSuggestions ще изброява елементите в колекцията SpellingSuggestions. Избраното предложение за правопис се поставя в полето за редактиране edReplaceWith.

Трите BitButtons се използват за отмяна на проверката на правописа, игнориране на текущата дума и за промяна на грешно написана дума с тази в полето за редакция edReplaceWith. Свойството BitBtn компоненти ModalResult се използва, когато се позовава на това, което потребителят е щракнал. Бутонът "Игнорирай" има свойството си ModalResult, зададено на mrIgnore, "Промяна" на mrOk и "Отказ" на mrAbort.

FrSpellCheck има една променлива от публичен низ, наречена sReplacedWord. Тази променлива връща текста в edReplaceWith, когато потребителят натисне бутона „Промяна“.

07

от 07

Синонимен речник? Синонимен речник!

Като бонус проектът трябва да използва кода Тезаурус на Word. Използването на тезауруса е доста по-лесно. Ние не анализираме текста, за избраната дума се нарича методът CheckSynonyms. Този метод показва свой диалогов прозорец за избор. След като бъде избрана нова дума, съдържанието на Word Documents Range се използва за замяна на оригиналната дума.

instagram story viewer