RichMemo

Rund um die LCL und andere Komponenten
Antworten
Heinrich Wolf
Beiträge: 323
Registriert: Di 12. Apr 2011, 13:21
OS, Lazarus, FPC: WinXP + VMWare Player mit Fedora14, L 1.1, FPC 2.7.1
CPU-Target: 1core 1,8GHz 32Bit
Wohnort: Fürth
Kontaktdaten:

RichMemo

Beitrag von Heinrich Wolf »

Hallo,

ich möchte eine RTF Datei ohne Benutzereingabe auf Festplatte schreiben. Dazu habe ich RichMemo mit „svn co https://lazarus-ccr.svn.sourceforge.net ... /richmemo/" onclick="window.open(this.href);return false;“ installiert. Auf Linux musste ich http://bugs.freepascal.org/view.php?id=17319 anwenden, um es installieren zu können. Ich hänge nach und nach formatierte Textfragmente an ein verborgenes RichMemo an und schreibe dann dessen Inhalt in einen FileStream. Auf Windows funktioniert es, aber auf Linux erhalte ich immer eine leere Datei, obwohl ich den korrekten Inhalt im RichMemo sehe.

1. Problem (gelöst):
Wenn ich

Code: Alles auswählen

visible := false;
setze, nimmt das RichMemo keinen Text an. Stattdessen lasse ich

Code: Alles auswählen

visible := True;
und decke das RichMemo mit einem Panel zu.

2. Problem (nur auf Linux, gelöst):

Code: Alles auswählen

RichMemo.SelStart := RichMemo.GetTextLen;
RichMemo.SelText := s;
funktioniert auf Windows, aber nicht auf Linux. Stattdessen verwende ich

Code: Alles auswählen

RichMemo.Text := RichMemo.Text + s;
Aber dabei verliere ich alle Formatierungen bis dahin. Daher sammle ich die Formatierungen in einer TList und wende sie erst an, nachdem alle Verkettungen erledigt sind.

3. Problem (gelöst):
Ich übergebe UTF8 codierte Textfragmente.

Code: Alles auswählen

RichMemo.GetTextLen
liefert Zahlen, die unbrauchbar sind, um den Bereich der Formatierungen damit festzulegen. Stattdessen führe ich meine eigene Länge mit:

Code: Alles auswählen

Inc(RichLen, UTF8Length(s));
4. Problem, ungelöst! Bitte gebt mir Rat!
In http://bugs.freepascal.org/view.php?id=19579 wurde ich abgewiesen.
Folgender Code, um den Text in eine Datei zu speichern, funktioniert auf Windows. In Linux erhalte ich immer eine leere Datei.

Code: Alles auswählen

Stream := TFileStream.Create(SaveDialog.FileName, fmCreate);
RichMemo.SaveRichText(Stream);
Stream.Free;
Viele Grüße
Heiner

Bora4d
Beiträge: 290
Registriert: Mo 24. Dez 2007, 13:14
OS, Lazarus, FPC: WinXP-Pro-Sp3, Xubuntu 12.04, (Laz 1.1-SVN Mai2012, FPC 2.6.1 / 2.6.0-Linux)
CPU-Target: AMD64X2

Re: RichMemo

Beitrag von Bora4d »

zu 4:
TCustomRichMemo.LoadRichText ruft TWSCustomRichMemoClass.LoadRichText auf. (siehe richmemo.pas)
Bei für GTK2 ist SaveRichText nicht implementiert also existiert nicht während es für Win32-Widgetset existiert.
Vergleiche gtk2richmemo.pas und win32richmemo.pas.
Findest du im Unterordner gtk2 bzw. win32.
Für GTK2 mußt du selber speichern-

Heinrich Wolf
Beiträge: 323
Registriert: Di 12. Apr 2011, 13:21
OS, Lazarus, FPC: WinXP + VMWare Player mit Fedora14, L 1.1, FPC 2.7.1
CPU-Target: 1core 1,8GHz 32Bit
Wohnort: Fürth
Kontaktdaten:

Re: RichMemo

Beitrag von Heinrich Wolf »

Schade!

Den RichMemo Quellcode hatte ich mir noch gar nicht angeschaut.

Ich hab auch eine RTF Datei mit dem Sample Projekt unter Windows erstellt und versucht, diese mit dem Sample Projekt unter Linux zu laden. Aber auch da kriege ich ein leeres Fenster.

Gruß
Heiner

Heinrich Wolf
Beiträge: 323
Registriert: Di 12. Apr 2011, 13:21
OS, Lazarus, FPC: WinXP + VMWare Player mit Fedora14, L 1.1, FPC 2.7.1
CPU-Target: 1core 1,8GHz 32Bit
Wohnort: Fürth
Kontaktdaten:

Re: RichMemo

Beitrag von Heinrich Wolf »

Hallo,

Ich wurde nicht ganz abgewiesen in http://bugs.freepascal.org/view.php?id=19579, sondern jetzt gebeten, einen neuen bug report zu öffnen. Hier ist er: http://bugs.freepascal.org/view.php?id=19624

Gruß
Heiner

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Re: RichMemo

Beitrag von Christian »

Dassn duplikat (nur ma so) ;)
Eh noch jemand fragt der zu faul zum suchen ist, von 15894.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Heinrich Wolf
Beiträge: 323
Registriert: Di 12. Apr 2011, 13:21
OS, Lazarus, FPC: WinXP + VMWare Player mit Fedora14, L 1.1, FPC 2.7.1
CPU-Target: 1core 1,8GHz 32Bit
Wohnort: Fürth
Kontaktdaten:

Re: RichMemo

Beitrag von Heinrich Wolf »

Vielen Dank für den Hinweis! Ich hab diese Info in http://bugs.freepascal.org/view.php?id=19624 vermerkt.

Heiner

Antworten