Rechtschreibprüfung aus Delphi-Code mit MS Word Automation

click fraud protection

01

von 07

Was ist (OLE) Automatisierung? Was ist Automation Server? Was ist ein Automatisierungsclient?

Angenommen, Sie entwickeln einen HTML-Editor wie HTML Kit. Wie jeder andere Texteditor sollte Ihre Anwendung eine Art Rechtschreibprüfung enthalten. Warum sollten Sie Komponenten zur Rechtschreibprüfung kaufen oder von Grund auf neu schreiben, wenn Sie MS Word problemlos verwenden können?

OLE-Automatisierung

Eine Anwendung kann eine andere steuern

Automatisierungs-Client

Automatisierungsserver

Automatisierung (auch als OLE-Automatisierung bezeichnet) ist eine Funktion, mit der Programme ihre Objekte Entwicklungswerkzeugen, Makrosprachen und anderen Programmen aussetzen, die die Automatisierung unterstützen. Beispielsweise kann Microsoft Outlook Objekte zum Senden und Empfangen von E-Mails, zum Planen sowie zur Kontakt- und Aufgabenverwaltung verfügbar machen.

Mithilfe von Word Automation (Server) können wir mit Delphi (Client) dynamisch ein neues Dokument erstellen, Text hinzufügen, den wir überprüfen möchten, und dann die Rechtschreibprüfung von Word überprüfen lassen. Wenn wir Microsoft Word so gering wie möglich halten, werden unsere Benutzer es möglicherweise nie erfahren! Dank der OLE-Oberfläche von Microsoft Word können wir einen Abstecher von Delphi machen und nach Möglichkeiten suchen, um bei der Entwicklung unserer Version des Notepad-Editors zu betrügen :)

instagram viewer

Es gibt nur einen Fehler;) Benutzer der Anwendung müssen Word installiert haben. Aber lass dich davon nicht aufhalten.

Um die Verwendung der Automatisierung in Ihren Anwendungen vollständig zu beherrschen, müssen Sie über detaillierte Kenntnisse der Anwendungen verfügen, die Sie integrieren - in diesem Fall MS Word.

Damit Ihre "Office" -Programme funktionieren, muss der Benutzer die Anwendung besitzen, die sich wie ein Automatisierungsserver verhält. In unserem Fall muss MS Word auf dem Computer des Benutzers installiert sein.

02

von 07

Verbindung zu Word herstellen: "Hello Word" Early Binding vs. Späte Bindung

Es gibt mehrere Hauptschritte und drei Hauptmethoden zum Automatisieren von Word aus Delphi.

Delphi> = 5 - Office XX-Serverkomponenten

TWordApplication

TWordDocument

Delphi 3,4 - Frühe Bindung

Typ Bibliotheken

Um die Word-Typbibliothek in Delphi (Version 3 oder 4) zu verwenden, wählen Sie Projekt | Menü Typbibliothek importieren… und wählen Sie die Datei msword8.olb aus, die sich im Microsoft Office-Verzeichnis "Office" befindet. Dadurch wird die Datei "Word_TLB.pas" erstellt, bei der es sich um die Objekt-Pascal-Übersetzung der Typbibliothek handelt. Umfassen Word_TLB in der Verwendungsliste aller Einheiten, die auf Word-Eigenschaften oder -Methoden zugreifen. Das Referenzieren von Word-Methoden mithilfe der Typbibliothek wird aufgerufen frühe Bindung.

Delphi 2 - Späte Bindung

Späte Bindung

sollte nach Möglichkeit vermieden werden, da die Verwendung von Typbibliotheken viel einfacher und schneller ist - der Compiler hilft, indem er Fehler in der Quelle abfängt. Bei Verwendung der späten Bindung wird Word als Variable vom Variantentyp deklariert. Dies bedeutet insbesondere, dass Sie zum Aufrufen von Methoden und Zugriffseigenschaften wissen müssen, um welche es sich handelt.

04

von 07

Das Rechtschreibprüfungsprojekt - TWordApplication, TWordDocument

Das Zauberprojekt zur Entwurfszeit
Das Zauberprojekt zur Entwurfszeit.

Um ein Rechtschreibprüfungsprojekt zu erstellen, benötigen wir zwei Formulare: eines zum Bearbeiten des Textes und das andere zum Anzeigen der Rechtschreibvorschläge... Aber lassen Sie uns von Anfang an gehen.

Starten Sie Delphi. Erstellen Sie ein neues Projekt mit einem leeren Formular (standardmäßig form1). Dies ist das Hauptformular bei der Rechtschreibprüfung mit dem MS Word-Projekt. Füge eins hinzu TMemo (Registerkarte Standard) und zwei TButtons auf das Formular. Fügen Sie dem Memo Text hinzu, der die Eigenschaft Lines ausfüllt. Natürlich mit einigen Tippfehlern. Wählen Sie die Registerkarte Server und fügen Sie hinzu TWordApplication und TWordDocument auf das Formular. Ändern Sie den Namen der TWordApplication-Komponente von WordApplication1 in WordApp, WordDocument1 in WordDoc.

TWordApplication, TWordDocument

Die veröffentlichte Eigenschaft ConnectKind wird verwendet, um zu steuern, ob eine Verbindung zu einer neu gestarteten Word-Instanz oder zu einer bereits ausgeführten vorhandenen Instanz hergestellt wird. Setzen Sie ConnectKind auf ckRunningInstance.

Wenn wir eine Datei in Word öffnen oder erstellen, erstellen wir ein Dokumentobjekt. Eine häufige Aufgabe bei der Automatisierung von Word besteht darin, einen Bereich in einem Dokument anzugeben und dann etwas damit zu tun, z. B. Text einzufügen und die Rechtschreibprüfung durchzuführen. Ein Objekt, das einen zusammenhängenden Bereich in einem Dokument darstellt, wird als Bereich bezeichnet.

05

von 07

Das Rechtschreibprüfungsprojekt - Rechtschreibprüfung / Ersetzen

GetSpellingSuggestions zur Entwurfszeit
GetSpellingSuggestions zur Entwurfszeit.

Die Idee ist, den Text im Memo zu durchlaufen und ihn in durch Leerzeichen getrennte Wörter zu analysieren. Für jedes Wort rufen wir MS Word auf, um die Rechtschreibprüfung durchzuführen. Das Automatisierungsmodell von Word enthält die SpellingErrors-Methode, mit der Sie die Rechtschreibung von Text überprüfen können, der in einem bestimmten Bereich enthalten ist.

Der Bereich enthält nur das gerade analysierte Wort. Die SpellingErrors-Methode gibt eine Sammlung falsch geschriebener Wörter zurück. Wenn diese Sammlung mehr als null Wörter enthält, gehen wir weiter. Ein Aufruf der GetSpellingSuggestions-Methode, bei der das falsch geschriebene Wort übergeben wird, füllt eine SpellingSuggestions-Sammlung vorgeschlagener Ersatzwörter.

Wir übergeben diese Sammlung an das SpellCheck-Formular. Das ist die zweite Form in unserem Projekt.

Um einem Projekt ein neues Formular hinzuzufügen, verwenden Sie Datei | Neue Form. Lassen Sie es den Namen 'frSpellCheck' haben. Fügen Sie diesem Formular drei TBitBtn-Komponenten hinzu. Zwei EditBox-es und eine ListBox. Beachten Sie die drei weiteren Beschriftungen. Die Bezeichnung "Nicht im Wörterbuch" ist mit dem EdNID-Bearbeitungsfeld "verbunden". Die edNID zeigt einfach das falsch geschriebene Wort an. Im Listenfeld lbSuggestions werden die Elemente in der SpellingSuggestions-Auflistung aufgelistet. Der ausgewählte Rechtschreibvorschlag wird in das Bearbeitungsfeld edReplaceWith eingefügt.

Die drei BitButtons werden verwendet, um die Rechtschreibprüfung abzubrechen, das aktuelle Wort zu ignorieren und das falsch geschriebene Wort durch das im Bearbeitungsfeld edReplaceWith zu ändern. Die ModalResult-Eigenschaft der BitBtn-Komponenten wird verwendet, wenn auf das verwiesen wird, auf das der Benutzer geklickt hat. Für die Schaltfläche "Ignorieren" ist die ModalResult-Eigenschaft auf mrIgnore, "Change" auf mrOk und "Cancel" auf mrAbort festgelegt.

Der frSpellCheck verfügt über eine öffentliche Zeichenfolgenvariable namens sReplacedWord. Diese Variable gibt den Text in edReplaceWith zurück, wenn der Benutzer die Schaltfläche "Ändern" drückt.

07

von 07

Thesaurus? Thesaurus!

Als Bonus hat das Projekt den zu verwendenden Code Der Thesaurus des Wortes. Die Verwendung des Thesaurus ist viel einfacher. Wir analysieren den Text nicht, für das ausgewählte Wort wird die CheckSynonyms-Methode aufgerufen. Diese Methode zeigt einen eigenen Auswahldialog an. Sobald ein neues Wort ausgewählt wurde, wird der Inhalt des Word-Dokumentbereichs verwendet, um das ursprüngliche Wort zu ersetzen.

instagram story viewer