Spellingcontrole vanuit Delphi-code met behulp van MS Word Automation

click fraud protection

01

van 07

Wat is (OLE) automatisering? Wat is Automation Server? Wat is Automation Client?

Stel, u ontwikkelt een HTML-editor zoals HTML-kit. Net als elke andere teksteditor moet uw applicatie een soort spellingcontrolesysteem bevatten. Waarom componenten voor spellingcontrole kopen of ze helemaal opnieuw schrijven als u MS Word gemakkelijk kunt gebruiken?

OLE-automatisering

de ene applicatie kan de andere besturen

automatiseringsclient

automatiseringsserver

Automatisering (ook bekend als OLE-automatisering) is een functie die programma's gebruiken om hun objecten bloot te stellen aan ontwikkeltools, macrotalen en andere programma's die automatisering ondersteunen. Microsoft Outlook kan bijvoorbeeld objecten weergeven voor het verzenden en ontvangen van e-mail, voor planning en voor contact- en taakbeheer.

Door Word Automation (server) te gebruiken, kunnen we Delphi (client) gebruiken om dynamisch een nieuw document te creëren, wat tekst toe te voegen die we willen controleren op spelling, en dan Word de spelling laten controleren. Als we Microsoft Word geminimaliseerd houden, zullen onze gebruikers het misschien nooit weten! Dankzij de OLE-interface van Microsoft Word kunnen we een uitstapje maken vanuit Delphi en kijken naar manieren om vals te spelen bij het ontwikkelen van onze versie van Kladblok-editor :)

instagram viewer

Er is maar één probleempje;) Gebruikers van de applicatie moeten Word geïnstalleerd hebben. Maar laat dit je niet stoppen.

Om het gebruik van automatisering in uw applicaties volledig onder de knie te krijgen, moet u natuurlijk beschikken over gedetailleerde praktische kennis van de applicaties die u integreert - in dit geval het MS Word.

Om ervoor te zorgen dat uw "Office" -programma's werken, moet de gebruiker eigenaar zijn van de applicatie die werkt als een automatiseringsserver. In ons geval moet MS Word op de computer van de gebruiker zijn geïnstalleerd.

02

van 07

Verbinding maken met Word: "Hello Word" Early Binding vs. Late binding

Er zijn verschillende hoofdstappen en drie manieren om Word vanuit Delphi te automatiseren.

Delphi> = 5 - Office XX Server-componenten

TWordApplication

TWordDocument

Delphi 3,4 - Early Binding

Typ bibliotheken

Om de typebibliotheek van Word in Delphi (versie 3 of 4) te gebruiken, selecteert u Project | Import Type Library… menu en kies het bestand msword8.olb in de "Office" -directory van Microsoft Office. Hierdoor wordt het bestand "Word_TLB.pas" gemaakt, wat de object-pascal-vertaling is van de typebibliotheek. Opnemen Word_TLB in de lijst met toepassingen van elke eenheid die toegang heeft tot Word-eigenschappen of -methoden. Verwijzen naar Word-methoden met behulp van de typebibliotheek wordt genoemd vroege binding.

Delphi 2 - Late Binding

Late binding

moet indien mogelijk worden vermeden, omdat het veel gemakkelijker en sneller is om typebibliotheken te gebruiken - de compiler helpt door fouten in de bron op te vangen. Bij het gebruik van late binding wordt Word verklaard als een variabele van het Variant-type. Dit betekent in het bijzonder dan om methoden aan te roepen en eigenschappen te benaderen, u moet weten wat ze zijn.

04

van 07

The Spell Check Project - TWordApplication, TWordDocument

The Spell Project at Design-Time
The Spell Project at Design-Time.

Om een ​​spellingcontroleproject te bouwen, hebben we twee vormen nodig: de ene wordt gebruikt om de tekst te bewerken en de andere om de spellingsuggesties te zien... maar laten we vanaf het begin gaan.

