Announcement

Collapse
No announcement yet.

wie kann ich bilder aus access in dbgrid anzeigen???

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • wie kann ich bilder aus access in dbgrid anzeigen???

    hi,<br>
    <br>
    ich möchte grafiken in einem dbgrid anzeigen, und überschreibe das <br>
    "DrawColumnCell-event" des grids. bei einer paradoxdatenbank geht auch <br>
    alles hervoragend. in access gibt es den typ "grafik" aber nicht.<br>
    wie muss ich folgenden code abändern, um bilder aus access im grid an-<br>
    zeigen zu können???<br>
    if Column.Field.ClassNameIs('TGraphicField') then<br>
    begin<br>
    FPic.Assign(Column.Field);<br>
    NRect.Left := Rect.Left;<br>
    NRect.Top := Rect.Top;<br>
    NRect.Right := Rect.Left + 20;<br>
    NRect.Bottom := Rect.Bottom;<br>
    Canvas.FillRect(Rect);<br>
    Canvas.StretchDraw(NRect, FPic.Bitmap);<br>
    end;<br>
    wobei fpic vom typ "TPicture" ist. da es in access den typ "ole-object" <br>
    gibt habe ich bereits versucht die if in Column.Field.ClassNameIs<br>('TOleField') abzuändern was allerdings nix gebracht hat.<br>
    für hilfe und tips bin ich sehr dankbar.<br>
    mfg<br>
    andik

  • #2
    Hallo,

    das folgende Beispiel demonstriert die Vorgehensweise. Der spezielle OLE-Header für die Grafikdaten muss vorher entfernt werden:
    <pre>
    procedure TForm1.ADODataSet1AfterScroll(DataSet: TDataSet);
    var
    aBitmap : TBitmap;
    aBS : TADOBlobStream;
    begin
    if not (ADODataSet1.State in [dsBrowse]) then
    Exit;
    aBS := TADOBlobStream.Create(ADODataSet1Photo, bmRead);
    try
    aBS.Seek(78, soFromBeginning);
    aBitmap := TBitmap.Create;
    try
    aBitmap.LoadFromStream(aBS);
    DBImage1.Picture.Graphic := aBitmap;
    finally
    aBitmap.Free;
    end
    finally
    aBS.Free;
    end;
    end;
    </pre&gt

    Comment


    • #3
      hallo andreas,
      <br><br>
      erst mal danke für antwort. der obige code soll ein bitpmap nach<br>
      jedem wexel des datensatzes in einem dbimage anzeigen. die grafik<br>
      habe ich in access als ole-object eingebettet (nicht verknüpft).<br>
      führe ich das programm aus, erhalte ich folgende fmeldung:<br>
      "EInvalidGraphic 'ungültige Bitmap...'".<br>
      was mache ich da falsch???<br>
      bitmaps aus paradox-tabellen anzuzeigen, läuft völlig korrekt.<br>
      wenn ich meinen code (oben) in das "OnDrawColumnCell-Event" eines<br>
      grids schreibe, habe ich sogar ein grid mit bildern, was ich un-<br>
      bedingt mit access haben möchte.<br>
      bilder aus access kann ich nicht einmal in einem dbimage anzeigen<br>.
      mfg<br>
      andi

      Comment


      • #4
        Hallo,

        <i>>bilder aus access kann ich nicht einmal in einem dbimage anzeigen</i><br>

        weil dort keine reine Grafik vorgefunden wird, sondern ein OLE-Datenblock, der Grafikdaten einkapselt. Bevor man diese Grafik anzeigen kann, müssen die ersten <b>78 Byte übersprungen</b> werden. Ich würde an Ihrer Stelle den ersten Test mit einer der Microsoft-Beispieldatenbanken machen

        Comment


        • #5
          hallo andreas,<br>
          <br>
          also mit nordwind! danke!<br>
          mfg<br>
          andi

          Comment

          Working...
          X