Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Memo in DBGrid Komponente anzeigen (https://www.delphipraxis.net/199722-memo-dbgrid-komponente-anzeigen.html)

delphicoder123 14. Feb 2019 21:24

Memo in DBGrid Komponente anzeigen
 
Hallo,
ich habe ein DBGrid auf meinem Formular. Eine Spalte vom DBGrid ist ein Memofeld. Allerdings bekomme ich für diese Spalte, nur die Ausgabe "(Memo)". Wie schaffe ich es, dass der richtige Inhalt des Memos im DBGrid angezeigt wird?

Ich wäre euch sehr dankbar, wenn ihr mir helfen könntet, da ich noch ein Anfänger bin.

Delphi.Narium 14. Feb 2019 22:28

AW: Memo in DBGrid Komponente anzeigen
 
Bei der mir bekannten DBGrid-Version ist das von Dir beschriebene Verhalten der Normalfall.
Bei dem DBGrid aus aus der JVCL kann man auswählen, ob der Text Memo oder der Memoinhalt angezeigt werden soll, auch gibt es die Möglichkeit, die Inhalt des Memo als Hint anzuzeigen, wenn man mit der Maus über die entsprechende Zelle im DBGrid fährt.

Ob andere, aktuelle Delphikomponenten das können, weiß ich nicht.

joachimd 15. Feb 2019 06:45

AW: Memo in DBGrid Komponente anzeigen
 
Du kannst das Feld statisch anlegen und einen Eventhandler für OnGetText einhängen.

peterbelow 15. Feb 2019 13:14

AW: Memo in DBGrid Komponente anzeigen
 
Zitat:

Hallo,
ich habe ein DBGrid auf meinem Formular. Eine Spalte vom DBGrid ist ein Memofeld. Allerdings bekomme ich für diese Spalte, nur die Ausgabe "(Memo)". Wie schaffe ich es, dass der richtige Inhalt des Memos im DBGrid angezeigt wird?
Generell ist es keine gute Idee, Memo-Felder in einem Grid anzuzeigen. Schließlich benutzt man solche Felder gemeinhin, um mehrzeiligen Text, durchaus auch recht langen, abzuspeichern. Die gängige Lösung ist es, auf dem Formular außer dem grid auch noch ein TDBMemo pro Memofeld zu haben, das dann den zu der aktiven Zeile im Grid gehörenden Inhalt anzeigt. Falls Du in Grid unbedingt eine Spalte für ein Memofeld haben willst nimm anstelle dessen ein berechnetes Feld, dass dann z. B. die ersten Zeichen der ersten Zeile des Textes anzeigt, mit einem ... am Ende.

delphicoder123 15. Feb 2019 13:47

AW: Memo in DBGrid Komponente anzeigen
 
Zitat:

Zitat von joachimd (Beitrag 1425587)
Du kannst das Feld statisch anlegen und einen Eventhandler für OnGetText einhängen.

Kannst du das bitte genauer beschreiben?

joachimd 18. Feb 2019 08:55

AW: Memo in DBGrid Komponente anzeigen
 
Doppelklick auf die Table-(Query-) Komponente zum Öffnen des Feldeditors. Dann darin rechte Maustaste | Alle Felder hinzufügen. Wähle in der Liste das Memo-Feld aus, gehe im Objektinspektor auf Ereignisse und Doppelklicke auf OnGetText. Dort schreibst Du dann, was angezeigt werden soll.
Beispiel für statischen Text:
Delphi-Quellcode:
procedure TForm1.AdsTable1mGetText(Sender: TField; var Text: string;
  DisplayText: Boolean);
begin
  Text := 'hallo welt';
end;
oder für dynamischen Text, 10 Zeichen des Memo anzeigen:
Delphi-Quellcode:
procedure TForm1.AdsTable1mGetText(Sender: TField; var Text: string;
  DisplayText: Boolean);
begin
  Text := Copy(Sender.AsString, 1, 10)+'...';
end;


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