Afficher une image et une petite description en-dessous?? [Résolu]

Messages postés
20
Date d'inscription
lundi 22 juin 2009
Dernière intervention
16 août 2010
- - Dernière réponse : scromania
Messages postés
453
Date d'inscription
dimanche 20 août 2006
Dernière intervention
11 janvier 2013
- 23 juil. 2010 à 18:43
Bonjour à tous,

Je viens de débuter en VB. J'utilise Visual Basic Express 2010 et tourne sous Vista.

J'aimerais dans une petite application qu'un utilisateur puisse à partir d'une liste (treeview, combobox, listbox, je sais pas lequel est le plus adapaté) choisir une ligne.

Puis en validant sur un bouton OK par exemple afficher une image et une petite description en dessous.

J'ai placé un TableLayoutPanel pour cadrer les controles.

Mais je ne sais pas comment lier une sélection à des images.

Qqn pourrait il me donner un coup de pouce?


Merci

Djipai
Afficher la suite 

Votre réponse

20/29 réponses

Meilleure réponse
Messages postés
453
Date d'inscription
dimanche 20 août 2006
Dernière intervention
11 janvier 2013
7
3
Merci
pour plus de detail il faut :

- Picturebox1
- listbox1
- FolderBrowserDialog
- textbox1
- Bouton1

tu double clique sur ta frm et en dessous de Public Class Form1 tu ajoute :
Private sMonDossier As String

tu double clique sur le bouton1 et tu met ce code

Private Sub bouton1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bouton1.Click
With FolderBrowserDialog
.Description = "Sélection du dossier général des images"
.RootFolder = Environment.SpecialFolder.Desktop
.ShowNewFolderButton = False

If .ShowDialog = Windows.Forms.DialogResult.OK Then
sMonDossier = .SelectedPath
textbox1.Text = sMonDossier
ParcoureArborescence()
End If
End With
End Sub

Private Sub ParcoureArborescence()
Dim sDossier As String
'Dim sFichier As String
Dim sNom As String

listbox1.Items.Clear()
For Each sDossier In My.Computer.FileSystem.GetFiles(sMonDossier & "")
sNom = My.Computer.FileSystem.GetName(sDossier)
If My.Computer.FileSystem.FileExists(sDossier) Then
Dim path As String = sNom
Dim testExtension As String
testExtension = System.IO.Path.GetExtension(path)
If testExtension ".JPG" Or testExtension ".jpg" Then
listbox1.Items.Add(sNom)


End If

End If
Next

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 121 internautes nous ont dit merci ce mois-ci

Commenter la réponse de scromania
Messages postés
5818
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
20 février 2019
79
3
Merci
Bonjour à vous 2,
Bravo scromania pour ton code. Mais ne trouves-tu pas que se servir des paramètres setting pour un débutant est un peu tôt. Je te propose ton code remanié en mettant le dossier Utile dans le dossier Debug de l'application. Cela supprime 1 Form et 2 boites de dialogue. voici le code en VB2005:

