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