Start Delphi. Maak een nieuw project met één leeg formulier (standaard formulier1). Dit zal het belangrijkste formulier zijn in de spellingcontrole met MS Word-project. Voeg een toe TMemo (Standaardtabblad) en twee TButtons naar het formulier. Voeg wat tekst toe aan de Memo door de eigenschap Lines te vullen. Natuurlijk met wat typefouten. Selecteer het tabblad Servers en voeg toe TWordApplication en TWordDocument naar het formulier. Wijzig de naam van TWordApplication-component van WordApplication1 in WordApp, WordDocument1 in WordDoc.

TWordApplication, TWordDocument

Het gepubliceerde eigendom ConnectKind wordt gebruikt om te bepalen of we verbinding maken met een nieuw gestarte Word-instantie of met een bestaande instantie die al actief is. Stel ConnectKind in op ckRunningInstance.

Wanneer we een bestand openen of maken in Word, maken we een documentobject. Een veel voorkomende taak bij het gebruik van het automatiseren van Word is om een ​​gebied in een document op te geven en er vervolgens iets mee te doen, zoals tekst invoegen en spellingcontrole. Een object dat een aaneengesloten gebied in een document vertegenwoordigt, wordt Bereik genoemd.

05

van 07

The Spell Check Project - Spell Check / Replace

GetSpellingSuggestions tijdens Design-Time
GetSpellingSuggestions tijdens Design-Time.

Het idee is om door de tekst in de Memo te bladeren en deze in door spaties gescheiden woorden te ontleden. Voor elk woord noemen we MS Word om het te controleren op spelling. Het automatiseringsmodel van Word bevat de SpellingErrors-methode waarmee u de spelling van tekst in een bepaald bereik kunt controleren.

Bereik is gedefinieerd om alleen het zojuist geparseerde woord te bevatten. De SpellingErrors-methode retourneert een verzameling verkeerd gespelde woorden. Als deze verzameling meer dan nul woorden bevat, gaan we verder. Een aanroep van de GetSpellingSuggestions-methode, waarbij het verkeerd gespelde woord wordt doorgegeven, vult een SpellingSuggestions-verzameling van voorgestelde vervangende woorden.

We geven deze verzameling door aan het SpellCheck-formulier. Dat is de tweede vorm in ons project.

Gebruik Bestand | om een ​​nieuw formulier aan een project toe te voegen Nieuw formulier. Laat het de naam 'frSpellCheck' hebben. Voeg op dit formulier drie TBitBtn-componenten toe. Twee EditBox-es en één ListBox. Let op de drie andere labels. Het label "Niet in woordenboek" is "verbonden" met het edNID-invoervak. De edNID geeft gewoon het verkeerd gespelde woord weer. In de keuzelijst lbSuggestions staan ​​de items in de verzameling SpellingSuggestions. De geselecteerde spellingsuggestie wordt in het bewerkingsvak edReplaceWith geplaatst.

De drie BitButtons worden gebruikt om de spellingcontrole te annuleren, het huidige woord te negeren en het verkeerd gespelde woord te wijzigen met het woord in het bewerkingsvak edReplaceWith. De eigenschap ModalResult van BitBtn-componenten wordt gebruikt wanneer wordt verwezen naar waar de gebruiker op heeft geklikt. Bij de knop "Negeren" is de eigenschap ModalResult ingesteld op mrIgnore, "Wijzigen" in mrOk en "Annuleren" in mrAbort.

De frSpellCheck heeft één openbare stringvariabele genaamd sReplacedWord. Deze variabele retourneert de tekst in de edReplaceWith wanneer de gebruiker op de knop "Wijzigen" drukt.

07

van 07

Synoniemenlijst? Synoniemenlijst!

Als bonus heeft het project de code om te gebruiken De thesaurus van Word. Het gebruik van de thesaurus is veel eenvoudiger. We ontleden de tekst niet, voor het geselecteerde woord wordt de CheckSynoniemen-methode genoemd. Deze methode geeft een eigen selectiedialoog weer. Zodra een nieuw woord is geselecteerd, wordt de inhoud van het Word-documentenbereik gebruikt om het oorspronkelijke woord te vervangen.

instagram story viewer