Bonjour, alors voilà j'ai un soucis j'essaie de faire en sorte que les items du ListBox puisse être écarté pour sélectionner sur un ordinateur tactile.
voilà une image de ce que cela fait actuellement mais je trouve cela très serré
C'est moi qui veut connaitre le langage!!!!
Pour le code il faut faire un copier -coller sur le post. On ne peut pas travailler sur des images!!!!
@+ Le Pivert
Private Sub Actualisation_Marque()
Dim ConnectionSQL = New MySqlConnection
Dim COMMAND = New MySqlCommand
Dim SDA = New MySqlDataAdapter
Dim dbDataSet = New DataTable
Dim bSource = New BindingSource
Dim Query As String
ConnectionSQL.ConnectionString = "server=MONSERVEUR; userid=UTILISATEUR; password=MOT_DE_PASSE; database=BASE DE DONNEE"
Try
'Selection des marques dans la base de donnée et regroupement des doublons + Ordre alpha
Query = "SELECT marque FROM BDD.TABLE GROUP BY marque ORDER BY marque"
COMMAND = New MySqlCommand(Query, ConnectionSQL)
With SDA
.SelectCommand = COMMAND
.Fill(dbDataSet)
End With
bSource.DataSource = dbDataSet
LB1.DisplayMember = "marque"
LB1.DataSource = bSource 'Rentre les noms des marques dans la listbox
SDA.Update(dbDataSet)
ConnectionSQL.Close()
Catch ex As Exception
MsgBox("Une erreur est survenue :" & vbNewLine & vbNewLine & "L'erreur est : " & vbNewLine & ex.Message, MsgBoxStyle.Critical, "Erreur : 2")
Finally
ConnectionSQL.Dispose()
End Try
End Sub
Exact c du vb.net winForm quand au cas du ItemHeight je dois le placer dans le load ?
Car si Oui alors j'ai un plus gros souci c'est que cela ne bouge strictement rien.
Et pour l'actualisation de ma base j'ai écrit ceci
Private Sub Actualisation_Marque()
Dim ConnectionSQL = New MySqlConnection
Dim COMMAND = New MySqlCommand
Dim SDA = New MySqlDataAdapter
Dim dbDataSet = New DataTable
Dim bSource = New BindingSource
Dim Query As String
ConnectionSQL.ConnectionString = "server=MONSERVEUR; userid=UTILISATEUR; password=MOT_DE_PASSE; database=BASE DE DONNEE"
Try
'Selection des marques dans la base de donnée et regroupement des doublons + Ordre alpha
Query = "SELECT marque FROM BDD.TABLE GROUP BY marque ORDER BY marque"
COMMAND = New MySqlCommand(Query, ConnectionSQL)
With SDA
.SelectCommand = COMMAND
.Fill(dbDataSet)
End With
bSource.DataSource = dbDataSet
LB1.DisplayMember = "marque"
LB1.DataSource = bSource 'Rentre les noms des marques dans la listbox
LB1.ItemHeight = 50 SDA.Update(dbDataSet)
ConnectionSQL.Close()
Catch ex As Exception
MsgBox("Une erreur est survenue :" & vbNewLine & vbNewLine & "L'erreur est : " & vbNewLine & ex.Message, MsgBoxStyle.Critical, "Erreur : 2")
Finally
ConnectionSQL.Dispose()
End Try
End Sub
Donc en résumé cela m'affiche une scrollBar vertical MAIS ne m'affiche aucune données :/
Non, comme indiqué dans le tuto que t'as donné le Pivert, il faut le mettre dans l'évènement MesureItem, il faut aussi écrire le texte et dessiner le cadre dans DrawItem.
Et si tu veux centrer le texte (avec itemHeight = 50 cette fois ci)
'valeurs par défaut
Dim fond As Brush = Brushes.Beige
Dim police As Font = Me.Font
Dim couleurTexte As Brush = Brushes.Black
' L' item est celui 'selected' si And sur 'State' et 'DrawItemState.Selected'= true.
If (e.State And DrawItemState.Selected) = DrawItemState.Selected Then
fond = Brushes.CornflowerBlue
police = New Font(Me.Font, FontStyle.Bold)
couleurTexte = Brushes.White
End If
'centrer le texte
Dim texte As String = listBox1.Items(e.Index).ToString()
Dim tailleTexte As SizeF = e.Graphics.MeasureString(texte, police)
Dim x As Single = e.Bounds.X + (e.Bounds.Width - tailleTexte.Width) / 2
Dim y As Single = e.Bounds.Y + (e.Bounds.Height - tailleTexte.Height) / 2
'On dessine le rectangle du fond et on écrit le texte
e.Graphics.FillRectangle(fond, e.Bounds)
e.Graphics.DrawString(texte, police, couleurTexte, x, y)
' Rectangle bleue autour de chaque Item.
e.Graphics.DrawRectangle(Pens.Blue, New Rectangle(e.Bounds.X, e.Bounds.Y, e.Bounds.Width - 1, e.Bounds.Height))
'On diminue la largeur du rectangle de 1 pixel, sinon le coté droit n'est pas visible
' Afficher le focus rectangle .
e.DrawFocusRectangle()
Volià le code qui me permet de remplir la listbox
Quand à ce qui est de connaître le langage je le connais mais la listbox c'est la première fois que je dois m'en servir
Dim x As Integer
'inverse liste
For x = ListBox1.Items.Count - 1 To 0 Step -1
ListBox1.Items.Add(ListBox1.Items(x).ToString)
ListBox1.Items.Remove(ListBox1.Items(x).ToString)
Next
'ajoute ligne
For x = ListBox1.Items.Count - 1 To 0 Step -1
ListBox1.Items.Add(ListBox1.Items(x).ToString)
ListBox1.Items.Add(" ")
ListBox1.Items.Remove(ListBox1.Items(x).ToString)
Next
a mettre après cette ligne en adaptant le nom de ta listBox
LB1.DataSource = bSource 'Rentre les noms des marques dans la listbox
Je pense que le message est clair, il faut que tu trouves une autre solution! Et abandonner le fait d'agrandir les items.
Quand tu lis bien le lien que je t'ai fourni, il est stipulé qu'il faut redessiner chaque item.
Vaste tâche!!!!
D'accord m'est moi je n'ai jamais dit que je voulais agrandir mes items je voulais juste les écartés :/
Mais par contre non je ne peux pas abandonné car ce projet n'est pas pour moi c'est pour mon chef je suis en stage, alors cela serait vraiment sympa de votre part si vous avez une idée.
Merci à tous de votre aide vous avez raison c'est bien avec le DrawItem que cs_Le_Pivert ma fourni cela fonctionne parfaitement il me manquait juste à écrire
à la ligne :
e.Graphics.DrawString(Me.ListBox1.Items(e.Index), New Font(Me.Font, FontStyle.Bold)
e.Graphics.DrawString(Me.ListBox1.Items(e.Index)("marque").ToString, New Font(Me.Font, FontStyle.Bold)
puis quand j'ai rajouté le script de Whismeril pour centrer le texte tout est parfait je vous remerci à tous bonne journée maintenant je vais pouvoir avancer ;)
help for me quand j'étais en train de faire un script qui me permet d'ajouter des marques et que j'appuie sur entrée une erreur apparaît
Private Sub Ajouter_Marque()
Dim ConnectionSQL = New MySqlConnection
Dim COMMAND = New MySqlCommand
Dim Query As String
ConnectionSQL.ConnectionString = URLBDD
Dim READER As MySqlDataReader
Try
ConnectionSQL.Open()
Query = "INSERT INTO marque(nomMarque) VALUES ('" & TxtMarque.Text & "')"
COMMAND = New MySqlCommand(Query, ConnectionSQL)
READER = COMMAND.ExecuteReader
ConnectionSQL.Close()
Actualisation_Marque()
MsgBox("La marque : " & TxtMarque.Text & " a bien été ajouté !", MsgBoxStyle.Information, "Information : 3")
Catch ex As Exception
MsgBox("Une erreur est survenue :" & vbNewLine & vbNewLine & "L'erreur est : " & vbNewLine & ex.Message, MsgBoxStyle.Critical, "Erreur : 2")
Finally
ConnectionSQL.Dispose()
End Try
End Sub
Bonsoir alors pour ce qui est du code de Actualisation_Marque() le voci
Dim ConnectionSQL = New MySqlConnection
Dim COMMAND = New MySqlCommand
Dim SDA = New MySqlDataAdapter
Dim dbDataSet = New DataTable
Dim bSource = New BindingSource
Dim Query As String
ConnectionSQL.ConnectionString = Connection de ma base de donnée
Try
'Selection des marques dans la base de donnée et regroupement des doublons + Ordre alpha
Query = "SELECT marque FROM 853339_depannage.materielocass GROUP BY marque ORDER BY marque"
COMMAND = New MySqlCommand(Query, ConnectionSQL)
With SDA
.SelectCommand = COMMAND
.Fill(dbDataSet)
End With
bSource.DataSource = dbDataSet
LB1.DisplayMember = "marque"
LB1.DataSource = bSource 'Rentre les noms des marques dans la listbox
SDA.Update(dbDataSet)
ConnectionSQL.Close()
Catch ex As Exception
MsgBox("Une erreur est survenue :" & vbNewLine & vbNewLine & "L'erreur est : " & vbNewLine & ex.Message, MsgBoxStyle.Critical, "Erreur : 2")
Finally
ConnectionSQL.Dispose()
End Try
End Sub
Et pour ce qui est de la ligne de votre doute quand j'enlève ("marque").ToString cela me fait ce qui suit :
Alors que en le rajoutant cela fonctionne parfaitement
ne sert à rien, puisque c'est toi qui écrit le texte.
Le message d'erreur dit que l'index -1 est hors limites, ce qui est normal, les index vont de 0 à nombre d'items - 1.
Puisque tu dis que ce message apparait à l'ajout, je suppose que c'est au moment ou tu changes le datasource (d'ailleurs il serait judicieux de faire
bSource.DataSource = Nothing'libére la ressource précédente
bSource.DataSource = dbDataSet
)
Il y a un instant ou la liste est vidée, et l'index d'affichage (pas de la collection d'items) passe à -1, ce qui signifie qu'il n'y a rien de sélectionné.
Je pense qu'en ajoutant un test sur e.Index différent -1 au début de la méthode DrawItem, ça va marcher.
Bonjour, merci cela fonctionne sauf que quand j'ajoute cela me dis que ça c'est bien ajouté sauf que rien ne s'actualise même après que j'arrête et que je redémarre l'application rien ne s'affiche j'en ai marre ça marche pas :(
Et voici la liste que cela me fait en sachant que la listbox ce classe par ordre alphabétique :
Il n'y a que un seul est unique nom commençant par m est MSI alors que le test "marque" aurais dû être ajouté
PS : Alors que quand je ve le recréé avec le même ID ça me dit être déja créé Sauf que même dans ma base de donnée phpmyadmin rien n'à était ajouté d'où le problème vien t'il ? (Sachant que la temporairement pour les test je fais sur du local avec WAMP mais à la fin cela sera sur un server distant)
Le fait est que les bases de données, je ne connais pas (j'ai un peu bidouillé avec access).
Il faut déterminer si le problème vient de l'insertion ou de l'affichage.
Cette phase me fait penser à un problème à l'insertion.
même après que j'arrête et que je redémarre l'application rien ne s'affiche
Je suppose que tu as un autre moyen de superviser ta BDD, puisque tu connais la clé.
En ce cas, que se passe t il si tu ajoutes une ligne par la supervision?
Si ça affiche, ça élimine (définitivement ?), la partie affichage, il faut donc chercher du coté de l'insertion. Et là, je ne serais pas d'une grande aide.
Ce que je peux de conseiller, c'est de mettre un point d'arrêt après cette ligne
pour vérifier le contenu de Query.
D'ailleurs, il me semble me souvenir qu'avec Access, les ' ' ne devaient être utilisés que pour les champ de type nombre, pas pour les string.
Dim ConnectionSQL = New MySqlConnection
Dim COMMAND = New MySqlCommand
Dim SDA = New MySqlDataAdapter
Dim dbDataSet = New DataTable
Dim bSource = New BindingSource
Dim Query As String
ConnectionSQL.ConnectionString = "server=MONSERVEUR; userid=UTILISATEUR; password=MOT_DE_PASSE; database=BASE DE DONNEE"
Try
'Selection des marques dans la base de donnée et regroupement des doublons + Ordre alpha
Query = "SELECT marque FROM BDD.TABLE GROUP BY marque ORDER BY marque"
COMMAND = New MySqlCommand(Query, ConnectionSQL)
With SDA
.SelectCommand = COMMAND
.Fill(dbDataSet)
End With
bSource.DataSource = dbDataSet
LB1.DisplayMember = "marque"
LB1.DataSource = bSource 'Rentre les noms des marques dans la listbox
SDA.Update(dbDataSet)
ConnectionSQL.Close()
Catch ex As Exception
MsgBox("Une erreur est survenue :" & vbNewLine & vbNewLine & "L'erreur est : " & vbNewLine & ex.Message, MsgBoxStyle.Critical, "Erreur : 2")
Finally
ConnectionSQL.Dispose()
End Try
End Sub
AH ok !!
J'en déduit que c'est du VB.Net.
Donc voir ceci:
https://plasserre.developpez.com/cours/vb-net/?page=ui-winforms3#LVIII-H-1-q
Du Vb c'était Vb1, ça fait 20 ans que ça n.esxiste plus
Aujourd'hui il y a
Le problème étant que Microsoft n.est pas foutu de trouver des noms différents à des langages différents