Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Hilfe bei Richedit und Tstring bzw string (https://www.delphipraxis.net/82844-hilfe-bei-richedit-und-tstring-bzw-string.html)

flacky 20. Dez 2006 14:11


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:
 
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;
Das geht soweit gut.
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:
    form_editieren.richedit_bemerkung.Text := StringReplace(lauf.Daten.bemerkung, '; ', #13, [rfReplaceAll]);
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.
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 :)

marabu 20. Dez 2006 14:21

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:
 
var
  neu: TKnoten; // Neuer Knotenpunkt
begin
  // ...
  neu.Daten.bemerkung := form_hinzufuegen.edit_bemerkung.Text;
  // ...
end;
Wenn du aber einen Vorteil in der Zeichenkette '; ' siehst, dann so:

Delphi-Quellcode:
form_editieren.richedit_bemerkung.Text := StringReplace(lauf.Daten.bemerkung, '; ', sLineBreak, [rfReplaceAll]);
Dabei darf dann dein Trenner nicht als normaler Textbestandteil auftauchen...

Freundliche Grüße vom marabu

flacky 20. Dez 2006 14:38

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:

Zitat von marabu
Delphi-Quellcode:
form_editieren.richedit_bemerkung.Text := StringReplace(lauf.Daten.bemerkung, '; ', sLineBreak, [rfReplaceAll]);

geht zwar wunderbar, aber auch erst, nachdem einmal schon editieren aufgerufen wurde.
Ich habe mal das Programm im Anhang :D Ist mein erstes Programm. Es geht um ein Lustiges Taschenbuch Archiv, ist für die Schule

marabu 20. Dez 2006 14:54

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

flacky 20. Dez 2006 15:44

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

marabu 20. Dez 2006 16:57

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

flacky 20. Dez 2006 19:34

Re: Hilfe bei Richedit und Tstring bzw string
 
Delphi-Quellcode:
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;
Leider fehlt die Dokumentierung :/
edit_bemerkung ist das Richedit. Wie du mir forgeschlagen hast, habe ich WantReturns auf false gesetzt und somit ein bisschen vereinfacht :)

marabu 20. Dez 2006 20:03

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 09:33 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz