Seite 3 von 5
Re: RichEdit Funktionen (OOP): Jetzt mit ImageSupport
Verfasst: 09.11.2013 21:02
von ts-soft
Nur fünf von zehn oder fünf von fünf?
Aber schön, das nach 5 Doppelpostings von mir, mal wieder was geschrieben wird.
Nach 2,3 Jahren und fast 4000 Downloads, scheint also genutzt zu werden, auch
wenn sich nur selten jemand äußert
Danke, Thomas
Re: RichEdit Funktionen (OOP): Jetzt mit ImageSupport
Verfasst: 10.07.2014 08:55
von kwp
Hallo Thomas,
ich bin gestern auf die RichEdit-Funktionen gestoßen, dafür auch von mir 5 Sterne (von 5)! Ich habe jedoch folgendes Problem: Wenn ich Bilder in den Text einbinde - egal ob mit cut & paste oder drag & drop - und anschließend den RT-Inhalt wieder auslese, ist der Inhalt verstümmelt. Mit Hilfe von Notepad++ habe ich festgestellt, dass anscheinend der vordere Teil fehlt. Es geht als irgendwo in den Hex-Werten für das Bild los, das Ende ist dann vollständig.
Vielleicht braucht's nur eine zusätzliche Option beim SendMessage in RichEdit_GetRTFText?
Hier das angepasste Beispiel
RichEdit_Example_ViewRTFCode, bei dem man den Effekt nachvollziehen kann:
Code: Alles auswählen
EnableExplicit
XIncludeFile "..\RichEdit.pbi"
UsePNGImageDecoder()
UseJPEGImageDecoder()
UseModule RichEdit
Define.RichEdit Edit
Define.RichEdit Edit2
Macro mcDoubleText()
Edit2\DisableRedraw(#True)
Edit2\Clear()
Edit2\SetText( "{" )
Edit2\SetText( Mid(Edit\GetRTFText(),2))
Edit2\DisableRedraw(#False)
Edit2\Redraw()
EndMacro
If OpenWindow(0, #PB_Ignore, #PB_Ignore, 600, 250, "Test Image")
Edit = New_RichEdit(0, 0, 600, 100)
Edit2 = New_RichEdit(0,120,600,100)
Edit2\SetReadonly(#True)
Edit\SetInterface()
Edit\SetText("This is a picture: ")
LoadImage(0, OpenFileRequester("Datei öffnen","*.png","PNG (*.png)|*.png|JPG (*.jpg)|*.jpg",0))
Edit\SetImage(ImageID(0))
Edit\SetText(" in a EditorGadget!" + #CRLF$)
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
Break
Case #PB_Event_Gadget
If EventGadget() = Edit\GetId()
mcDoubleText()
;
EndIf
Case #WM_KEYUP
If GetActiveGadget() = Edit\GetId()
mcDoubleText()
EndIf
EndSelect
ForEver
Else
Debug "Could not Open Window!"
EndIf
CloseWindow(0)
End
Re: RichEdit Funktionen (OOP): Jetzt mit ImageSupport
Verfasst: 02.01.2015 10:58
von Cebu-Uli
Hallo Thomas,
Auch ich bin froh, dass RichEdit-Modul gefunden zu haben. Echt Klasse. Doch leider habe ich ein Problem damit, dass mich ziemlich nervt. In meinem Programm benutze ich mehrere RichEdit-Gadgets in verschiedenen Fenstern. Wenn man nun von einem Fenster in ein anderes wechselt und direkt in das RichEdit-Gadget klickt, so wird der Cursor darin nicht positioniert! Er erscheint ziemlich willkürlich irgendwo im Gadget. Erst ein zweiter Klick bewirkt die exakte Positionierung. Mein Code wäre zu lang, um den hier zu posten. Das Problem tritt jedoch bei allen deinen Beispielprogrammen ebenfalls auf. Keine Positionierung des Cursors im Gadget, wenn das Fenster nicht vorher aktiv war. Es wäre schön, wenn du hierfür eine Lösung hättest.
Gruß
Uli
Re: RichEdit Funktionen (OOP): Jetzt mit ImageSupport
Verfasst: 02.01.2015 11:27
von ts-soft
Keine Ahnung
Wie wäre es, bei #PB_EventType_Focus die Cursorposition zu speichern und bei #PB_EventType_LostFocus neu zu setzen?
Ansonsten fällt mir dazu gerade nichts ein.
Gruß
Thomas
Re: RichEdit Funktionen (OOP): Jetzt mit ImageSupport
Verfasst: 02.01.2015 12:50
von Cebu-Uli
ts-soft hat geschrieben:Keine Ahnung
Wie wäre es, bei #PB_EventType_Focus die Cursorposition zu speichern und bei #PB_EventType_LostFocus neu zu setzen?
Ansonsten fällt mir dazu gerade nichts ein.
Gruß
Thomas
Da verstehst du mich wohl nicht richtig. #PB_EventType_LostFocus spielt hier keine Rolle! Es geht darum den Focus zu erhalten. Wenn ich bei #PB_EventType_Focus die Cursorposition auslese und den Cursor mit Edit\SetCursorPos(X, Y) setze, dann funktioniert das an dieser Stelle einfach nicht. Der Cursor wird immer 2 Zeilen unter den letzten Text gesetzt und darauf habe ich überhaupt keinen Einfluss! Das macht das Rich.Edit-Modul! Und deshalb frage ich dich nach einer Lösung, weil es von dir stammt.
Gruß
Uli
Re: RichEdit Funktionen (OOP): Jetzt mit ImageSupport
Verfasst: 02.01.2015 13:01
von Cebu-Uli
Probiere es doch einmal aus. Benutze deinen eigenen Beispiel-Code RichEdit_Example.pb. Dort kann man es sehr schön sehen. Einfach Text eingeben. Dann einem anderen Fenster den Focus geben und anschließend direkt in das RichEditGadget mitten in den Text klicken. Der Cursor landet 2 Zeilen hinter dem letzten Text.
Re: RichEdit Funktionen (OOP): Jetzt mit ImageSupport
Verfasst: 02.01.2015 13:09
von ts-soft
Tut mir leid, kann ich nicht nachvollziehen!
Gruß
Thomas
Re: RichEdit Funktionen (OOP): Jetzt mit ImageSupport
Verfasst: 02.01.2015 13:37
von Kiffi
ts-soft hat geschrieben:Tut mir leid, kann ich nicht nachvollziehen!
ich auch nicht. Der Cursor bleibt bei mir an seinem Platz.
Grüße ... Peter
Re: RichEdit Funktionen (OOP): Jetzt mit ImageSupport
Verfasst: 02.01.2015 13:47
von Cebu-Uli
ts-soft hat geschrieben:Tut mir leid, kann ich nicht nachvollziehen!
Gruß
Thomas
So, ich habe mir noch einmal die neueste Version von RichEdit.pbi geladen, obwohl ich die meines Wissens schon hatte. Gleicher Fehler! Immer wieder einfach nachvollziehbar! Was nicht stimmte war die Aussage mit dem Springen 2 Zeilen hinter den letzten Text. Richtig ist, dass der Cursor immer an die Stelle springt, wo zuletzt der Focus verloren wurde. Das ändert aber nichts an der Tatsache, dass da offensichtlich ein Fehler in deinem Modul ist. Ich bin aber wohl leider zu blöd, den zu finden. Deshalb habe ich ja gehofft, dass du helfen kannst. Na ja, wer nicht will, den soll man nicht weiter bedrängen. Trotzdem Danke.
Gruß
Uli
Re: RichEdit Funktionen (OOP): Jetzt mit ImageSupport
Verfasst: 02.01.2015 14:42
von ts-soft
Ich kann mir beim bestem Willen nicht vorstellen, was da für ein Fehler in meinem Modul sein sollte? Ich ändere nichts am Fokus
und überlasse alles dem Control (RichEdit).
Peter (Kiffi) kann das Problem auch nicht nachvollziehen, somit kann ich da erstmal nichts machen. Vielleicht ein fehlerhaftes
Hintergrundprogramm auf Deinem PC? Z.B. für Dualscreen oder ähnlich?
Vielleicht meldet sich ja noch jemand mit demselben Problem.
Gruß
Thomas