Seite 1 von 1
Re: Autokorrektur in Base
Verfasst: So, 09.03.2014 18:40
von F3K Total
Airlinepapst2 hat geschrieben:Hat jemand eine Idee woran es liegen kann??
Ja, es gibt keine Autokorretur in Formular-Kontrollelementen, kann man sich nur per Makro basteln.
Siehe z.B.
hier.
HTH R
Re: Autokorrektur in Base
Verfasst: So, 09.03.2014 19:29
von RobertG
Hallo Airlinepapst,
das genannte Makro zeigt Dir, wenn Du es startest, falsche Wörter erst einmal in einem Dialog an. So etwas kann natürlich bei der Datenbank von den Feldern des Formulars gefüttert werden.
Nimm einmal das Makro, ersetze in aLocale ... die entsprechenden Landescodes und lasse es mit entsprechenden eigenen Einträgen in s=Array( ) laufen:
Code: Alles auswählen
aLocale.Language = "de"
aLocale.Country = "DE"
s = Array("ni", "Airline","Papst", "dre")
Statt des Arrays kann jetzt auch der Inhalt eines Formularfeldes eingelesen und überprüft werden.
Du möchtest allerdings keine Rechtschreibhilfe, sondern eine Autokorrektur. Ich kann mir vorstellen, dass auch die entsprechend gefüttert werden kann. So einem Problem habe ich mich allerdings bislang nicht gestellt - weil ich eher der Typ bin, der verzweifelt danach sucht, an welcher Stelle denn die Autokorrektur ausgestellt bzw. vorübergehend überlistet werden kann
Re: Autokorrektur in Base
Verfasst: So, 09.03.2014 19:55
von RobertG
Hallo Airlinepapst,
das mit den Bildern muss auch in Access gehen. Ich weiß, dass bei uns in der Schulverwaltungsdatenbank (Access, vorgeschrieben vom Land) auch die Bilder der Schüler und Schülerinnen verwaltet werden.
Hier trotzdem noch einmal das Makro in leicht geänderter Fassung, da der Link da ein kleines Problem hatte und auch die richtigen Worte anzeigte:
Code: Alles auswählen
SUB Spellcheck
Dim s() As Variant
Dim vReturn As Variant, i As Integer
Dim emptyArgs(0) as new com.sun.star.beans.PropertyValue
Dim aLocale As New com.sun.star.lang.Locale
aLocale.Language = "de"
aLocale.Country = "DE"
s = Array("di", "Herr","Frau", "die")
'http://api.openoffice.org/common/ref/com/sun/star/linguistic2/XSpellChecker.html
DIM vSpeller AS VARIANT
vSpeller = createUnoService("com.sun.star.linguistic2.SpellChecker")
FOR i = LBound(s()) TO UBound(s())
vReturn = vSpeller.isValid(s(i), aLocale, emptyArgs())
IF vReturn = False THEN
vReturnS = vSpeller.spell(s(i), aLocale, emptyArgs())
sAlternativen = vReturnS.Alternatives
FOR a = 0 TO UBound(sAlternativen)
sAlternative=sAlternative+vReturnS.Alternatives(a)+chr(13)
NEXT
MsgBox "Rechtschreibprüfung: Das Wort '" & s(i) & "' ist vermutlich falsch. " &chr(13)& "Alternativvorschläge: " &chr(13)& sAlternative
END IF
sAlternative=""
Next
END SUB
Ich weiß nur nicht, wie ich an die Einträge der Autokorrektur statt an die des Wörterbuches komme. Dann wäre auch die Autokorrektur bei einem Formular kein Problem. Du möchtest ja Kürzel bei einem entsprechend längeren Text schreiben, oder sehe ich das falsch?
Gruß
Robert
Re: Autokorrektur in Base
Verfasst: So, 09.03.2014 20:56
von RobertG
Hallo Airlinepapst,
wenn ich noch mehr Zeit zum Tüfteln investiere könnte das etwas werden. Ich habe jetzt den Zugriff zum "Autotext":
createunoservice("com.sun.star.text.AutoTextContainer")
Bei einem Formular erhalte ich nach Eingabe von "AF" jetzt
"Bitte schicken Sie uns ein verbindliches Angebot für folgende Lieferungen."
Ich weiß nicht, ob das die richtige Stelle ist. Außerdem wird mir das Ganze noch auf den Formularhintergrund geschrieben. Aber das müsste ja auch noch zu regeln sein.
Gruß
Robert
Re: Autokorrektur in Base
Verfasst: So, 09.03.2014 21:16
von RobertG
Hallo Airlinepapst,
alles, was ich hier so investiere und zum Funktionieren hin bekomme gibt es anschließend im Base-Handbuch zu lesen.
Ich bin bisher gut darum herum gekommen, viel Geld in Software zu investieren. Meine letzten Investitionen in der Richtung waren wohl solche Boxen wie SUSE-Linux 9.0 - sehr lange her. Dafür investiere ich hier in der Beratung Zeit.
Gruß
Robert
Re: Autokorrektur in Base
Verfasst: Di, 11.03.2014 17:00
von RobertG
Hallo Uwe, *,
ich habe jetzt das entsprechende Makro fertig. Es nutzt die Autotext-Eingaben (nicht die Autokorrektur - dazu habe ich die Verbindung noch nicht gefunden, ist aber eigentlich auch nicht für das Ersetzen von Kürzeln durch kompletten Text gedacht).
Ich hänge eine Beispieldatei an. Die Datei enthält keine Daten, nur ein Formular mit einem Textfeld, an dem die Änderungen des Inhaltes durch Eingabe von Text und Kürzeln beobachtet werden kann. So ein Makro macht natürlich dann am meisten Sinn, wenn es mit eigenem Autotext beschickt wird. Dazu ist kurz angegeben, wo dieser einzugeben und welche Änderung am Makro zu handhaben ist, damit auf die Quelle zugegriffen wird.
Gruß
Robert
Re: Autokorrektur in Base
Verfasst: Do, 13.03.2014 18:24
von RobertG
Hallo *,
ich habe noch etwas weiter getestet und so etwas wie eine Rechtschreibprüfung versucht. Leider habe ich es bisher nicht hin bekommen, einzelne Worte farbig zu markieren oder zu unterschlängeln, um falsch geschriebene Worte zu kennzeichnen. Das müsste aber eigentlich sein, damit sich Worte, die nicht im Wörterbuch stehen, auch fehlerfrei abspeichern lassen. In der angehängten DB werden die Worte in Fragezeichen gesetzt.
Edit: Nachtrag - Es muss für eine separate Formatierung einzelner Worte das Textfeld auf "Mehrzeilig mit Formatierungen" gestellt werden. Dann ist auch eine Unterschlängelung möglich. Ich tausche die angehängte Datei mit der entsprechend funktionierenden Datei aus.
Gruß
Robert
Re: Autokorrektur in Base
Verfasst: So, 16.03.2014 09:57
von F3K Total
Hallo Robert,
ist es bei dir auch so, wie bei mit hier (AOO 4.0.1), dass das Feld mit der Eigenschaft .RichText (entspricht mehrzeilig mit Formatierungen) die Bindung an die DB verliert?
Gruß Rik
Re: Autokorrektur in Base
Verfasst: So, 16.03.2014 11:40
von RobertG
Hallo Rik,
Du hast Recht, ist in allen Base-Versionen so. Das hat ja auch eine gewisse Logik, weil die Formatierungen ja nicht gespeichert werden können. Also noch ein bisschen weiter überlegen. Aber grundsätzlich weiß ich ja jetzt, dass ich nicht völlig daneben lag. Nur merkwürdig, dass die Felder in den Eigenschaften normalerweise genau das anbieten, was ich haben will, aber es nur ausführen, wenn stattdessen die Verbindung zu Base gekappt wird.
Da bleibt mir dann vermutlich wieder nur so ein Klimmzug wie bei den Listen/Kombinationsfeldern. Ich muss ein zusätzliches verstecktes Feld gründen, aus dem beim Start des Formulars der Inhalt in das mehrzeilig formatierte Feld übertragen wird und beim Abspeichern das Ganze in die umgekehrte Richtung läuft.
Gruß
Robert