Affichage dans un dbgrid des champs de type objet-OLE

MOMO_MOH Messages postés 10 Date d'inscription mardi 5 novembre 2013 Statut Membre Dernière intervention 25 juin 2021 - Modifié le 7 juin 2021 à 15:24
MOMO_MOH Messages postés 10 Date d'inscription mardi 5 novembre 2013 Statut Membre Dernière intervention 25 juin 2021 - 25 juin 2021 à 12:20
Bonjour,
y'a t-il une possibilité d'afficher dans un composant DBGRID des champs de type Objet-OLE sous forme d'images dont le contenu est de type jpg.
Actuellement le composant m'affiche la mention 'BLOB'.

j'utilise DELPHI 7 et Access 2007 comme BD.

Remerciements et salutations .

5 réponses

papyvore Messages postés 223 Date d'inscription samedi 15 novembre 2003 Statut Membre Dernière intervention 16 décembre 2021 15
Modifié le 8 juin 2021 à 10:39
bonjour
il te faut ajouter un dbimage et affecter datasource et datafield.
si tu veut charger ou changer l'image voici un code possible.
procedure TFormTaForm.DBImage1DblClick(Sender: TObject);
var
  J: TJpegImage;
  B: TBitmap;
begin // charger une image dans DBImage1
  J := TJpegImage.create;
  B := TBitmap.create;

  UDataModul.DataModule1.ADOTableEspeceBase.Edit;

  OpenPictureDialog1.InitialDir := ExtractFilePath(Application.ExeName)
    + 'Images';
  if OpenPictureDialog1.Execute then
  begin
    if ExtractFileExt(UpperCase(OpenPictureDialog1.FileName)) = '.BMP' then
    begin
      DBImage1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
      UDataModul.DataModule1.ADOTableEspeceBase.Post;
    end;

    if ExtractFileExt(UpperCase(OpenPictureDialog1.FileName)) = '.JPG' then
    begin
      J.LoadFromFile(OpenPictureDialog1.FileName);
      B.Assign(J);
      DBImage1.Picture.Bitmap := B;
    end;
  end;

  B.Free;
  J.Free;
end;


0
MOMO_MOH Messages postés 10 Date d'inscription mardi 5 novembre 2013 Statut Membre Dernière intervention 25 juin 2021
10 juin 2021 à 12:12
merci papyvore et désolé pour la réponse tardive, un imprévu m'a obligé de m'absenter.
lors de l'affectation des propriétés DataSource et DataField , j'ai eu le message suivant 'Image Bitmap Incorrecte' .
Est ce que le champ Objet OLE prend en cahrge les fichiers JPEG ou bien uniquement les fichiers Bitmap.
et en fin pour être plus explicite je souhaite afficher l'ensemble des champs de ma table avec les images correspondantes et non pas un seul champ a la fois.
remerciements.
0
papyvore Messages postés 223 Date d'inscription samedi 15 novembre 2003 Statut Membre Dernière intervention 16 décembre 2021 15
Modifié le 10 juin 2021 à 14:17
bonjour
as tu relié dbgrid à la base de donnée access avec datasource?
dans ton ADOConnection as tu bien renseigné ADOConnectionString?
affecter chaque colonnes a 1 champs fieldname?
je vois pas bien ou tu en est dans ton code .
regarde https://www.bestprog.net/en/2016/01/04/008-an-example-of-connecting-database-microsoft-access-to-application/

regarde aussi https://www.programmersought.com/article/75895529777/ c'est un exemple pour D7
ça te donnera une idée.

si le champ blob de la base access a bien été crée pour une image alors tu peut y afficher
un jpeg .
tiens nous au courant de ton avancement.

0
MOMO_MOH Messages postés 10 Date d'inscription mardi 5 novembre 2013 Statut Membre Dernière intervention 25 juin 2021
10 juin 2021 à 16:24
Bonjour,
- la base de données est reliée correctement au dbgrid avec datasource.

-ADOConnection string est proprement renseignée pour preuve le DBGrid affiche normalement les champs de la table , sauf bien sur le champ Objet OLE qui affiche la mention 'Blob' au lieu de l'image réelle souhaitée.

- si le champ Blob de la base access a bien été crée pour une image ?
j'ai procédé comme suit : Nom du champ ( inv1) type de données (Objet OLE).

Peut être que je me suis mal exprimé , je vais essayer de reformuler ma question autrement:
- Présentement toutes les opérations de chargement ou de changement des images dans ma table se font normalement : je sélectionne le fichier Jpeg je l’insère dans un composant Image et j'enregistre l'image a son tour dans ma table , bien entendu un enregistrement a la fois .
ce que je désire c'est : afficher l'ensemble des enregistrements (images comprises) dans un dbgrid pour pouvoir laisser le choix a l'utilisateur de sélectionner le produit voulu via son image.

Remerciements.
0
papyvore Messages postés 223 Date d'inscription samedi 15 novembre 2003 Statut Membre Dernière intervention 16 décembre 2021 15
10 juin 2021 à 17:55
ok j'avais mal compris il faut agir avec DBGrid1DrawColumnCell
il y a des exemples
https://forum.lazarus.freepascal.org/index.php?topic=43467.0
http://delphitipsandtricks.blogspot.com/2012/03/drawing-image-in-cell-of-delphi-dbgrid.html
sinon tu lance une recherche "delphi image in dbgrid"
désolé j'avais mal lu la demande
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
MOMO_MOH Messages postés 10 Date d'inscription mardi 5 novembre 2013 Statut Membre Dernière intervention 25 juin 2021
25 juin 2021 à 12:20
Bonjour,
après plusieurs jours de recherche, la solution la plus proche pour la résolution de mon problème c'était d'utiliser le composant DBCtrGrid, et d'insérer un composant DBImage.
il parait que DBGrid ne tolère pas l'affichage des images.

merci papyvore.

problème résolu.
0
Rejoignez-nous