Sprawdzanie pisowni z kodu Delphi za pomocą MS Word Automation

01

z 07

Co to jest automatyzacja (OLE)? Co to jest serwer automatyzacji? Co to jest klient automatyzacji?

Załóżmy, że tworzysz edytor HTML podobny do Zestaw HTML. Jak każdy inny edytor tekstowy, aplikacja powinna zawierać system sprawdzania pisowni. Po co kupować komponenty sprawdzające pisownię lub pisać je od zera, skoro można łatwo korzystać z MS Word?

Automatyzacja OLE

jedna aplikacja może kontrolować inną

klient automatyzacji

serwer automatyzacji

Automatyzacja (znana również jako OLE Automation) to funkcja, której programy używają do wystawiania swoich obiektów na działanie narzędzi programistycznych, języków makr i innych programów obsługujących automatyzację. Na przykład Microsoft Outlook może udostępniać obiekty do wysyłania i odbierania wiadomości e-mail, planowania i zarządzania kontaktami i zadaniami.

Korzystając z Word Automation (serwer), możemy używać Delphi (klient) do dynamicznego tworzenia nowego dokumentu, dodawania tekstu, który chcemy przeliterować, a następnie Word sprawdzania pisowni. Jeśli zminimalizujemy Microsoft Word, nasi użytkownicy mogą nigdy nie wiedzieć! Dzięki interfejsowi OLE Microsoft Word możemy wybrać się na wycieczkę z Delphi i spojrzeć na sposoby oszukiwania podczas tworzenia naszej wersji edytora Notatnika :)

instagram viewer

Jest tylko jedna usterka;) Użytkownicy aplikacji muszą mieć zainstalowany program Word. Ale niech cię to nie powstrzyma.

Oczywiście, aby w pełni opanować wykorzystanie Automatyzacji w aplikacjach, musisz mieć szczegółową wiedzę praktyczną na temat aplikacji, które integrujesz - w tym przypadku MS Word.

Aby programy „Office” działały, użytkownik musi posiadać aplikację, która działa jak serwer automatyzacji. W naszym przypadku MS Word musi być zainstalowany na komputerze użytkownika.

02

z 07

Łączenie ze słowem: Wczesne wiązanie „Hello Word” vs. Późne wiązanie

Istnieje kilka głównych kroków i trzy główne sposoby automatyzacji programu Word z Delphi.

Delphi> = 5 - Składniki serwera Office XX

TWordApplication

TWordDocument

Delphi 3,4 - Wczesne wiązanie

Biblioteki typów

Aby użyć biblioteki typów Worda w Delphi (wersja 3 lub 4), wybierz Projekt | Importuj bibliotekę typów… i wybierz plik msword8.olb znajdujący się w katalogu „Office” pakietu Microsoft Office. Spowoduje to utworzenie pliku „Word_TLB.pas”, który jest obiektowym tłumaczeniem pascal biblioteki typów. Zawierać Word_TLB na liście zastosowań dowolnej jednostki, która będzie uzyskiwać dostęp do właściwości lub metod programu Word. Nazywane są metody Word za pomocą biblioteki typów wczesne wiązanie.

Delphi 2 - Late Binding

Późne wiązanie

należy unikać, jeśli to możliwe, ponieważ korzystanie z bibliotek typów jest znacznie łatwiejsze i szybsze - kompilator pomaga wychwytując błędy w źródle. Podczas używania późnego wiązania słowo jest zadeklarowane jako zmienna typu Variant. W szczególności oznacza to, że zamiast wywoływać metody i uzyskiwać dostęp do właściwości, musisz wiedzieć, czym one są.

04

z 07

Projekt sprawdzania pisowni - TWordApplication, TWordDocument

Projekt zaklęcia w czasie projektowania
Projekt zaklęcia w czasie projektowania.

Aby zbudować projekt sprawdzania pisowni, potrzebujemy dwóch formularzy: jeden służy do edycji tekstu, a drugi do wyświetlania sugestii pisowni... ale chodźmy od początku.

Uruchom Delphi. Utwórz nowy projekt z jednym pustym formularzem (domyślnie formularz 1). Będzie to główna forma sprawdzania pisowni w projekcie MS Word. Dodaj jeden TMemo (Karta Standard) i dwa T Przyciski do formularza. Dodaj tekst do notatki wypełniającej właściwość Linie. Oczywiście z pewnymi błędami literówek. Wybierz kartę Serwery i dodaj TWordApplication i TWordDocument do formularza. Zmień nazwę składnika TWordApplication z WordApplication1 na WordApp, WordDocument1 na WordDoc.

TWordApplication, TWordDocument

Opublikowana właściwość ConnectKind służy do kontrolowania, czy łączymy się z nowo uruchomioną instancją programu Word, czy z instancją już działającą. Ustaw ConnectKind na ckRunningInstance.

Kiedy otwieramy lub tworzymy plik w programie Word, tworzymy obiekt Document. Częstym zadaniem podczas korzystania z automatyzacji programu Word jest określenie obszaru w dokumencie, a następnie zrobienie z nim czegoś, na przykład wstawienie tekstu i sprawdzenie pisowni. Obiekt reprezentujący ciągły obszar w dokumencie nazywa się Zasięg.

05

z 07

Projekt sprawdzania pisowni - Sprawdzanie pisowni / zamień

GetSpellingSuggestions w czasie projektowania
GetSpellingSuggestions w czasie projektowania.

Chodzi o to, aby przewijać tekst w notatce i parsować go w słowa rozdzielane spacjami. Dla każdego słowa dzwonimy do MS Word, aby sprawdzić pisownię. Model automatyzacji programu Word zawiera metodę SpellingErrors, która pozwala sprawdzić pisownię tekstu zawartego w pewnym zakresie.

Zakres jest zdefiniowany tak, aby zawierał tylko przeanalizowane słowo. Metoda SpellingErrors zwraca kolekcję błędnie napisanych słów. Jeśli ta kolekcja zawiera więcej niż zero słów, przechodzimy dalej. Wywołanie metody GetSpellingSuggestions, przekazujące niepoprawnie napisane słowo, wypełnia zbiór sugerowanych słów zastępujących SpellingSuggestions.

Przekazujemy tę kolekcję do formularza sprawdzania pisowni. To druga forma w naszym projekcie.

Aby dodać nowy formularz do projektu, użyj Plik | Nowa forma. Niech ma nazwę „frSpellCheck”. Dodaj trzy składniki TBitBtn w tym formularzu. Dwa EditBox-es i jeden ListBox. Zwróć uwagę na kolejne trzy etykiety. Etykieta „Brak w słowniku” jest „połączona” z polem edycji edNID. EdNID wyświetla po prostu źle napisane słowo. Pole listy lbSuggestions zawiera listę elementów z kolekcji SpellingSuggestions. Wybrana sugestia pisowni zostanie umieszczona w polu edycji edReplaceWith.

Trzy przyciski bitowe służą do anulowania sprawdzania pisowni, zignorowania bieżącego słowa i zmiany błędnie napisanego słowa na słowo w polu edycji edReplaceWith. Właściwość ModalResult składników BitBtn jest używana w odniesieniu do tego, co użytkownik kliknął. Przycisk „Ignoruj” ma właściwość ModalResult ustawioną na mrIgnore, „Zmień” na mrOk i „Anuluj” na mrAbort.

FrSpellCheck ma jedną zmienną publicznego ciągu o nazwie sReplacedWord. Ta zmienna zwraca tekst w edReplaceWith, gdy użytkownik naciśnie przycisk „Zmień”.

07

z 07

Słownik wyrazów bliskoznacznych? Słownik wyrazów bliskoznacznych!

Jako bonus projekt ma kod do użycia Tezaurus słowa. Korzystanie z tezaurusa jest znacznie łatwiejsze. Nie analizujemy tekstu, dla wybranego słowa wywoływana jest metoda CheckSynonimy. Ta metoda wyświetla własne okno dialogowe wyboru. Po wybraniu nowego słowa zawartość zakresu dokumentów programu Word zastępuje oryginalne słowo.