Einzelnen Beitrag anzeigen

Perlsau
(Gast)

n/a Beiträge
 
#20

AW: Stringgrid oder dbgrid

  Alt 21. Mär 2015, 19:00
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 = 'BLATTThen
    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;
Miniaturansicht angehängter Grafiken
dbgrid_drawcolumncell.jpg  

Geändert von Perlsau (21. Mär 2015 um 19:03 Uhr)
  Mit Zitat antworten Zitat