Autor Beitrag
kluesi
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Di 08.04.03 15:53 
Hallo zusammen,
ich habe da ein kleines Problem mit der Darstellung von Blob-Texten in einer TDBGrid. Anstelle des anzuzeigendes Textes wird nur [MEMO] angegzeigt. Nun möchte ich aber keine Memo-Felder verwenden und auch selbst kein DBCtlGrid basteln...
Grundästzlich würde es mir genügen, wenn in der DBGrid nur ein Ausschnitt des in der DB vorhanden Textes steht.
Mir stellt sich da nur die Frage: Wie kann ich diese "verkürzten" Texte in dem DBGrid darstellen, da das Datenfeld an sich ja ein Blob ist....

Jemand eine Idee?
Gruß
Kluesi
UGrohne
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Veteran
Beiträge: 5502
Erhaltene Danke: 220

Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
BeitragVerfasst: Di 08.04.03 17:59 
Also wenn ich richtig informiert bin, gibt es diese Möglichkeit in sich nicht, da BLOB-Felder ja anders ausgelesen werden müssen? Ich bin mir da net so sicher, es kommt auch auf den Typ an. Wenn Du weißt, wie Du Blob-Felder manuell ausliest, dann hättest Du die Möglichkeit im Grid unter OnDrawColumnCell genau dieses Feld zu bearbeiten, dort das BLOB-Feld auszulesen, den Text zu kürzen und dann in der Zelle auszugeben.

Nur so eine fixe Idee, ansonsten schaffen das glaub ich nur kommerzielle Komponenten oder Du bastelst Dir selber was *g*
kluesi Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Mi 09.04.03 20:08 
Scheint wirklich so, als ob ich nicht um eine selbstgebastelte Alternative kommen würde....
Aber trotzdem danke :-)
GuGl
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 35



BeitragVerfasst: Fr 11.04.03 07:50 
Hallo,

Im OnDrawColumnCell des DBGrid:

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumn;State: TGridDrawState);
begin
     if Column.Field is TMemoField then begin
        with (Sender as TDBGrid).Canvas do begin
             FillRect(Rect);
             TextOut(Rect.Left,Rect.Top+2, Column.Field.AsVariant);
        end;
     end;
end;

_________________
Gruß, GuGl
kluesi Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Fr 11.04.03 08:48 
Vielen Dank an den Frühaufsteher :D :D :D
Klaus Fischer
Hält's aus hier
Beiträge: 1



BeitragVerfasst: Di 13.05.03 18:17 
Das geht aber auch einfacher.
Erstelle an der DataSet-Komponente eine neue Spalte und lege bei onGetText fest, dass der Text aus dem Memofeld gelesen werden soll. Dann brauchst Du den Umweg über den Canvas nicht gehen. Vorausgesetzt, dass es sich um einen Text handelt.

Gruß Klaus