g
Imports System.IO
Public Class Form1
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        ChargeLstMachine()
    End Sub
    Private Sub ChargeLstMachine()
        If My.Computer.FileSystem.FileExists(My.Application.Info.DirectoryPath & "\Utile\Produit-Machine.txt") Then
            lstMachine.Items.Clear()
            Try
                Using sr As StreamReader = New StreamReader(My.Application.Info.DirectoryPath & "\Utile\Produit-Machine.txt")
                    Dim line As String
                    Do
                        line = sr.ReadLine()
                        lstMachine.Items.Add(line)
                    Loop Until line Is Nothing
                    sr.Close()
                End Using
            Catch ex As Exception
                Console.WriteLine(ex.Message)
            End Try
        End If
    End Sub

    Private Sub lstMachine_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lstMachine.SelectedIndexChanged
        Dim sNomMachine As String
        sNomMachine = lstMachine.SelectedItem.ToString()
        If My.Computer.FileSystem.FileExists(My.Application.Info.DirectoryPath & "\Utile\Descriptif" & sNomMachine & ".rtf") Then
            RichTextBox1.Clear()
            RichTextBox1.LoadFile(My.Application.Info.DirectoryPath & "\Utile\Descriptif" & sNomMachine & ".rtf")
        End If
        If My.Computer.FileSystem.FileExists(My.Application.Info.DirectoryPath & "\Utile\Images" & sNomMachine & ".jpeg") Then
            Dim photoStream As FileStream = New FileStream(My.Application.Info.DirectoryPath & "\Utile\Images" & sNomMachine & ".jpeg", FileMode.Open)
            PictureBox1.Image = Image.FromStream(photoStream)
            photoStream.Close()
            Me.Refresh()

        ElseIf My.Computer.FileSystem.FileExists(My.Application.Info.DirectoryPath & "\Utile\Images" & sNomMachine & ".jpg") Then
            Dim photoStream As FileStream = New FileStream(My.Application.Info.DirectoryPath & "\Utile\Images" & sNomMachine & ".jpg", FileMode.Open)
            PictureBox1.Image = Image.FromStream(photoStream)
            photoStream.Close()
            Me.Refresh()
        ElseIf My.Computer.FileSystem.FileExists(My.Application.Info.DirectoryPath & "\Utile\Images" & sNomMachine & ".bmp") Then
            Dim photoStream As FileStream = New FileStream(My.Application.Info.DirectoryPath & "\Utile\Images" & sNomMachine & ".bmp", FileMode.Open)
            PictureBox1.Image = Image.FromStream(photoStream)
            photoStream.Close()
            Me.Refresh()
        End If
    End Sub

  
End Class




Dis-moi ce que tu en penses et si il y a des contres indications à ce code?.
Amicalement
Le Pivert

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 121 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_Le Pivert
Messages postés
20
Date d'inscription
lundi 22 juin 2009
Dernière intervention
16 août 2010
3
Merci
Salut,

J'ai réussi à coder ce que je voulais. C'est à dire à partir d'une listBox (avec plusieurs machines), afficher une image et une description.

Utilisation des éléments suivants:

ListBox
PictureBox
Label1
Label2

1) J'ai modifié le contenu de la listBox (ex: Mach1, Mach2, etc)
2) Double clique sur la listBox puis fait un Select Case avec comme variable index qui recoit la valeur de l'index dans la listBox
3) A chaque case, j'ai associé une image, description et caractéristiques respectivement dans la pictureBox et les deux autres labels, en les appelant du fichier My = Resources.xxx

Merci

Djipai

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 121 internautes nous ont dit merci ce mois-ci

Commenter la réponse de djipai
Messages postés
5818
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
20 février 2019
79
0
Merci
Bonjour,
Il faut une ListBox pour appeler les fichiers images une PictureBox pour afficher les images et un Label pour afficher le nom de l'image. Sur ce site il y a plein d'exemples en cherchant Image, ListBox etc.


@+
Le Pivert
Commenter la réponse de cs_Le Pivert
Messages postés
453
Date d'inscription
dimanche 20 août 2006
Dernière intervention
11 janvier 2013
7
0
Merci
puis tu ajoute :
Private Sub ListBox1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.Click
Try


Dim ChargeImage As String = ListBox1.SelectedItems(0).ToString



Dim photoStream As FileStream = New FileStream(sMonDossier & "" & ChargeImage, FileMode.Open)
PictureBox1.Image = Image.FromStream(photoStream)
photoStream.Close()
Me.Refresh()
Catch ex As Exception

End Try
End Sub



et lorsque tu séléctionneras l'image elle s'affichera dans ta picturebox1

voilou.

ps : If testExtension ".JPG" Or testExtension ".jpg" Then
modifier la ligne ci-dessous si tu veux d'autre format ex:

If testExtension ".JPG" Or testExtension ".jpg" Then
listbox1.Items.Add(sNom)

elsif testExtension ".JPEG" Or testExtension ".jpeg" Then

listbox1.Items.Add(sNom)
elsif testExtension ".BMP" Or testExtension ".bmp" Then

listbox1.Items.Add(sNom)

End If

a suit de suite...
Commenter la réponse de scromania
Messages postés
453
Date d'inscription
dimanche 20 août 2006
Dernière intervention
11 janvier 2013
7
0
Merci
erreur dans le dernier ps


ps : If testExtension ".JPG" Or testExtension ".jpg" Then
modifier la ligne ci-dessous si tu veux d'autre format ex:

If testExtension ".JPG" Or testExtension ".jpg" Then
listbox1.Items.Add(sNom)

elseif testExtension ".JPEG" Or testExtension ".jpeg" Then

listbox1.Items.Add(sNom)
elseif testExtension ".BMP" Or testExtension ".bmp" Then

listbox1.Items.Add(sNom)

End If

a suit de suite...
Commenter la réponse de scromania
Messages postés
20
Date d'inscription
lundi 22 juin 2009
Dernière intervention
16 août 2010
0
Merci
Salut,

Hallucinant! Merci pour vos réponses aussi rapides! Je vais tester ca aujourd'hui!


Merci

Djipai
Commenter la réponse de djipai
Messages postés
20
Date d'inscription
lundi 22 juin 2009
Dernière intervention
16 août 2010
0
Merci
Scromania, déjà merci pour ces lignes de code. J'ai déjà découvert plein de choses que je ne connaissait pas.

Peux tu m'éclairer sur la méthode ParcoureArborescence()?

Dis moi si je dis des bétises et surtout corriges moi s'il faut, j'aimerais utiliser le bon vocabulaire.

Tout d'abord tu as déclaré sNom et sDossier des variables String, puis tu mets à blanc le listBox1. Après c'est là que je sais pas ce que c'est. "For each", pour chaque sDossier ...(c'est quoi ce My et plus généralement un namespace?)

Si j'ai bien compris cette méthode récupère le nom du 'Path' (chemin du dossier et fichier sélectionné) et l'affiche dans la listbox les uns derrière les autres?

Dans le prochain Sub je suis largué... tu peux me fournir une explication? De plus ma pictureBox n'affiche pas l'image quand je cliques sur mon .jpg qui s'affiche bien dans la listbox.

_________________________

Ton code est super mais c'est pas tout à fait ca que j'essaies de faire. Tu as déjà trouvé la suite de ce que je peux faire!! Je te remercie!

Est-il possible d'avoir déjà la listBox chargée de lignes descriptives. Par exemple Objet1, Objet2 et quand l'utilisateur clique sur une ligne spécifique, que la picturebox affiche la photo de cet objet et une petite description dans un textBox ou label?

En tous cas merci pour ces lignes au-dessus.

Merci

Djipai
Commenter la réponse de djipai
Messages postés
20
Date d'inscription
lundi 22 juin 2009
Dernière intervention
16 août 2010
0
Merci
Pour améliorer le FolderBrowserDialog, comment fais t on pour entrer dans un fichier et sélectioner les bonnes photos?

Es t on obligé de sélectionner un dossier entier sans savoir ce qu'il y a dedans?

Merci

Djipai
Commenter la réponse de djipai
Messages postés
453
Date d'inscription
dimanche 20 août 2006
Dernière intervention
11 janvier 2013
7
0
Merci
salut

donc pour repondre clairement

ParcoureArborescence dans mon exemple je parcours uniquement un dossier mais tu pourrais ajouter une ligne de code qui te permettais de recuperer les images de ex: tu a 10 images dans toto1 pour 30 dans toto2 si tu selectionne c:\temp\toto1\toto2\ etc il les ajouterais dans ta listbox.

Avec For each tu parcour temp qu'il y a des éléments tu aurais pus utilisé
for i = 0 to 6000
next
par contre se n'est pas aproprié pour se que tu veux faire.
Voici quelque explication: ici http://faqvbnet.developpez.com/?page=lang

Pour repondre a ta derniere question je dois d'abort te dire que pour coder un programme tu dois d'abord tout faire par ecrit
- quesque je dois faire
- quoi afficher
- quand je clique je recupere quoi
a suit de suit

donc tu veux une description quoi comme description ?

Car tu peut obj1 et obj2 utiliser une listbox avec des subitems ou une listview serait plus approprier sa ne s'utilise pas pareil et tu reprend presque tout le code .


Je travail q'av"ec des images au taf incrustation image ,chagement d'une banque d'images saisie dans l'image , renommage par lots a suit de suite.

je ve bien t'aider mais essaye d'etre claire sur ce que tu veux!!!
Cordialement
Commenter la réponse de scromania
Messages postés
453
Date d'inscription
dimanche 20 août 2006
Dernière intervention
11 janvier 2013
7
0
Merci
##########################
Pour améliorer le FolderBrowserDialog, comment fais t on pour entrer dans un fichier et sélectioner les bonnes photos?

Es t on obligé de sélectionner un dossier entier sans savoir ce qu'il y a dedans?

Merci

Djipai
#############################

Si tu compte a chaque fois selectionner une image quel et l'interet avoir une listbox
Commenter la réponse de scromania
Messages postés
20
Date d'inscription
lundi 22 juin 2009
Dernière intervention
16 août 2010
0
Merci
Salut Scromania, merci pour ta réponse aussi rapide.

Je vais essayer de t'expliquer le plus simplement possible ce que je veux faire dans cette partie de mon application:

Dans une fenêtre je veux faire apparaitre une liste de machines à gauche (listebox me parait le plus adapté).
Quand l'utilisateur clique sur Perceuse par exemple, une image de cette perceuse apparait à droite dans une pictureBox et une petite description de l'outil (dimensions, nombre d'outillage) qui se charge dans un label ou un textbox juste en dessous de la pictureBox.

J'espère avoir été assez explicite.

Merci

Djipai
Commenter la réponse de djipai
Messages postés
453
Date d'inscription
dimanche 20 août 2006
Dernière intervention
11 janvier 2013
7
0
Merci
tu as combien d'image au total?
les descriptifs des images tu les stocks ou?
Un fichier txt une base access?... etc
Commenter la réponse de scromania
Messages postés
20
Date d'inscription
lundi 22 juin 2009
Dernière intervention
16 août 2010
0
Merci
Je pense avoir une cinquantaine d'images et autant de descriptions liées aux images.

Pour le moment je n'ai pas découvert les possibilités avec des bases de données...


Merci

Djipai
Commenter la réponse de djipai
Messages postés
453
Date d'inscription
dimanche 20 août 2006
Dernière intervention
11 janvier 2013
7
0
Merci
telecharge l'appli Tapez le texte de l'url ici.
Commenter la réponse de scromania
Messages postés
453
Date d'inscription
dimanche 20 août 2006
Dernière intervention
11 janvier 2013
7
0
Merci
dans les paramêtres de configuration tu viens chercher :
Gestion-de-machine\Gestion-de-machine\Utile\.

-dans \Descriptif\ XXX.rtf > tu creer les descriptifs avec la même appelation que celui fournis dans le fichier "Produit-Machine.txt" et pour les images c'est la même méthode .

voilou @++ et bon code .
Commenter la réponse de scromania
Messages postés
20
Date d'inscription
lundi 22 juin 2009
Dernière intervention
16 août 2010
0
Merci
Pour la suite de l'appli, si un utilisateur veut entrer une nouvelle image pour une nouvelle machine, prenons cette fois une rectifieuse (autre machine), si sa photo est dans un dossier avec d'autres photos il ne peut sélectionner que celle ci dans notre cas présent.

Une fois cette photo sélectionée, on rajoute une ligne "rectifieuse" avec la photo et la description associée.

Tu vois mieux ce que j'essai de faire?

Tu penses qu'il faut que je regardes les bases de données et autres choses semblables?

Merci

Djipai
Commenter la réponse de djipai
Messages postés
20
Date d'inscription
lundi 22 juin 2009
Dernière intervention
16 août 2010
0
Merci
Ca c t la réponse à ce que tu m'as écrit concernant le dialog sur la première page.

Merci

Djipai
Commenter la réponse de djipai
Messages postés
453
Date d'inscription
dimanche 20 août 2006
Dernière intervention
11 janvier 2013
7
0
Merci
en faite je vais te laisser un peux coder :

tu as cas ajouter une form qui permet ajouter et du texte dans le fichier puis qui copie l'image dans le repertoire qui va bien ainsi que pour la description.... et FolderBrowserDialog sert pour les dossiers dans ton cas tu utiliseras OpenFileDialog qui lui sert pour les fichiers.
Commenter la réponse de scromania
Messages postés
453
Date d'inscription
dimanche 20 août 2006
Dernière intervention
11 janvier 2013
7
0
Merci
Deja je tes enlever une epine du pied,ici les gens cherche de l'aide la je te les codé chose quand temps normal on ne fais pas .

Il faut que tu cherche un peut pour apprendre et la c'est de l'assistance .. je suis la pour t'aider si tu as besoin.
Commenter la réponse de scromania

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.