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

Delphi Discussion :

afficher les images dans un DBCtrlGrid / TDBMemo


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2018
    Messages
    443
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2018
    Messages : 443
    Points : 35
    Points
    35
    Par défaut afficher les images dans un DBCtrlGrid / TDBMemo
    Bonjour à tous,

    Je travaille actuellement sur un projet Delphi 7 où je cherche à afficher des images dans un composant DBCtrlGrid. Les images sont stockées dans un répertoire spécifique sur mon disque local (par exemple, "C:\ImagesProduits") et chaque nom de fichier correspond au code d'un produit.

    J'ai réussi à afficher les noms en liant directement la DataSource du TDBMemo, mais je suis bloqué sur la manière d'afficher les images elles-mêmes dans le DBCtrlGrid.

    Est-ce que quelqu'un pourrait me guider sur la meilleure approche pour accomplir cela ? Y a-t-il une manière de charger dynamiquement les images à partir du répertoire spécifique en fonction du code produit ?

    Merci d'avance pour votre aide et vos conseils !

    Cordialement,
    Images attachées Images attachées  

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 071
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 071
    Points : 41 024
    Points
    41 024
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    Dommage que ce ne soit pas une version CE, avec son TControlList

    En D7, je partirai sur l'évènement onPaintPanel (s'il existe).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    procedure TForm1.DBCtrlGrid1PaintPanel(DBCtrlGrid: TDBCtrlGrid;
      Index: Integer);
    begin
    image1.Picture.LoadFromFile(DataImage.asString);  //  image1 est un TImage pas un TDBImage
    end;
    Pas pu tester
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2018
    Messages
    443
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2018
    Messages : 443
    Points : 35
    Points
    35
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    procedure TForm1.DBCtrlGrid1PaintPanel(DBCtrlGrid: TDBCtrlGrid;
      Index: Integer);
    begin
    image1.Picture.LoadFromFile(DataImage.asString);  //  image1 est un TImage pas un TDBImage
    end;
    Pas pu tester[/QUOTE]

    Je vous remerci epour ce code
    cependant, je ne vois pas ou mettre le chemin des images?

  4. #4
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 477
    Points : 24 941
    Points
    24 941
    Par défaut
    Soit en Blob dans une table
    Soit dans un répertoire, la racine étant dans un fichier config ( ou relatif à l'exe ), et le chemin peut se calculer facilement à partir de la référence
    Soit sur un serveur HTTP pour le Download, accessible en FTP pour le Upload par exemple
    Soit dans une ressource difficilement évolutif
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2018
    Messages
    443
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2018
    Messages : 443
    Points : 35
    Points
    35
    Par défaut
    Citation Envoyé par ShaiLeTroll Voir le message
    Soit en Blob dans une table
    Soit dans un répertoire, la racine étant dans un fichier config ( ou relatif à l'exe ), et le chemin peut se calculer facilement à partir de la référence
    Soit sur un serveur HTTP pour le Download, accessible en FTP pour le Upload par exemple
    Soit dans une ressource difficilement évolutif
    Blob dans la base ça ralentie l'exécution si on utilise des image grande
    par contre j'ai le chemin de chaque image stocké dans une colonne sous forme : "C:/....."

  6. #6
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 071
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 071
    Points : 41 024
    Points
    41 024
    Billets dans le blog
    62
    Par défaut
    Dans votre table, une colonne varchar. Mais il me semblait à vous lire
    J'ai réussi à afficher les noms en liant directement la DataSource du TDBMemo,
    que le chemin de l'image était déjà stocké dans un blob d'où ma suggestion de code
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  7. #7
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 477
    Points : 24 941
    Points
    24 941
    Par défaut
    Il suffit donc d'avoir cette colonne dans le DataSet lié au TDBCtrlGrid et cette colonne servira dans le LoadFromFile


    Cependant je pense qu'il faudrait pas faire le LoadFromFile à chaque Paint, cela serait très lent, il faut avoir un cache d'image en parallèle, un TObjectList de TBitmap par exemple

    Je ferais même manuellement le dessin comme dans ce sujet Gérer l'affichage dans TDbCtrlGrid



    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
    procedure TZooVCLControlExperimentForm.DBCtrlGridColorPaintPanel(DBCtrlGrid: TDBCtrlGrid; Index: Integer);
    var
      LRect: TRect;
      Brush: HBrush;
    begin
      if Odd(ClientDataSetCtrlGridVALUE.AsInteger) then
      begin
        Brush := CreateSolidBrush(ColorToRGB(clMoneyGreen));
        try
          LRect := Rect(0, 0, DBCtrlGrid.PanelWidth, DBCtrlGrid.PanelHeight);
          FillRect(DBCtrlGrid.Canvas.Handle, LRect, Brush);
        finally
          DeleteObject(Brush);
        end;
      end;
    end;

    Suffit de remplacer FillRect par un CopyBlt par exemple ou un CopyRect à l'instar de la FAQ Comment lire directement l'image dans la base et l'afficher dans un TDBGrid ?
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

Discussions similaires

  1. Afficher les images dans Thnunderbird
    Par mllejeanne dans le forum Thunderbird
    Réponses: 2
    Dernier message: 13/12/2009, 12h44
  2. [PHP 4] Afficher les images dans e-mail en html
    Par kaayna dans le forum Langage
    Réponses: 1
    Dernier message: 21/10/2009, 11h08
  3. [AC-2003] Afficher les images dans un etat
    Par sbouchaibi dans le forum IHM
    Réponses: 3
    Dernier message: 06/10/2009, 13h27
  4. Ne pas afficher les images dans le dvi
    Par gregory2526 dans le forum Tableaux - Graphiques - Images - Flottants
    Réponses: 4
    Dernier message: 09/06/2008, 13h39
  5. Réponses: 1
    Dernier message: 02/05/2007, 14h28

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