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 :

Utiliser l'item d'un Tlistbox à la place d'un TopenDialog !


Sujet :

Delphi

  1. #1
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 420
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 420
    Points : 1 325
    Points
    1 325
    Par défaut Utiliser l'item d'un Tlistbox à la place d'un TopenDialog !
    Bonjour à toutes et à tous,

    Reprenant une ancienne source pour une petite application personnelle, je cale sur le remplacement d'un TopenDialog (Bdimage) par les items de TListBox qui s'affichent un par un dans un Timage.

    Le TopenDialog est repris souvent dans la conversion des formats.

    Voici le code :

    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
     
    if not Bdimage.Execute then exit else
      begin
     
         { initialisation }
      BMPLoaded := false;
     
       { recuperation de l'extention }
        Ext := LowerCase(ExtractFileExt(Bdimage.FileName));
     
         { creation du bitmap temporaire }
        BMP := TBitmap.Create;
        JPGBis := TJPegImage.create;
     
        try
          { si c'est un jpeg }
          if (ext = '.jpg') or (ext ='.jpeg') then
          begin
            { creation d'une image jpeg }
            JPG := TJPegImage.Create;
            try
              { charge a partir du fichier }
              JPG.LoadFromFile(Bdimage.FileName);
              { convertion JPG > BMP }
    ………
    …..
    Si quelqu'un a une idée, merci d'avance.

    @+,

    cincap

  2. #2
    Membre expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 344
    Points : 3 122
    Points
    3 122
    Par défaut
    Bonjour,

    je n'ai pas trop compris. Tu veux dire que les noms des fichiers Jpg sont affichés dans un TlistBox et qu'en sélectionnant un item l'image doit s'afficher dans un TImage ?

    A+
    Charly

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 420
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 420
    Points : 1 325
    Points
    1 325
    Par défaut
    @Charly910, merci de ta réponse.

    J'affiche dans le TlistBox depuis un dossier toutes les photos au format .jpg donc après réflexion, je n'aurai pas besoin de tous les autres formats repris dans l'exemple de code.

    Ces items lorqu'ils sont sélectionné s'affichent bien dans mon Timage mais j'aimerai rajouter une option comme par exemple un cadre de couleur et la il faut le format .bmp pour ce faire.

    Donc le fichier .jpg qui s'affiche dans le Timage et repris dans le TlisBox doit être convertit en .bmp, puis appliquer le cadre de couleur et ensuite sauver à nouveau en .jpg avant de l'exploiter sans toucher à l'original.

    J'ai testé des solutions mais j'ai chaque fois une exception.

    Je continue aussi.

    @+,

    cincap

  4. #4
    Membre éprouvé
    Avatar de Cirec
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    467
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 467
    Points : 1 072
    Points
    1 072
    Par défaut
    Bonjour,

    il va falloir être un peu plus précis sur le problème:
    - à quel moment du processus as-tu l'erreur ?
    - quel type d'exception ?

    et peut être fournir le code qui pose problème !

    mais là ça manque de précisions

    Cordialement,

    @+

  5. #5
    Membre expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 344
    Points : 3 122
    Points
    3 122
    Par défaut
    Bonjour,

    je ne sais pas si ce sera utile, mais regarde ce post qui encadre une image

    A+
    Charly

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 420
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 420
    Points : 1 325
    Points
    1 325
    Par défaut
    @ Cirec, merci de ta réponse.

    En fait le code que j'ai communiqué au début fonctionne très bien si j'utilise un TopenDialog et que je suis dans le dossier ou sont mes photos au format .jpg.

    Mais comme maintenant j'utilise un Tlistbox qui me charge mes photos uniquement au format .jpg, j'aimerai aussi appliquer un cadre de couleur mais cela ne fonctionne pas car la procédure pour le cadre de couleur fonctionne qu'avec au départ le format .bmp.

    Donc ma question est d'enlever à mon code le TopenDialog et d'utiliser un des items du Tlistbox, items qui indiquent le nom et l'extension du fichier soit "monfichier.jpg".

    L'erreur c'est que je ne sais pas adapter le code prévu avec un TopenDialog qui fonctionne très bien.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
        { initialisation }
      BMPLoaded := false;
     
       { recuperation de l'extention }
        Ext := LowerCase(ExtractFileExt(ListBox1.items));
     
         { creation du bitmap temporaire }
        BMP := TBitmap.Create;
        JPGBis := TJPegImage.create;
     
        try
    @+,

    cincap

  7. #7
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 857
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 857
    Points : 11 291
    Points
    11 291
    Billets dans le blog
    6
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    i := ListBox1.itemIndex;
    if i > -1 then
      Ext := LowerCase(ExtractFileExt(ListBox1.items[i]))
    else ShowMessage('No Item selected');
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  8. #8
    Membre éprouvé
    Avatar de Cirec
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    467
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 467
    Points : 1 072
    Points
    1 072
    Par défaut
    Ok,

    La différence entre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
       { recuperation de l'extention }
        Ext := LowerCase(ExtractFileExt(Bdimage.FileName));
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
       { recuperation de l'extention }
        Ext := LowerCase(ExtractFileExt(ListBox1.items[i]));
    est que "Bdimage.FileName" contient le chemin complet du fichier
    alors que "ListBox1.items[i]" ne contient que le nom et l'extension !!

    et si tu essayes de charger ou d'enregistrer sans préciser le chemin ça peut poser des problèmes
    en fonction du répertoire courant.

    Cordialement,

    @+

  9. #9
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 420
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 420
    Points : 1 325
    Points
    1 325
    Par défaut
    @ tourlourou, merci de ta réponse, je testerai demain ta suggestion.

    Entretemps comme j'affichais l'item sélectionné dans un Tedit, j'ai donc utilisé :

    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
     
        { initialisation }
      BMPLoaded := false;
     
       { recuperation de l'extention }
        Ext := LowerCase(ExtractFileExt(edit1.text));
     
         { creation du bitmap temporaire }
        BMP := TBitmap.Create;
        JPGBis := TJPegImage.create;
     
        try
          { si c'est un jpeg }
          if (ext = '.jpg') or (ext ='.jpeg') then
          begin
            { creation d'une image jpeg }
            JPG := TJPegImage.Create;
            try
              { charge a partir du fichier }
              JPG.LoadFromFile(edit1.text);
              { convertion JPG > BMP }
              JPEGToBMP(JPG,BMP);
              { BMP est prét }
              BMPLoaded := true;
            finally
    Et cela fonctionne mais je testerai directement avec l'item du Tlistbox demain matin.

    Merci à tous, je ferme le topic.

    @+,

    cincap

  10. #10
    Membre expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 344
    Points : 3 122
    Points
    3 122
    Par défaut
    Un peu tard, mais voici une solution (en D7) :

    ListImage.zip

    Bonne soirée
    A+
    Charly

  11. #11
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 420
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 420
    Points : 1 325
    Points
    1 325
    Par défaut
    Bonjour à toutes et à tous,

    @ tourlourou, j'ai testé ta suggestion et cela fonctionne aussi en le codant comme cela :

    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
     
        { initialisation }
      BMPLoaded := false;
     
       { recuperation de l'extention }
     
      if i > -1 then begin
      Ext := LowerCase(ExtractFileExt(ListBox1.items[i]));
     
     { creation du bitmap temporaire }
        BMP := TBitmap.Create;
        JPGBis := TJPegImage.create;
     
        try
          { si c'est un jpeg }
          if (ext = '.jpg') or (ext ='.jpeg') then
          begin
            { creation d'une image jpeg }
            JPG := TJPegImage.Create;
            try
              { charge a partir du fichier }
              JPG.LoadFromFile(edit1.text);
              { convertion JPG > BMP }
              JPEGToBMP(JPG,BMP);
              { BMP est prét }
              BMPLoaded := true;
            finally
              { liberation de JPG }
              JPG.Free;
            end;
     
          end
          else
     
          if ext = '.png' then
          begin
            Png := TPNGObject.Create;
          try
            { charge a partir du fichier }
            png.LoadFromFile(edit1.text);
            pngToBMP(png,BMP);
            { BMP est prét }
            bmpLoaded := true;
     
          finally
              { liberation de PNG }
              PNG.Free;
            end;
    …….
    ….
    @ Cirec, tu as totalement raison concernant ta remarque mais le chemin et dossier sont bien définis à l'avance, je ne l'avais pas noté.

    @ Charly910, excellent ton exemple à garder bien entendu.

    Merci à tous pour votre aide,

    @+

    cincap

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 08/06/2011, 09h44
  2. [Lazarus] Longueur d'un item d'un TListBox
    Par ydhenain dans le forum Lazarus
    Réponses: 2
    Dernier message: 05/07/2009, 08h32
  3. Sauvegarder les Items d'une TListBox
    Par Marley_T dans le forum Langage
    Réponses: 19
    Dernier message: 06/02/2008, 19h58
  4. Utiliser les items d'un ComboBox
    Par CleeM dans le forum Delphi
    Réponses: 8
    Dernier message: 18/06/2007, 10h23
  5. [VB.NET2005]PropertyGrid : utiliser un item d'une combobox
    Par NicolasJolet dans le forum Windows Forms
    Réponses: 1
    Dernier message: 30/03/2006, 15h51

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