![]() |
RichEdit aus und in Datenbank?
Hi,
Wie kann ich den Inhalt von einem normalen (kein DBRichedit) RichEdit mit allen Formatierungen über TTable in eine Tabelle speichern und auslesen. zweite Frage: Wie kann ich das "automatische" Speichern verhindern? Sobald ich in einem DBRichEdit was verändert hab und den Datensatz wechsle wir der Inhalt gespeichert. Auch ein DataSoruce.Cancel hilft nicht viel. viele Grüße Stephan |
Hallo Stephan,
ich verwende ein TRichEdit für formatierte Text. Gespeichert wird das ganze in einer Paradox-Tabelle (Tab) in einem formatierten Memo (ftMemo). Beim Ändern (RichEdit.OnChange) wird ein Button auf enable:=true gesetzt. Mit Tab.AfterScroll wird RichEdit eingelesen und Tab.BeforeScroll erlaubt das Speichern. Vielleicht hilft's weiter. Falls Du Beispiel-Code brauchst, wäre kein Problem. mfg eddy |
Hi,
danke für deine Antwort! So ganz blick ich allerdings noch nicht durch. Könntest du mir vielleicht einen kleinen Quellcode posten? viele Grüße Stephan |
Hallo Stephan,
aber sicher! Habe mich noch einmal ein bischen mit meinem Quelltext beschäftigt und muß mich korrigieren. Das formatierte Memo hatte nicht funktioniert, also habe ich jeden einzelnen Text samt Formatierung in einer Textdatei gespeichert. Der Name der Textdatei wird automatisch generiert, da ich mich um so etwas nicht kümmern will. Verwendete Elemente: edInfo : TRichEdit Tab1 : TTable sbSave : TSpeedButton In Lang (Typ ftMemo) wird dabei der Inhalt von edInfo gespeichert. Sämtliche Angaben zu Schriftart, Größe, Farbe usw. bleiben erhalten.
Code:
Das Feld SvID wird automatisch erzeugt, beginnend bei Eins. Jeden Wert gibt es nur ein Mal.
procedure TFInfoFinder.Tab1AfterScroll(DataSet: TDataSet);
begin .... s := TextPath + UPGenTextName(Tab1); if FileExists(s) then edInfo.Lines.LoadFromFile(s); ... sbSave.Enabled := false; end; procedure TFInfoFinder.Tab1BeforeScroll(DataSet: TDataSet); begin if sbSave.Enabled then begin .... edInfo.Lines.SaveToFile(TextPath + UPGenTextName(Tab1)); sbSave.Enabled := false; end; end; function TFInfoFinder.UPGenTextName(Tab : TTable) : string; var s : string; begin s := IntToStr(Tab1.FieldByName('SvID').AsInteger); while length(s) < 5 do s := '0' + s; Result := cText + s + '.' + rtfext; // z.B. TXT00035.RTF end; procedure TFInfoFinder.edInfoChange(Sender: TObject); var posi : integer; begin if edInfo.Focused then begin .... sbSave.Enabled := true; end; end; TextPath gibt das Verzeichnis an, in dem die RTF-Dateien gespeichert werden. mfg eddy |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:12 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 by Thomas Breitkreuz