![]() |
Hilfe bei Richedit und Tstring bzw string
Hi,
ich hab momentan ein kleines Problem mit RIchEdit etc... also um die ganze Sache mal zu beschreiben : Ich habe eine doppelt verkettete Liste als Datensatz. Diese Liste wird dann in einer listview wiedergegeben. Ich benutze als eines der Eingabefelder ein RichEdit. Gespeichert wird es dann so :
Delphi-Quellcode:
Das geht soweit gut. var neu : TKnoten; // Neuer Knotenpunkt i,z:integer; // Zaehler fuer bemerkung (trichedit) begin i:=form_hinzufuegen.edit_bemerkung.Lines.Count-1; // Zählt die lines ;) for z:=0 to i do begin neu.Daten.bemerkung:=neu.Daten.bemerkung+form_hinzufuegen.edit_bemerkung.Lines[z]+'; '; end; Nun will ich auch die Eintraege editieren und will sie dann wieder zurueck ins RichEdit laden, mit den Absätzen, die ich ja vorher durch Semikolons ersetz habe.
Delphi-Quellcode:
Wenn ich das so mache, wird der erste Eintrag, den ich editieren will, zwar in alllen anderen Feldern angezeigt, aber das RichEdit ist leer. Erst wenn ich es ein zweites mal aufrufe - dann geht es ueberall wunderbar.
form_editieren.richedit_bemerkung.Text := StringReplace(lauf.Daten.bemerkung, '; ', #13, [rfReplaceAll]);
Warum ist das so, bzw. gibt es da vielleich eine Lösung Ich hoffe ihr konntet meine Schilderung verstehen. Mein erstes mal hier :D Wenn ihr das Programm selber anschauen wollt, sagt es und ich lad es hoch :) |
Re: Hilfe bei Richedit und Tstring bzw string
Herzlich willkommen in der Delphi-PRAXiS, flacky.
Weißt du, dass du die Zeilen einfach mit ihrem normalen Zeilentrenner übernehmen kannst?
Delphi-Quellcode:
Wenn du aber einen Vorteil in der Zeichenkette '; ' siehst, dann so:var neu: TKnoten; // Neuer Knotenpunkt begin // ... neu.Daten.bemerkung := form_hinzufuegen.edit_bemerkung.Text; // ... end;
Delphi-Quellcode:
Dabei darf dann dein Trenner nicht als normaler Textbestandteil auftauchen...
form_editieren.richedit_bemerkung.Text := StringReplace(lauf.Daten.bemerkung, '; ', sLineBreak, [rfReplaceAll]);
Freundliche Grüße vom marabu |
Re: Hilfe bei Richedit und Tstring bzw string
Liste der Anhänge anzeigen (Anzahl: 1)
Danke fuer die schnelle Antwort :D
Joip, das weiß ich schon, nur wir dies dann in der listview als zwei Balken dargestellt. Gruß flacky edit: Zitat:
Ich habe mal das Programm im Anhang :D Ist mein erstes Programm. Es geht um ein Lustiges Taschenbuch Archiv, ist für die Schule |
Re: Hilfe bei Richedit und Tstring bzw string
Nicht schlecht für dein erstes Programm - aber am ausführbaren Programm kann ich nicht erkennen, warum beim ersten Editiervorgang das RichEdit leer bleibt.
Übrigens: Wenn du bei deinem RichEdit die Eigenschaft WantReturns auf False setzt, dann kannst du dir das Hin- und Herwandeln der Zeilentrenner schenken. Freundliche Grüße |
Re: Hilfe bei Richedit und Tstring bzw string
Danke,
ist zwar eine einfache Lösung, aber denoch genau das, was ich brauchte :D danke dir! Aber das eigentlich Problem besteht leider immer noch. Beim ersten mal Editieren fehlt der Text im RichEdit :( mfg flacky ps.: Danke fürs Lob :D |
Re: Hilfe bei Richedit und Tstring bzw string
Zeige doch mal den Code, welcher ausgeführt wird, wenn auf den Schalter "Editieren" geklickt wird. Vielleicht ergeben sich daraus weitere Erkenntnisse.
Freundliche Grüße |
Re: Hilfe bei Richedit und Tstring bzw string
Delphi-Quellcode:
Leider fehlt die Dokumentierung :/
procedure Tmain.sbutton_open_editierenClick(Sender: TObject);
var lauf : TKnoten; begin if (Listview.ItemIndex <> -1) then begin lauf:=anfang; while (lauf.Daten.ltb_nummer) <> strtoint(Listview.Items.Item[Listview.ItemIndex].Caption) do begin lauf:=lauf.nach; if (lauf=ende) then begin showmessage('Kein ordnungsgemäßer Eintrag ausgewählt!'); exit; end; end; form_editieren.edit_bemerkung.Text := Trim(lauf.Daten.bemerkung); form_editieren.edit_nummer.Text := inttostr(lauf.Daten.ltb_nummer); form_editieren.edit_titel.Text := lauf.Daten.titel; form_editieren.cb_bestand.Checked := lauf.Daten.bestand; form_editieren.tbar_bewertung.Position := lauf.Daten.bewertung ; form_editieren.showmodal ; end; end; edit_bemerkung ist das Richedit. Wie du mir forgeschlagen hast, habe ich WantReturns auf false gesetzt und somit ein bisschen vereinfacht :) |
Re: Hilfe bei Richedit und Tstring bzw string
Wir wissen beide, dass der Eintrag aus der verketteten Liste gefunden wird, weil (1) die Message nicht ausgegeben wird und (2) einige Felder des Edit-Dialogs korrekt befüllt werden. Du könntest mal einen Breakpoint hinter die While-Schleife setzen und den Inhalt von lauf.Daten überprüfen. Setze auch Breakpoints auf alle Stellen, an denen der Bemerkungstext gesetzt wird, dann solltest du dem Fehler recht bald auf die Spur kommen. Ich muss jetzt wieder auf mein Krankenlager.
Gute Nacht |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:41 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz