Seite 1 von 1
Gelöst: Teilbereiche in Formularfeldern unterstreichen
Verfasst: Do, 13.03.2014 21:26
von RobertG
Hallo *,
ich versuche gerade, auch Formularfelder in Base mit einer Rechtschreibkontrolle zu versorgen. Das Prinzip klappt dank vieler Quellen in diesem oder anderen Foren schon. Nur gelingt es mir einfach nicht, Teile eines Formularfeldes gesondert zu formatieren. Ich sehe im Model des Formcontrols, dass es dort so etwas gibt wie
Code: Alles auswählen
oFeld.Model.CharUnderlineHasColor = True
oFeld.Model.CharUnderlineColor = RGB(255,51,51)
Irgendwie schaffe ich es nicht, diese roten Wellenlinien zu erzeugen, die z.B. in diesem Kontrollfeld bei der Eingabe zu sehen sind, wenn eben die Ausdrücke nicht zu meiner Sprachregion passen.
Das ganze Formularfeld kann ich problemlos mit einer Wellenlinie versorgen - auch wenn diese nicht rot, sondern schwarz erscheint. Aber auch so eine schwarze Teillinie bekomme ich einfach nicht hin. Stattdessen werden zur Zeit alle Worte, die nach dem vorhandenen Wörterbuch nicht gedeutet werden können, mit einem führenden Fragezeichen versehen - für ein Datenbankformular natürlich nur bedingt tauglich, da ja diese Fragezeichen auch mit abgespeichert würden.
Gibt es diese Möglichkeit des teilweisen Formatierens überhaupt bei Formularfeldern? Eine Markierung bekomme ich ja hin dank des Beitrages von Rik (
viewtopic.php?f=18&t=63572), aber auch damit komme ich partout nicht weiter.
Gruß
Robert
Re: Teilbereiche in Formularfeldern unterstreichen oder einf
Verfasst: Do, 13.03.2014 23:39
von balu
Hallo Robert,
kennst Du XRAY oder MRI? Wenn nicht, dann bitte unbedingt besorgen. Denn damit kann man alles mögliche Untersuchen, seis eine Zelle in Calc, oder ein Textfeld in einem Dialog. Ja ich weiß das Du von Formularen sprichst, aber damit habe ich wenig Erfahrung und außerdem war das eben ja nur als Beispiel genannt.
Nun zu deinem Problem.
Du bist eigentlich wohl schon auf dem richtigen Weg, jedoch fehlt dir noch etwas, und das wäre wohl
höchstwahrscheinlich das hier:
Da ich in einer Calc-Zelle eine Fette Wellenlinie gesetzt und diese dann mit XRAY Untersucht habe, kann ich dir nicht versprechen ob das auch in deinem Formcontrol zur Verfügung steht. Denn nicht alle Eigenschaften wie z.B. in einer Calc-Zelle, stehen auch in anderen Grafischen Elementen zur Verfügung. Das musst Du also mit den eben genannten Tools mal eben selber Untersuchen. Und wenn Du nix von CharUnderline siehst, dann gibts das dort auch nicht.
Ich hoffe ich konnte dir etwas weiterhelfen.
Gruß
balu
Re: Teilbereiche in Formularfeldern unterstreichen oder einf
Verfasst: Fr, 14.03.2014 14:51
von RobertG
Hallo balu,
xray nutze ich hier auch. Ich habe auch die entsprechenden Eigenschaften für oFeld.Model dort stehen und vorher schon
Code: Alles auswählen
oFeld.Model.CharUnderline = com.sun.star.awt.FontUnderline.WAVE
versucht. Irgendwie tut sich da leider auch mit
nichts. Ich bin eigentlich davon ausgegangen, dass ich die Eigenschaften mit dem TextCursor einfügen und beim nächsten Wort wieder aufheben kann. Das ist mir erst einmal nicht geglückt. Das ganze Formularfeld konnte ich mit einer Wellenlinie versehen - aber das bringt mir natürlich nichts. Auch habe ich einen Bereich markiert und dann versucht, über das obige Verfahren etwas zuzuweisen - klappt auch nicht.
Ich werde noch einmal ein bisschen testen und dann eine Beispieldatei mit den Versuchen hier online stellen.
Nachtrag: Im Datenbankanhang sind alle Versuche, die ich unternommen habe, als Kommentare sichtbar. Es handelt sich um das Makro SUB MarkierenFehlerhafterWorteWellenlinie
Gruß
Robert
Re: Teilbereiche in Formularfeldern unterstreichen oder einf
Verfasst: Sa, 15.03.2014 21:03
von RobertG
Hallo *,
ich habe das jetzt einmal versucht auf Calc-Zellen zu übertragen. Dort ist es ja offensichtlich möglich, Teile separat zu formatieren. Über Makros bekomme ich auch hier die entsprechende Formatierung nicht geregelt. Irgendwo muss in dem Zugriff, den ich dort nehmen will, noch prinzipiell etwas falsch sein.
Ich hänge einmal das Calc-Beispiel an.
Gruß
Robert
Re: Teilbereiche in Formularfeldern unterstreichen oder einf
Verfasst: Sa, 15.03.2014 21:48
von RobertG
Hallo *,
ich habe gemerkt, dass ich von den Cursor-Geschichten noch zu wenig Ahnung habe. In Calc klappt das jetzt mit der Linie unter falsch geschriebenen Worten, wenn ich unterschiedliche Curorzugriffe benutze. Jetzt werde ich einmal sehen, wie ich das doch auf Base übertragen bekomme.
Beispiel für Calc im Anhang - hat noch einen Schönheitsfehler (Strich um Leertaste zu lang), aber das werde ich in Base wohl in den Griff bekommen, wenn ich denn erst einmal die Schlängellinie drin habe.
Gruß
Robert
Re: Teilbereiche in Formularfeldern unterstreichen oder einf
Verfasst: Sa, 15.03.2014 21:49
von F3K Total
Hallo Robert,
mit diesem Code kommt zumindest mal die "Welle"
Code: Alles auswählen
Sub Wave
ocell = thiscomponent.sheets.Tabelle1.getcellbyposition(3,0)
ocell.string = "Dies ist kein falscher Satz"
oTextCursor = oCell.createTextCursor
oTextCursor.collapseToStart
oTextCursor.goRight(8,true)
oTextCursor.CharUnderline = 9
oTextCursor.CharUnderlineHasColor = True
oTextCursor.CharUnderlineColor = RGB(255,51,51)
oTextCursor.goRight(1,false)
oTextCursor.goRight(13,true)
oTextCursor.CharUnderline = 9
oTextCursor.CharUnderlineHasColor = True
oTextCursor.CharUnderlineColor = RGB(0,0,255)
end sub
Gruß Rik
Re: Teilbereiche in Formularfeldern unterstreichen oder einf
Verfasst: So, 16.03.2014 08:56
von RobertG
Hallo Rik, *
ich habe den Haken gefunden. Das Ganze geht in Base-Formularen nicht mit einfachen Feldern sondern nur mit Feldern des Typs "mehrzeilig mit Formatierungen". Dann erhalte ich die rot geschlängelte Linie an der korrekten Position. Nur kann ich mich jetzt nicht mehr einfach mit dem Tabulator aus einem Feld herausbewegen. Aber das ist wohl ein anderes Problem.
Für Interessierte: Ich habe die Base-Datei mit der funktionierenden Rechtschreibüberprüfung hier angehängt:
viewtopic.php?f=8&t=63563#p243089
Gruß
Robert