Afficher une image et une petite description en-dessous??

Résolu
djipai Messages postés 20 Date d'inscription lundi 22 juin 2009 Statut Membre Dernière intervention 16 août 2010 - 21 juil. 2010 à 14:34
scromania Messages postés 452 Date d'inscription dimanche 20 août 2006 Statut Membre 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

29 réponses

scromania Messages postés 452 Date d'inscription dimanche 20 août 2006 Statut Membre Dernière intervention 11 janvier 2013 9
21 juil. 2010 à 18:49
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
3
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
23 juil. 2010 à 08:35
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
3
djipai Messages postés 20 Date d'inscription lundi 22 juin 2009 Statut Membre Dernière intervention 16 août 2010
23 juil. 2010 à 14:41
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
3
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
21 juil. 2010 à 16:21
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
scromania Messages postés 452 Date d'inscription dimanche 20 août 2006 Statut Membre Dernière intervention 11 janvier 2013 9
21 juil. 2010 à 19:02
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...
0
scromania Messages postés 452 Date d'inscription dimanche 20 août 2006 Statut Membre Dernière intervention 11 janvier 2013 9
21 juil. 2010 à 19:03
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...
0
djipai Messages postés 20 Date d'inscription lundi 22 juin 2009 Statut Membre Dernière intervention 16 août 2010
22 juil. 2010 à 08:48
Salut,

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


Merci

Djipai
0
djipai Messages postés 20 Date d'inscription lundi 22 juin 2009 Statut Membre Dernière intervention 16 août 2010
22 juil. 2010 à 09:32
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
0
djipai Messages postés 20 Date d'inscription lundi 22 juin 2009 Statut Membre Dernière intervention 16 août 2010
22 juil. 2010 à 09:43
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
0
scromania Messages postés 452 Date d'inscription dimanche 20 août 2006 Statut Membre Dernière intervention 11 janvier 2013 9
22 juil. 2010 à 10:25
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
0
scromania Messages postés 452 Date d'inscription dimanche 20 août 2006 Statut Membre Dernière intervention 11 janvier 2013 9
22 juil. 2010 à 10:36
##########################
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
0
djipai Messages postés 20 Date d'inscription lundi 22 juin 2009 Statut Membre Dernière intervention 16 août 2010
22 juil. 2010 à 10:42
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
0
scromania Messages postés 452 Date d'inscription dimanche 20 août 2006 Statut Membre Dernière intervention 11 janvier 2013 9
22 juil. 2010 à 11:00
tu as combien d'image au total?
les descriptifs des images tu les stocks ou?
Un fichier txt une base access?... etc
0
djipai Messages postés 20 Date d'inscription lundi 22 juin 2009 Statut Membre Dernière intervention 16 août 2010
22 juil. 2010 à 11:19
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
0
scromania Messages postés 452 Date d'inscription dimanche 20 août 2006 Statut Membre Dernière intervention 11 janvier 2013 9
22 juil. 2010 à 14:37
telecharge l'appli Tapez le texte de l'url ici.
0
scromania Messages postés 452 Date d'inscription dimanche 20 août 2006 Statut Membre Dernière intervention 11 janvier 2013 9
22 juil. 2010 à 14:41
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 .
0
djipai Messages postés 20 Date d'inscription lundi 22 juin 2009 Statut Membre Dernière intervention 16 août 2010
22 juil. 2010 à 14:45
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
0
djipai Messages postés 20 Date d'inscription lundi 22 juin 2009 Statut Membre Dernière intervention 16 août 2010
22 juil. 2010 à 14:46
Ca c t la réponse à ce que tu m'as écrit concernant le dialog sur la première page.

Merci

Djipai
0
scromania Messages postés 452 Date d'inscription dimanche 20 août 2006 Statut Membre Dernière intervention 11 janvier 2013 9
22 juil. 2010 à 14:54
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.
0
scromania Messages postés 452 Date d'inscription dimanche 20 août 2006 Statut Membre Dernière intervention 11 janvier 2013 9
22 juil. 2010 à 14:57
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.
0
Rejoignez-nous