Hallo liebe Delphi-Helfer
Ich habe ein TcMemo-Objekt mit dem ich Memo-Felder aus der Datenbank verarbeite, bzw. verarbeiten will.
Solange ich von TcMemo zu TRichEdit oder umgekehrt arbeite, funktioniert mein Objekt wunderbar.
Delphi-Quelltext
1: 2:
| A.Teilebezeichnung.SetRichEdit(reRichEdit); B.Teilebezeichnung.GetRichEdit(reRichEdit); |
So hat meine B.Teilebezeichnung die Bezeichnung von A übernommen.
Mein Problem ist nun aber, dass ich die Bezeichnung von A zu B haben will, ohne ein TRichEdit dazwischen zu klemmen.
Zumindest nicht, in dem Formular wo ich das anwende:
Delphi-Quelltext
1:
| A.Teilebezeichnung.AsRTF := B.Teilebezeichnung.AsRTF; |
Funktioniert aber nicht. B.Teilebezeichnung bleibt leer.
Wie muss meine Procedur TcMemo.SetRTF ausgehen damit das klappen könnte?
Gern auch ganz ohne ein TRichEdit das darin erzeugt werden muss.
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59:
| TcMemo = class private FRTF: TMemoryStream; FString: String; procedure SetString(const psWert: String); procedure SetRTF(pcWert: TMemoryStream); public constructor Create; procedure GetRichEdit(pcRichEdit: TRichEdit); procedure SetRichEdit(pcRichEdit: TRichEdit); published property AsString: String read FString write SetString; property AsRTF: TMemoryStream read FRTF write SetRTF; end;
constructor TcMemo.Create; begin FRTF := TMemoryStream.Create; FString := ''; end;
procedure TcMemo.GetRichEdit(pcRichEdit: TRichEdit); begin FString := pcRichEdit.Text; FRTF := TMemoryStream.Create;
pcRichEdit.Lines.SaveToStream(FRTF); FRTF.Position := 0; end;
procedure TcMemo.SetRichEdit(pcRichEdit: TRichEdit); begin pcRichEdit.Text := FString; end;
procedure TcMemo.SetRTF(pcWert: TMemoryStream); var cRichEdit: TRichEdit; begin cRichEdit := TRichEdit.Create(Application.MainForm); cRichEdit.ParentFont := False; cRichEdit.Parent := Application.MainForm;
pcWert.Position := 0; cRichEdit.Lines.LoadFromStream(pcWert);
cRichEdit.Lines.SaveToStream(FRTF); FRTF.Position := 0;
FreeAndNil(cRichEdit); end;
procedure TcMemo.SetString(const psWert: String); begin FString := Trim(psWert); end; |