IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bases de données Delphi Discussion :

TDBGrid et images


Sujet :

Bases de données Delphi

  1. #1
    Futur Membre du Club
    Inscrit en
    Septembre 2003
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 12
    Points : 7
    Points
    7
    Par défaut TDBGrid et images
    Bonjour à tous.

    Voilà tout, je travaille sur un base qui contient des images. Je voudrais lister cette base dans un TDBGrid mais vous doutez bien que l'image etant un BLOB dans la bases mon tableau va afficher Graphic à la place de mon image.

    J'ai pensé passer par la procedure OnDrawColumnCell et recopier le Canvas de mon image sur la cellule, mais ceci ne marche pas.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    procedure Tf_ListeTemps.dbg_TempsDrawColumnCell(Sender: TObject;
      const Rect: TRect; DataCol: Integer; Column: TColumn;
      State: TGridDrawState);
    begin
     if( DataCol = 1 ) then begin
       dbg_Temps.Canvas.CopyRect( Rect, dbimage1.Picture.Bitmap, dbimage1.Picture.Bitmap.Canvas.ClipRect )
     else
       dbg_Temps.DefaultDrawDataCell(Rect, Column.Field,State);
    end;
    Où ma base contient une colone ( la seconde ) avec de l'image et pour ma phase de recherche je lit l'image a l'aide d'un TBDImage qui à le même DataSource.

    Merci d'avance.

  2. #2
    Futur Membre du Club
    Inscrit en
    Septembre 2003
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 12
    Points : 7
    Points
    7
    Par défaut
    En fait cette méthode marche, c'est que j'avais mal testé.


  3. #3
    Futur Membre du Club
    Inscrit en
    Septembre 2003
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 12
    Points : 7
    Points
    7
    Par défaut
    Pour ceux que ca interesse, voila comment effectuer pour lire directement l'image dans la base et l'afficher dans de TDBGrid :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
    procedure TForm.DBGridDrawColumnCell(Sender: TObject;
      const Rect: TRect; DataCol: Integer; Column: TColumn;
      State: TGridDrawState);
    var
      tmp    : TBitmap;
      stream : TMemoryStream;
    begin
     if( Column.Field.IsBlob ) then
       try
         stream := TMemoryStream.Create();
         TGraphicField( Column.Field ).SaveToStream( stream );
     
         stream.SetSize( stream.Size - int64(8) );
         stream.Seek( int64(8), soFromBeginning );
     
         tmp := TBitmap.Create();
         tmp.LoadFromStream( stream );
     
         DBGrid.Canvas.CopyRect( Rect, tmp.Canvas , tmp.Canvas.ClipRect )
       finally
         tmp.Free;
         stream.Free;
       end
     else
       DBGrid.DefaultDrawDataCell(Rect, Column.Field,State);
    end;
    Par contre je ne saurais pas vous expliquer pourquoi il faut avancer de 8 octects dans le flux.

    Maintenant mon image s'affiche dans le tableau mais elle se dimentionne a la taille de la cellule. Est-ce que quelqun sait comment on modifie la hauteur par défaut des lignes du TDBGrid car je ne trouve pas de propriété qui corresponde.

    Pour info j'utilise Delphi 7 Entreprise.

Discussions similaires

  1. Resize d'une image
    Par Anonymous dans le forum C
    Réponses: 6
    Dernier message: 13/07/2008, 22h23
  2. recherche des algorythmes pour images 2d
    Par exxos dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 24/05/2002, 13h46
  3. lire une image au format RAW
    Par Anonymous dans le forum OpenGL
    Réponses: 5
    Dernier message: 20/05/2002, 00h11
  4. faire un selection dans une image aves les APIs
    Par merahyazid dans le forum C++Builder
    Réponses: 3
    Dernier message: 30/04/2002, 10h44
  5. Création image BMP
    Par Anonymous dans le forum C
    Réponses: 2
    Dernier message: 25/04/2002, 16h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo