Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi RichEdit aus und in Datenbank? (https://www.delphipraxis.net/4955-richedit-aus-und-datenbank.html)

Stephan 18. Mai 2003 13:08


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

eddy 24. Mai 2003 21:24

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

Stephan 25. Mai 2003 07:43

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

eddy 25. Mai 2003 14:06

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:
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;
Das Feld SvID wird automatisch erzeugt, beginnend bei Eins. Jeden Wert gibt es nur ein Mal.

TextPath gibt das Verzeichnis an, in dem die RTF-Dateien gespeichert werden.


mfg
eddy


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:18 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