Autor |
Beitrag |
Jakane
      
Beiträge: 257
|
Verfasst: Fr 09.08.13 13:49
Hallo liebe Delphi-Helfer
ich habe folgende Aufgabe bekommen:
Bei uns gibt es ein Datenbankfeld Vorspanntext, als Blob definiert und als TMemoField verwendet.
Wenn ein Vorspanntext ausgewählt wurde, soll geprüft werden:
Ist der Text leer, wird der gewählte Text einfach rein geschrieben
Ist aber schon etwas im Text drin, soll der ausgewählte Text angehangen werden.
In den Foren findet sich dazu nicht wirklich etwas was mir hilft das zu lösen
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| Case MessageDlg('Möchten Sie den Vorspanntext...' + #10 + 'Ja: hinzufügen.' + #10 + 'Nein: ersetzen.', mtInformation, [mbYes, mbNo, mbAbort], 0) of mrYes: _TMemos_Kombinieren(TMemoField(IBQAuftrag.FieldByName('VORSPANNTEXT')), TMemoField(IBQTextbaustein.FieldByName('VORSPANNTEXT1')), TMemoField(IBQTextbaustein.FieldByName('VORSPANNTEXT2'))); mrNo: TMemoField(IBQAuftrag.FieldByName('VORSPANNTEXT')) := IBQTextbaustein.FieldByName('VORSPANNTEXT1').Value; end; |
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
| procedure TForm._TMemos_Kombinieren(ZielMemo, Memo1, Memo2 : TMemoField); var sRE1, sRE2 : TDBRichEdit; begin sRE1 := TDBRichEdit.Create(Self); sRE1.Parent:= TWinControl(ZielMemo.Owner); sRE1.DataSource := Memo1.DataSet.DataSource; sRE1.DataField := Memo1.FieldName;
sRE2 := TDBRichEdit.Create(Self); sRE2.Parent:= TWinControl(ZielMemo.Owner); sRE2.DataSource := Memo2.DataSet.DataSource; sRE2.DataField := Memo2.FieldName;
ZielMemo.Text := sRE1.Text + sRE2.Text; end; |
Wollte das mit DBRichEdits machen, aber entweder bekomme ich ein leeres Feld zurück, oder nur den 1. Vorspann aber nicht dazu den 2.
Weiss jemand Rat, oder sogar eine andere Lösung?
Ich soll das heute eigendlich noch fertig kriegen
MfG Jaki
|
|
jaenicke
      
Beiträge: 19314
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Fr 09.08.13 14:29
Abgesehen davon, dass die Auswahl mit Ja oder Nein sehr abenteuerlich aussieht ( wie wäre es mit CreateMessageDialog?):
Was siehst du denn im Debugger? Was ist an der Stelle der Zuweisung sRE1.Text, was sRE1.Text, was steht danach in ZielMemo.Text, ...?
Wird der neue Inhalt denn auch gepostet?
|
|
Jakane 
      
Beiträge: 257
|
Verfasst: Fr 09.08.13 15:07
meine RE's sind beide leer :-/ obwohl etwas in den Feldern drin steht...
|
|
jaenicke
      
Beiträge: 19314
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Fr 09.08.13 15:44
Dann nimm doch normale RichEdits und pack den Feldinhalt manuell herein. Ist denn zumindest der Feldinhalt in Memo1.AsString im Debugger drin?
|
|
Jakane 
      
Beiträge: 257
|
Verfasst: Fr 09.08.13 16:02
Den Fehler mit den leeren RE's habe ich gefunden, jetzt bekomme ich auch beide Texte in einem Feld,
aber ohne Formatierung
diese brauche ich aber leider auch
|
|
jaenicke
      
Beiträge: 19314
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Fr 09.08.13 16:23
Dann musst du die Daten in einen Stream, z.B. einen TStringStream, speichern, sprich RichEdit.Lines.SaveToStream...
Anders bekommst du die RTF-Formatierung nicht mit.
|
|
Perlsau
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Sa 10.08.13 21:03
Du suchst genau das hier!
Für diesen Beitrag haben gedankt: Jakane
|
|
Perlsau
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: So 11.08.13 07:18
|
|
Jakane 
      
Beiträge: 257
|
Verfasst: Mo 12.08.13 09:59
Die funktion ist geil und funktioniert, aber nur auf RichEdit.
Ich schaff es zwar, den Text mit Formatierung in die RichEdits zu bekommen, aber ich krieg den Inhalt des RE nicht mit Formatierung in das Memo zurück.
|
|
Perlsau
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mo 12.08.13 10:02
Jakane hat folgendes geschrieben : |
Die funktion ist geil und funktioniert, aber nur auf RichEdit.
Ich schaff es zwar, den Text mit Formatierung in die RichEdits zu bekommen, aber ich krieg den Inhalt des RE nicht mit Formatierung in das Memo zurück. |
TMemo verfügt nicht über Formatierungseigenschaften. Du kannst zwar das Property Font des Memos einstellen, doch gelten diese Einstellungen dann für den gesamten Memo-Inhalt. Mit anderen Worten: In einem TMemo kannst du nicht verschiedene Font-Parameter einsetzen, es ist nicht für Schrift-Formatierungen vorgesehen, denn dafür gibt es TRichEdit.
|
|
Jakane 
      
Beiträge: 257
|
Verfasst: Mo 12.08.13 11:02
Dieses Datenbankfeld kann aber sowohl Formatieren als auch Formatiert anzeigen.
Ich bekomme bei RichEdit.Text aber eben nur den Text und nicht die Formatierung zurück 
|
|
Perlsau
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mo 12.08.13 11:05
Jakane hat folgendes geschrieben : | Dieses Datenbankfeld kann aber sowohl Formatieren als auch Formatiert anzeigen.
Ich bekomme bei RichEdit.Text aber eben nur den Text und nicht die Formatierung zurück  |
Ein Datenbankfeld kann nicht "anzeigen". Mit anderen Worten: Der Begriff "Datenbankfeld" steht nicht für irgend eine datensensitive Komponente, die den Inhalt von Datenbankfeldern anzeigt.
Um welche Komponente handelt es sich denn konkret?
|
|
jaenicke
      
Beiträge: 19314
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mo 12.08.13 11:08
|
|
Jakane 
      
Beiträge: 257
|
Verfasst: Mo 12.08.13 11:17
Fehlermeldung: "Das Speichern des Streams ist misslungen"
Kenn mich mit Stream leider gar nicht aus
Delphi-Quelltext 1: 2: 3:
| Stream := TStream.Create; sRE1.Lines.SaveToStream(Stream); qry_AufStammAUFBESTVORSPANN.LoadFromStream(Stream); |
|
|
Jakane 
      
Beiträge: 257
|
Verfasst: Mo 12.08.13 11:42
|
|
jaenicke
      
Beiträge: 19314
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mo 12.08.13 11:43
Wie geschrieben, nimm einen TStringStream. Dann kannst du dessen Eingeschaft DataString nehmen und hast den RTF-Text oder du kannst den als Stream weiterverwenden.
|
|
Perlsau
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mo 12.08.13 11:47
|
|
Jakane 
      
Beiträge: 257
|
Verfasst: Mo 12.08.13 11:50
jaenicke hat folgendes geschrieben : | Wie geschrieben, nimm einen TStringStream. Dann kannst du dessen Eingeschaft DataString nehmen und hast den RTF-Text oder du kannst den als Stream weiterverwenden. |
Kannst du mir nicht ein Beispielcode geben.
Ich habe keine Ahnung von Streams (GAR NICHTS)
Ich probiere blind irgendwelche Codeteile aus und krieg entweder Fehlermeldungen oder leer zurück...
|
|
jaenicke
      
Beiträge: 19314
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mo 12.08.13 12:25
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| var Stream: TStringStream;
Stream := TStringStream.Create(''); try sRE1.Lines.SaveToStream(Stream); ShowMessage(Stream.DataString); finally Stream.Free; end; |
Für diesen Beitrag haben gedankt: Jakane
|
|
Jakane 
      
Beiträge: 257
|
Verfasst: Mo 12.08.13 12:41
danke
funktioniert endlich
|
|