Beim Blob wird schon schwieriger.
Wenn ich in einem DBGrid z.B. eine Grafik darstellen will, muß ich die selber in die gewünschte Zelle zeichnen. Das gilt dann natürlich auch für's StringGrid. Mein Code für's DBGrid sieht folgendermaßen aus:
Delphi-Quellcode:
Procedure TFormDeckblatt.DBGrid_DeckblattDrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
Var
Bild : TImage;
begin
If DatMod.Qset_Deckblatt.RecordCount > 0 Then
Begin
If Column.FieldName = 'BLATT' Then
Begin
Bild := TImage.Create(Self);
Try
Bild.Visible := False;
Bild.Width := 300;
Bild.Height := 300;
Bild.Center := True;
Bild.Proportional := True;
Bild.Stretch := True;
If DatMod.BlobToImage(DatMod.Qset_Deckblatt.FieldByName('BLATT'),Bild) Then
Begin
DBGrid_Deckblatt.Canvas.FillRect(Rect);
DBGrid_Deckblatt.Canvas.StretchDraw(Rect,Bild.Picture.Bitmap);
End;
Finally
Bild.Free;
End;
End;
End;
end;
Function TDatMod.BlobToImage(Feld: TField; Bild: TImage): Boolean;
Var
S : TStream;
JBild : TJpegImage;
begin
Result := False;
IF Feld.IsNull THEN Exit;
JBild := TJPegImage.Create;
S := Feld.DataSet.CreateBlobStream(Feld, bmRead);
Try
JBild.LoadFromStream(S);
Bild.Picture.Bitmap.Assign(JBild);
Result := True;
Finally
S.Free;
JBild.Free;
End;
end;