Dienstag, 15. Juli 2008

Rechtschreibkorrektur über Word

Wenn wir dem Anwender die Möglichkeit geben, innerhalb unserer Applikation Texte zu erfassen, die über ein paar Worte hinausgehen, dann wäre es ganz praktisch, diese erfassten Daten, auf Anfrage, einer Rechtschreibprüfung zu unterziehen. Ist auf dem Kundensystem Word installiert, so stellt sich diese Option als leicht realisierbar dar.
Der folgende Beispielcode greift auf eine Funktion zu, die ich bereits in einem früheren Posting veröffentlicht habe. Dort ging es um die Prüfung der aktuellen Word Version. Um die neue Funktion nutzen zu können, sollte der Code aus dem o.a. Posting somit ebenfalls als Funktion verfügbar sein. Sie stellt bei einer gültigen Word-Version innerhalb des _screen Objektes eine Referenz auf das erzeugte Word Objekt bereit (_screen.oWord)
* // Die Funktion SpellCheck verarbeitet entweder einen übergebenen Parameterstring       
* // oder, falls keine Wert übergeben wird, den Inhalt der Zwischenablage
FUNCTION SpellCheck
LPARAMETERS vText as String

LOCAL lcSource as String, loDoc AS Word.Document

DO CASE
CASE VARTYPE(m.vText) = [C]
lcSource = m.vText
CASE EMPTY(lcSource) AND !EMPTY(_CLIPTEXT)
lcSource = _CLIPTEXT
ENDCASE

* // Wenn Source gefüllt ist und Word geladen werden konnte, dann kann es losgehen
IF !EMPTY(lcSource) AND LoadWord() > 0

* // Neues leeres Worddokument erzeugen
loDoc = _screen.oWord.Documents.Add(,,1,.T.)

* // Das neue leere Worddokument mit dem zu prüfenden Text füllen
loDoc.Content.Text = lcSource

* // Rechtschreibkorrektur anwerfen
* // Wenn Rechtschreibfehler vermutet werden öffnet sich das Korrekturfenster
loDoc.CheckSpelling()

* // Jetzt steht im Worddokument der korrigierte Text, den wir unserer
* // Arbeitsvariablen bzw. Ziel-Property zuweisen
lcSource = loDoc.Content.Text

* // Sicherstellen, das Word weiterhin unsichtbar bleibt
_screen.oWord.Visible = .F.

* // Das zuvor erzeugte Worddokument schliessen,
* // ohne dass eine Sicherheitsabfrage aufpoppt
loDoc.Close(.F.)

* // Die nicht mehr benötigte Referenzvariable nullen
loDoc = .NULL.

* // Word schliessen ohne das eine Abfrage aufpoppt
_screen.oWord.Quit(.F.)

* // Referenzproperty nullen
_screen.oWord = .NULL.

RELEASE loDoc

ENDIF

RETURN lcSource

ENDFUNC
Anmerkung: Diese Funktion wurde nicht unter der Version 2007 getestet, da mir diese derzeit nicht zur Verfügung steht.

Dienstag, 1. Juli 2008

Aktualisierung von FoxCharts auf Version 0.40 Beta

Cesar Chalom hat eine neue Version seiner Diagramm Bibliothek ins Netz gestellt. Wer dieses Tool bisher noch nicht kennt, sollte das unbedingt nachholen!

Hier der Link zum VFP-Imaging Blog. Dort stehen auch die neuen Features zum Nachlesen.
http://weblogs.foxite.com/vfpimaging/archive/2008/06/30/6353.aspx

Hier der Link zur Downloadseite auf Codeplex/VFPx
http://www.codeplex.com/VFPX/Release/ProjectReleases.aspx?ReleaseId=14851

Cesar lässt in einem Kommentar zum Blog durchblicken, dass auch Balken- und gestapelte Balkendiagramme geplant sind. Somit schliesst sich die Variationenlücke zur Diagrammdarstellung innerhalb von Excel um ein weiteres Stück.