01
07
Co je to automatizace (OLE)? Co je to Automation Server? Co je automatizační klient?
Předpokládejme, že vyvíjíte HTML editor jako Sada HTML. Stejně jako jakýkoli jiný textový editor by vaše aplikace měla obsahovat nějaký druh systému kontroly pravopisu. Proč kupovat součásti kontroly pravopisu nebo je zapisovat od nuly, když můžete snadno používat MS Word?
Automatizace OLE
jedna aplikace může ovládat druhou
automatizační klient
automatizační server
Automatizace (také známá jako automatizace OLE) je funkce, kterou programy používají k vystavení svých objektů vývojovým nástrojům, makro jazykům a dalším programům, které automatizaci podporují. Například Microsoft Outlook může vystavovat objekty pro odesílání a přijímání e-mailů, pro plánování a pro správu kontaktů a úkolů.
Pomocí aplikace Word Automation (server) můžeme pomocí Delphi (klienta) dynamicky vytvořit nový dokument, přidat nějaký text, který chceme zkontrolovat pravopis, a nechat Word zkontrolovat pravopis. Budeme-li udržovat Microsoft Word minimalizovaný, naši uživatelé to nikdy nebudou vědět! Díky rozhraní OLE aplikace Microsoft Word se můžeme vydat na boční výlet od Delphi a podívat se na způsoby, jak podvádět při vývoji naší verze editoru Poznámkový blok :)
Je pouze jedna chyba;) Uživatelé aplikace musí mít nainstalovanou aplikaci Word. Ale nenechte se tím zastavit.
Samozřejmě, abyste plně zvládli používání automatizace ve svých aplikacích, musíte mít podrobné pracovní znalosti aplikací, které integrujete - v tomto případě MS Word.
Aby vaše programy „Office“ fungovaly, musí uživatel vlastnit aplikaci, která funguje jako server automatizace. V našem případě musí být na počítači uživatele nainstalováno MS Word.
02
07
Připojení k aplikaci Word: „Hello Word“ Early Binding vs. Pozdní vazba
Existuje několik hlavních kroků a tři hlavní způsoby automatizace aplikace Word z Delphi.
Delphi> = 5 - Součásti serveru Office XX
TWordAplikace
TWordDocument
Delphi 3,4 - Včasná vazba
Typ knihovny
Chcete-li použít knihovnu typů Wordu v Delphi (verze 3 nebo 4), vyberte Project | Importovat knihovnu typů… a vyberte soubor msword8.olb umístěný v adresáři „Office“ sady Microsoft Office. Tím se vytvoří soubor „Word_TLB.pas“, což je objektový pascal překlad typu knihovny. Zahrnout Word_TLB v seznamu použití jakékoli jednotky, která bude přistupovat k vlastnostem nebo metodám aplikace Word. Zavolá se odkazování na metody Word pomocí knihovny typů časná vazba.
Delphi 2 - Pozdní vazba
Pozdní vazba
je třeba se vyhnout, pokud je to možné, protože použití typů knihoven je mnohem snazší a rychlejší - kompilátor pomáhá zachycováním chyb ve zdroji. Při použití pozdní vazby je slovo deklarováno jako proměnná typu Variant. To zejména znamená, než volat metody a přístup k vlastnostem, musíte vědět, co jsou.
04
07
Projekt kontroly pravopisu - TWordApplication, TWordDocument

K vytvoření projektu kontroly pravopisu budeme potřebovat dva formuláře: jeden slouží k úpravě textu a druhý k zobrazení návrhů pravopisu... ale pojďme od začátku.
Spusťte Delphi. Vytvořte nový projekt s jedním prázdným formulářem (ve výchozím nastavení form1). Toto bude hlavní formulář při kontrole pravopisu pomocí projektu MS Word. Přidejte jeden TMemo (Karta Standardní) a dvě TButtons do formuláře. Přidejte nějaký text do Memo vyplňující vlastnost Lines. Samozřejmě, s některými překlepy. Vyberte kartu Servery a přidejte ji TWordAplikace a TWordDocument do formuláře. Změňte název komponenty TWordApplication z WordApplication1 na WordApp, WordDocument1 na WordDoc.
TWordAplikace, TWordDocument
Publikované vlastnictví ConnectKind se používá k řízení, zda se připojujeme k nově spuštěné instanci aplikace Word nebo k existující instanci, která již běží. Nastavte ConnectKind na ckRunningInstance.
Když otevřeme nebo vytvoříme soubor v aplikaci Word, vytvoříme objekt Dokument. Běžným úkolem při automatizaci aplikace Word je určit oblast v dokumentu a poté s ním něco udělat, například vložit text a zkontrolovat pravopis. Objekt, který představuje souvislou oblast v dokumentu, se nazývá Range.
05
07
Projekt kontroly pravopisu - kontrola / nahrazení pravopisu

Cílem je procházet textem v Memo a analyzovat jej na slova oddělená mezerou. Pro každé slovo voláme MS Word, aby ho zkontroloval. Model automatizace aplikace Word obsahuje metodu SpellingErrors, která vám umožní zkontrolovat pravopis textu obsaženého v určitém rozsahu.
Rozsah je definován tak, aby obsahoval pouze slovo, které bylo právě analyzováno. Metoda SpellingErrors vrací sbírku chybně napsaných slov. Pokud tato kolekce obsahuje více než nula slov, pokračujeme. Volání metody GetSpellingSuggestions, předávající nesprávně napsané slovo, vyplní kolekci SpellingSuggestions navrhovaných náhradních slov.
Tuto kolekci předáváme do formuláře Kontrola pravopisu. To je druhá forma v našem projektu.
Pro přidání nového formuláře do projektu použijte Soubor | Nový formulář. Nechte jej mít název „frSpellCheck“. Do tohoto formuláře přidejte tři komponenty TBitBtn. Dva EditBoxy a jeden ListBox. Všimněte si dalších tří štítků. Štítek „Není ve slovníku“ je „spojen“ s editačním polem edNID. EdNID jednoduše zobrazí chybně napsané slovo. V seznamu lbSuggestions se zobrazí položky v kolekci SpellingSuggestions. Vybraný návrh pravopisu je umístěn v edReplaceWith editačním poli.
Tři BitButtony se používají ke zrušení kontroly pravopisu, Ignorování aktuálního slova a ke změně chybně napsaného slova tím, které je v edReplaceWith. Vlastnost ModalResult komponenty BitBtn se používá, když odkazuje na to, na co uživatel kliknul. Tlačítko "Ignorovat" má vlastnost ModalResult nastavenou na mrIgnore, "Změnit" na mrOk a "Zrušit" na mrAbort.
FrSpellCheck má jednu proměnnou veřejného řetězce nazvanou sReplacedWord. Tato proměnná vrací text v edReplaceWith, když uživatel stiskne tlačítko „Změnit“.
07
07
Tezaurus? Tezaurus!

Jako bonus má projekt použitelný kód Slovní tezaurus. Použití tezauru je docela snazší. Text nerozebíráme, pro vybrané slovo se volá metoda CheckSynonyms. Tato metoda zobrazí vlastní dialog pro výběr. Jakmile je vybráno nové slovo, nahradí se původní slovo obsahem Rozsah dokumentů Word.