Hallo PBianer!
Ich habe jetzt alle Fehler behoben, die bei mir aufgrund des Austausches des Comate-RTF-Feldes mit dem oleEdit.pbi-basierten Editorfeld aufgetaucht sind. Für Interessierte: Auch das Problem mit dem Hintergrundbild, das dazu führte, dass mein Textfeld bei scrollbedürftigen Texten verschwand, habe ich beseitigt. Ich habe das Textfeld einfach in ein Panel-Feld eingebettet, jetzt klappt alles einwandfrei.
Ein Problem bleibt aber noch. Die Funktion Editor_Format ermöglicht ja ein Formatieren des jeweils selektierten Textes in die Formate Bold, Italic, usw. Die Deaktivierung läuft über ein erneutes Aufrufen der Funktion, wenn also ein fettgschriebener Text erneut mit Editor_Format (gadget, #CFM_Bold) "bearbeitet" wird, hat das zur Folge, dass der Fettdruck verschwindet. So weit so gut. Nun habe ich in meinem Editor (in meinem Programm!) jedoch einen Button, der mit "Normal" beschriftet ist. Der ermöglicht es - insbesondere aus dem Clipboard kopierten - selektierten Text auf einen Schlag mit den von mir vordefinierten normalen Attributen zu formatieren, also Schriftgröße 11, Alignment = Left und keinerlei Zusatzformatierung wie Bold, Italic oder dergleichen.
Wie ich das mit dem neuen Textfeld bewerkstelligen soll, ist mir bislang noch schleierhaft. Nehmen wir an der kopierte Text ist fettgedruckt. Wenn ich jetzt beim Normal-Button die Anweisung geben würde, den Text mit Editor_Format (gadget, #CFM_Bold) zu "überarbeiten", dann würde der Fettdruck verschwinden. Klingt ja erst mal gut. Nur was mache ich, wenn der Text sowohl "normale" Elemente als auch unterstrichene als auch fettgedruckte Elemente enthält, wie es zumeist der Fall ist? Wenn ich die auf gut Glück mit allen Formatierung "überarbeite" dann enthält der Text auch ALLE Formatierung, sprich der gesamte Text wäre fettgedruckt UND unterstrichen usw.
Gibt es also ein Möglichkeit, einen selektierten Text auf einmal von all seinen Formatierung zu befreien, bis auf die Fontart und -größe?
//EDIT: Es würde mir keinen Zacken aus der Krone reißen, wenn ich auf die Funktion verzichten müsste, ich könnte ja den Text immer noch per Hand mittels der jeweiligen Formatierungstasten "entformatieren", also fettgedruckten Text mit der Bold-Taste, unterstrichenen Text mit der Underline-Taste usw. Der Normal-Button bringt aber eine enorme Zeitersprarnis mit sich, deswegen wär's gut, wenn ich ihn auch beim neuen Textfeld verwenden könnte.
Frage zur Formatierungsfunktion des oleEDIT.pbi-Editorfeldes
Frage zur Formatierungsfunktion des oleEDIT.pbi-Editorfeldes
Wenn die dicke Frau klatscht, ist die Oper zu Ende
Re: Frage zur Formatierungsfunktion des oleEDIT.pbi-Editorfe
Code: Alles auswählen
Procedure RemoveFormat(EditorGadget)
Protected oRange.CHARRANGE
Protected nRange.CHARRANGE
; Aktuelle Selektion merken
SendMessage_(GadgetID(EditorGadget), #EM_EXGETSEL, 0, oRange)
; Alles selektieren
nRange\cpMin = 0
nRange\cpMax = -1
SendMessage_(GadgetID(EditorGadget), #EM_EXSETSEL, 0, nRange)
; Formatierung entfernen
Editor_Format(EditorGadget, 0, 1)
; Alte Selektion wiederherstellen
SendMessage_(GadgetID(EditorGadget), #EM_EXSETSEL, 0, oRange)
EndProcedure
a²+b²=mc²
Erst mal wie immer besten Dank, Kiffi. Aber dein Code funzt nicht so ganz einwandfrei. Da es aber hier mindestens 2 Din-A-4 Seiten Text verschlingen würde, um dir zu beschreiben, wo genau es hakt, lass ich mal lieber die Screenshots sprechen:
Also, wenn ich den Text in diesem Antwortfeld komplett markiere :
http://www.bilder-space.de/show.php?f ... bgewk.jpg
und dann auf den Normal-Button drücke, der dein Codesegment enthält, geschieht erfreulicherweise das:
http://www.bilder-space.de/show.php?f ... Q13FL.jpg
sprich, das gewünschte Ergebnis.
Nehme ich aber den Text aus diesem Antwortfeld und markiere ihn komplett:
http://www.bilder-space.de/show.php?fi ... QNKkd.jpg
dann geschieht nach Drücken des Normal-Buttons folgendes:
http://www.bilder-space.de/show.php?f ... 9EE8O.jpg
(hab die Markierung jetzt nicht gelöscht, aber ich glaube, es ist trotzdem zu erkennen, dass alles im Fettdruck ist)
Vielleicht kannst du da ja noch nachbessern, wenn du Bock hast. Wobei ich irgendwie den Unterschied zwischen den Feldern nicht erkenne, denn es enthalten ja beide Felder eine Mixtur aus Fett und Normaldruck....deswegen hab ich auch die Bilder gepostet, vielleicht findest du ja nen Unterschied heraus.
Danke schonmal im Voraus!
Also, wenn ich den Text in diesem Antwortfeld komplett markiere :
http://www.bilder-space.de/show.php?f ... bgewk.jpg
und dann auf den Normal-Button drücke, der dein Codesegment enthält, geschieht erfreulicherweise das:
http://www.bilder-space.de/show.php?f ... Q13FL.jpg
sprich, das gewünschte Ergebnis.
Nehme ich aber den Text aus diesem Antwortfeld und markiere ihn komplett:
http://www.bilder-space.de/show.php?fi ... QNKkd.jpg
dann geschieht nach Drücken des Normal-Buttons folgendes:
http://www.bilder-space.de/show.php?f ... 9EE8O.jpg
(hab die Markierung jetzt nicht gelöscht, aber ich glaube, es ist trotzdem zu erkennen, dass alles im Fettdruck ist)
Vielleicht kannst du da ja noch nachbessern, wenn du Bock hast. Wobei ich irgendwie den Unterschied zwischen den Feldern nicht erkenne, denn es enthalten ja beide Felder eine Mixtur aus Fett und Normaldruck....deswegen hab ich auch die Bilder gepostet, vielleicht findest du ja nen Unterschied heraus.
Danke schonmal im Voraus!
Wenn die dicke Frau klatscht, ist die Oper zu Ende
hier noch mal die korrigierte und erweiterte Funktion:
Aufruf mit:
oder:
Grüße ... Kiffi
Code: Alles auswählen
Procedure RemoveFormat(EditorGadget, OnlySelection = #False)
Protected oRange.CHARRANGE
Protected nRange.CHARRANGE
If Not OnlySelection
; Aktuelle Selektion merken
SendMessage_(GadgetID(EditorGadget), #EM_EXGETSEL, 0, oRange)
; Alles selektieren
nRange\cpMin = 0
nRange\cpMax = -1
SendMessage_(GadgetID(EditorGadget), #EM_EXSETSEL, 0, nRange)
EndIf
; Formatierung entfernen
Editor_Format(EditorGadget, 0, 0)
If Not OnlySelection
; Alte Selektion wiederherstellen
SendMessage_(GadgetID(EditorGadget), #EM_EXSETSEL, 0, oRange)
EndIf
EndProcedure
Code: Alles auswählen
RemoveFormat(#myEditorGadget, #True); entfernt nur die Formatierung im selektierten Text
Code: Alles auswählen
RemoveFormat(#myEditorGadget) ; entfernt die Formatierung im gesamten Text (egal, ob selektiert oder nicht)
a²+b²=mc²
Spitzenmäßig Kiffi, hab's grad getestet, läuft so, wie auch beim "Vorgängerfeld". Besten Dank!!! Ab nächstem oder übernächstem Wochenende erfolgt dann mein Bericht, ob die Übertragung des Progs auf einen anderen PC / Laptop mit dem neuen Feld besser geklappt hat. Bis denne!
Wenn die dicke Frau klatscht, ist die Oper zu Ende