Stavekontroll fra Delphi-kode ved hjelp av MS Word Automation

01

av 07

Hva er (OLE) automatisering? Hva er automatiseringsserver? Hva er Automation Client?

Anta at du utvikler en HTML-editor som HTML-sett. Som alle andre tekstredaktører, bør applikasjonen din inneholde et slags stavekontrollsystem. Hvorfor kjøpe stavekontrollkomponenter eller skrive dem fra bunnen av når du enkelt kan bruke MS Word?

OLE Automation

ett program kan kontrollere et annet

automatiseringsklient

automatiseringsserver

Automasjon (også kjent som OLE Automation) er en funksjon som programmer bruker for å eksponere objektene sine for utviklingsverktøy, makrospråk og andre programmer som støtter automatisering. For eksempel kan Microsoft Outlook eksponere objekter for sending og mottak av e-post, for planlegging og for kontakt- og oppgavehåndtering.

Ved å bruke Word Automation (server), kan vi bruke Delphi (klient) til å opprette et nytt dokument dynamisk, legge til litt tekst vi vil stavekontroll og deretter få Word til å sjekke stavemåten. Hvis vi holder Microsoft Word minimert, vil brukerne våre kanskje aldri vite det! Takket være Microsoft Words OLE-grensesnitt, kan vi ta en side-tur fra Delphi og se på måter å jukse når vi utvikler vår versjon av Notepad-redigeringsprogram :)

instagram viewer

Det er bare en feil;) Brukere av applikasjonen trenger å ha Word installert. Men ikke la dette stoppe deg.

For å mestre bruken av automatisering i applikasjonene dine, må du selvfølgelig ha detaljert arbeidskunnskap om applikasjonene du integrerer - i dette tilfellet MS Word.

For at "Office" -programmene skal fungere, må brukeren eie applikasjonen som fungerer som automatiseringsserver. I vårt tilfelle må MS Word installeres på brukerens maskin.

02

av 07

Koble til Word: "Hello Word" Early Binding vs. Sen binding

Det er flere hovedtrinn og tre hovedmåter å automatisere Word fra Delphi.

Delphi> = 5 - Office XX-serverkomponenter

TWordApplication

TWordDocument

Delphi 3,4 - Tidlig binding

Skriv inn biblioteker

For å bruke Words type bibliotek i Delphi (versjon 3 eller 4), velg Project | Importer Type Library… -menyen og velg filen msword8.olb som ligger i Microsoft Office sin "Office" -katalog. Dette vil lage filen "Word_TLB.pas" som er objektets pascal-oversettelse av typebiblioteket. Inkludere Word_TLB i brukerlisten over alle enheter som får tilgang til Word-egenskaper eller -metoder. Henvisning til Word-metoder ved bruk av typebiblioteket kalles tidlig binding.

Delphi 2 - Late Binding

Sen binding

bør unngås, hvis mulig, siden det er mye enklere og raskere å bruke typebiblioteker - kompilatoren hjelper ved å fange feil i kilden. Ved bruk av senbinding erklæres Word for å være en variabel av typen Variant. Dette betyr spesielt enn å ringe metoder og få tilgang til egenskaper du må vite hva de er.

04

av 07

Stavekontrollprosjektet - TWordApplication, TWordDocument

Staveprosjektet på Design-Time
Staveprosjektet på Design-Time.

For å bygge et stavekontrollprosjekt trenger vi to former: det ene brukes til å redigere teksten og det andre for å se staveforslag... men la oss gå fra begynnelsen.

Start Delphi. Lag et nytt prosjekt med ett blankt skjema (form1, som standard). Dette vil være hovedformen i stavekontrollen med MS Word-prosjektet. Legg til en TMemo (Standardfane) og to TButtons til skjemaet. Legg til litt tekst i Notatet som fyller Lines-egenskapen. Selvfølgelig med noen skrivefeil. Velg kategorien Servere og legg til TWordApplication og TWordDocument til skjemaet. Endre navnet på TWordApplication-komponent fra WordApplication1 til WordApp, WordDocument1 til WordDoc.

TWordApplication, TWordDocument

Den publiserte eiendommen ConnectKind brukes til å kontrollere om vi kobler til en nylig lansert Word-forekomst eller til en eksisterende forekomst som allerede kjører. Sett ConnectKind til ckRunningInstance.

Når vi åpner eller oppretter en fil i Word, oppretter vi et dokumentobjekt. En vanlig oppgave når du bruker automatisering av Word er å spesifisere et område i et dokument og deretter gjøre noe med det, for eksempel sette inn tekst og stavekontroll. Et objekt som representerer et sammenhengende område i et dokument kalles Range.

05

av 07

Stavekontrollprosjektet - Stavekontroll / erstatte

GetSpellingSuggestions at Design-Time
GetSpellingSuggestions at Design-Time.

Ideen er å gå gjennom teksten i Memo og analysere den til mellomrom avgrensede ord. For hvert ord kaller vi MS Word for å stavekontrollere det. Words automatiseringsmodell inneholder SpellingErrors-metoden som lar deg sjekke stavemåten for tekst som finnes i et område.

Område er definert for å inneholde bare ordet som bare er parset ut. SpellingErrors-metoden returnerer en samling feilstavede ord. Hvis denne samlingen inneholder mer enn null ord, går vi videre. En samtale til GetSpellingSuggestions-metoden, som gir ordet med feil staving, fyller en SpellingSuggestions-samling av foreslåtte erstatningsord.

Vi sender denne samlingen til SpellCheck-skjemaet. Det er den andre formen i prosjektet vårt.

For å legge til et nytt skjema i et prosjekt, bruk File | Ny form. La den ha navnet 'frSpellCheck'. Legg til tre TBitBtn-komponenter på dette skjemaet. To EditBox-er og en ListBox. Legg merke til de tre mer etikettene. Etiketten "Ikke i ordbok" er "koblet" til redigeringsboksen edNID. EdNID-en viser ganske enkelt feilstavet ord. Listeboksen lbSuggestions viser elementene i SpellingSuggestions-samlingen. Det valgte staveforslaget plasseres i redigeringsboksen edReplaceWith.

De tre bitknappene brukes til å avbryte stavekontrollen, ignorere det gjeldende ordet og for å endre feilstavet ord med det i redigeringsboksen edReplaceWith. Egenskapen BitBtn-komponenter ModalResult brukes når det refereres til det brukeren har klikket på. "Ignore" -knappen har ModalResult-egenskapen satt til mrIgnore, "Change" to mrOk og "Cancel" til mrAbort.

FrSpellCheck har en offentlig strengvariabel kalt sReplacedWord. Denne variabelen returnerer teksten i edReplaceWith når brukeren trykker på "Endre" -knappen.

07

av 07

Synonymordbok? Synonymordbok!

Som en bonus har prosjektet koden du kan bruke Word's Tesaurus. Det er ganske enklere å bruke tesaurusen. Vi analyserer ikke teksten, for det valgte ordet CheckSynonyms-metoden heter. Denne metoden viser sin egen valgdialog. Når et nytt ord er valgt, brukes innholdet i Word Documents Range til å erstatte det opprinnelige ordet.

instagram story viewer