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 :

Afficher une fiche avec des images des articles stockés dans la base


Sujet :

Bases de données Delphi

  1. #1
    Membre à l'essai
    Homme Profil pro
    Analyse système
    Inscrit en
    Février 2016
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Algérie

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Février 2016
    Messages : 57
    Points : 11
    Points
    11
    Par défaut Afficher une fiche avec des images des articles stockés dans la base
    Salut à tous, je suis sur delphi 7 et j'aimerais afficher mes articles qui sont stockés dans la base données, l'affichage sera avec des photos de mes articles, de la même manière qu'on affiche les articles dans un e commerce, d'habitude je travaille avec dbgrid qui ne permet pas ça , est-ce possible de faire ça avec delphi 7 SVP ?

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 043
    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 043
    Points : 40 957
    Points
    40 957
    Billets dans le blog
    62
    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
    Membre à l'essai
    Homme Profil pro
    Analyse système
    Inscrit en
    Février 2016
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Algérie

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Février 2016
    Messages : 57
    Points : 11
    Points
    11
    Par défaut
    Merci Monsieur Sergio, ça c'est déjà pas mal,mais je voudrai si c'est possible plutôt affiché les articles, chacun dans un cadre avec son désignation et son prix voir meme la possibilité de clique dessous, en plus mes images je ne vais pas les stocké dans la base mais juste leurs chemins.

  4. #4
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 043
    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 043
    Points : 40 957
    Points
    40 957
    Billets dans le blog
    62
    Par défaut
    Citation Envoyé par setinet19 Voir le message
    je voudrai si c'est possible plutôt affiché les articles, chacun dans un cadre avec son désignation et son prix voir meme la possibilité de clique dessous
    Pour moi c'est flou, je ne comprends pas vraiment.
    EN fait je répondais plus à cette remarque
    je travaille avec dbgrid qui ne permet pas ça ,
    en plus mes images je ne vais pas les stocker dans la base mais juste leurs chemins.
    le principe reste le même, en plus facile puisqu'il suffit de charger l'image dans le bitmap temporaire (tmp.loadfromFile(chemindufichier))
    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

  5. #5
    Membre à l'essai
    Homme Profil pro
    Analyse système
    Inscrit en
    Février 2016
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Algérie

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Février 2016
    Messages : 57
    Points : 11
    Points
    11
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    Pour moi c'est flou, je ne comprends pas vraiment.
    EN fait je répondais plus à cette remarque



    le principe reste le même, en plus facile puisqu'il suffit de charger l'image dans le bitmap temporaire (tmp.loadfromFile(chemindufichier))
    Oui, j'avoue que j'ai mal expliqué lorsque j'ai parlé de DBgrid, et je répète meme la solution que vous m'avez donnez je la connaissez pas, donc c'est un plus pour moi, mais la solution parfaite pour moi, c'est de pouvoir récupéré les chemins des l'images à partir d'une base de données et pouvoir les affiché dans des cadres comme dans une boutique e commerce.

  6. #6
    Membre à l'essai
    Homme Profil pro
    Analyse système
    Inscrit en
    Février 2016
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Algérie

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Février 2016
    Messages : 57
    Points : 11
    Points
    11
    Par défaut
    ça ressemble à la photo joint.
    Images attachées Images attachées  

  7. #7
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 043
    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 043
    Points : 40 957
    Points
    40 957
    Billets dans le blog
    62
    Par défaut
    Bonjour,
    il s'agit donc d'utiliser un DBCtrlGrid au lieu d'un TDBGrid
    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

  8. #8
    Membre à l'essai
    Homme Profil pro
    Analyse système
    Inscrit en
    Février 2016
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Algérie

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Février 2016
    Messages : 57
    Points : 11
    Points
    11
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    Bonjour,
    il s'agit donc d'utiliser un DBCtrlGrid au lieu d'un TDBGrid
    Je le connaissé pas !!! et pourtant il est juste à coté je vais me documenté sur. Merci Mr Sergio

  9. #9
    Membre à l'essai
    Homme Profil pro
    Analyse système
    Inscrit en
    Février 2016
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Algérie

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Février 2016
    Messages : 57
    Points : 11
    Points
    11
    Par défaut
    Je revient vers vous depuis hier je cherche, je trouve pas une documentation sur dbctrlgrid !!!

  10. #10
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 043
    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 043
    Points : 40 957
    Points
    40 957
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    DBCtrlGrid est un DBGrid particulière du fait que l'on pose des composants à l'intérieur.
    pour faire ce que vous voulez faire (avec une image c'est beaucoup plus clair pour moi) vous allez
    1- poser le dbcrlgrid
    2- le tailler pour une colonne (largeur) et en hauteur (on peut aussi jouer sur les propriétés PanelHeight et PanelWidth par la suite)
    3- définir son nombre de colonnes (5 selon l'image) propriété colcount
    4- définir son nombre de lignes (toujours selon l'image 4) propriété rawcount

    une fois ceci fait vous poser les composants de votre choix (image, dbtext etc...) sur le seul panneau disponible , le reste est pratiquement identique à l'utilisation de la DBGrid, seul bémol pour afficher les images l'évènement OnDrawColumnCell n'existe pas il sera remplacé par OnPaintPanel.

    La seule documentation que je connaisse est la touche F1, et le manuel. Il y a aussi très certainement un exemple <Repertoire de D7>\Demos\db\ctrlgrid
    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

  11. #11
    Membre à l'essai
    Homme Profil pro
    Analyse système
    Inscrit en
    Février 2016
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Algérie

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Février 2016
    Messages : 57
    Points : 11
    Points
    11
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    Bonjour,

    DBCtrlGrid est un DBGrid particulière du fait que l'on pose des composants à l'intérieur.
    pour faire ce que vous voulez faire (avec une image c'est beaucoup plus clair pour moi) vous allez
    1- poser le dbcrlgrid
    2- le tailler pour une colonne (largeur) et en hauteur (on peut aussi jouer sur les propriétés PanelHeight et PanelWidth par la suite)
    3- définir son nombre de colonnes (5 selon l'image) propriété colcount
    4- définir son nombre de lignes (toujours selon l'image 4) propriété rawcount

    une fois ceci fait vous poser les composants de votre choix (image, dbtext etc...) sur le seul panneau disponible , le reste est pratiquement identique à l'utilisation de la DBGrid, seul bémol pour afficher les images l'évènement OnDrawColumnCell n'existe pas il sera remplacé par OnPaintPanel.

    La seule documentation que je connaisse est la touche F1, et le manuel. Il y a aussi très certainement un exemple <Repertoire de D7>\Demos\db\ctrlgrid
    J'ai compris son principe, c'est un composant très intéressant, merci beaucoup Mr Sergio...

  12. #12
    Membre à l'essai
    Homme Profil pro
    Analyse système
    Inscrit en
    Février 2016
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Algérie

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Février 2016
    Messages : 57
    Points : 11
    Points
    11
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    Pour moi c'est flou, je ne comprends pas vraiment.
    EN fait je répondais plus à cette remarque



    le principe reste le même, en plus facile puisqu'il suffit de charger l'image dans le bitmap temporaire (tmp.loadfromFile(chemindufichier))

    Pour mon besoin de départ c'est résolu, par la suite je voulai exploité l'exemple de la liaison de l'image dans un Tdbgrid, mais j'ai pa pu en ayant que le chemin dans la base au lieu de l'image, voici ce que j'ai tenté


    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
    28
    29
    procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: 
    TRect; 
    DataCol: Integer; Column: TColumn; State: TGridDrawState); 
    var 
    tmp : TBitmap; 
    stream : TMemoryStream; 
    begin 
    if(Column.Field.IsBlob) then begin 
    stream := TMemoryStream.Create(); 
    tmp := TBitmap.Create(); 
    try 
    
    TGraphicField(Column.Field).SaveToStream(stream); 
    
    stream.SetSize(stream.Size - 8); //On retire l'en-tête du blob, on récupère uniquement les données 
    stream.Seek(int64(8), soFromBeginning); //on se place au début des données 
    
    tmp.loadfromFile(MonChemin);
    
    DBGrid1.Canvas.CopyRect(Rect, tmp.Canvas, tmp.Canvas.ClipRect); 
    finally 
    tmp.Free; 
    stream.Free; 
    end; 
    end 
    else 
    DBGrid1.DefaultDrawDataCell(Rect, Column.Field, State); 
    end;
    ma tentation n'a pas donné bon résultat...

  13. #13
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 043
    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 043
    Points : 40 957
    Points
    40 957
    Billets dans le blog
    62
    Par défaut
    Bonjour,
    Citation Envoyé par setinet19 Voir le message
    ma tentation n'a pas donné bon résultat...
    votre tentative plutôt

    pour être pédagogique, plutôt que vous donner la solution quelques pistes de réflexion :
    - puisque c'est le nom et chemin entier de l'image qui est inscrit dans la table, à quoi sert le TmemoryStream et son traitement ?
    - ce nom et chemin entier de l'image est-il encore un blob ?
    - où se trouve la référence à cette colonne de la table pour charger l'image ?
    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

  14. #14
    Membre à l'essai
    Homme Profil pro
    Analyse système
    Inscrit en
    Février 2016
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Algérie

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Février 2016
    Messages : 57
    Points : 11
    Points
    11
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    Bonjour,

    votre tentative plutôt

    pour être pédagogique, plutôt que vous donner la solution quelques pistes de réflexion :
    - puisque c'est le nom et chemin entier de l'image qui est inscrit dans la table, à quoi sert le TmemoryStream et son traitement ?
    - ce nom et chemin entier de l'image est-il encore un blob ?
    - où se trouve la référence à cette colonne de la table pour charger l'image ?
    Et qu'es ce que tu pense de ça ? ...
    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
    procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
     
    var
      Bmp: TBitmap;
     
    begin
      if Column.Field.FieldName='Ma colonne' then
      begin
        Bmp := TBitmap.Create;
        Bmp.LoadFromFile(Mon chemin);
        DBGrid1.Canvas.Draw(Rect.Left,Rect.Top,Bmp);
        Bmp.Free;
      end;
     
    end;
    C'est pas plus simple comme solution ?

  15. #15
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 043
    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 043
    Points : 40 957
    Points
    40 957
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    c'est surtout plus propre, mais ce n'est pas moi qui ai posé la question
    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

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. afficher une miniature avec l'extrait des articles récents
    Par myriem.gharbi dans le forum WordPress
    Réponses: 2
    Dernier message: 27/04/2012, 09h26
  2. Réponses: 0
    Dernier message: 29/12/2011, 14h48
  3. Afficher une partie de texte qui est préalablement stockée dans la base
    Par sooprano dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 18/02/2010, 20h55
  4. Réponses: 1
    Dernier message: 12/12/2006, 17h36
  5. Gestion des chemins des images avec une base de données...
    Par Nean dans le forum Bases de données
    Réponses: 4
    Dernier message: 27/07/2005, 08h08

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