Affichage dans un dbgrid des champs de type objet-OLE

Signaler
Messages postés
9
Date d'inscription
mardi 5 novembre 2013
Statut
Membre
Dernière intervention
10 juin 2021
-
Messages postés
211
Date d'inscription
samedi 15 novembre 2003
Statut
Membre
Dernière intervention
10 juin 2021
-
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 .

4 réponses

Messages postés
211
Date d'inscription
samedi 15 novembre 2003
Statut
Membre
Dernière intervention
10 juin 2021
10
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;


Messages postés
9
Date d'inscription
mardi 5 novembre 2013
Statut
Membre
Dernière intervention
10 juin 2021

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.
Messages postés
211
Date d'inscription
samedi 15 novembre 2003
Statut
Membre
Dernière intervention
10 juin 2021
10
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.

Messages postés
9
Date d'inscription
mardi 5 novembre 2013
Statut
Membre
Dernière intervention
10 juin 2021

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.
Messages postés
211
Date d'inscription
samedi 15 novembre 2003
Statut
Membre
Dernière intervention
10 juin 2021
10
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