Contrôles dans un panel qui se balladent
Le
Olivier57b
Bonjour,
Voici mon pb: je développe une programme de gestion des courses au
supermarché; il affiche une liste de produits (classés par catégorie, par ex
haricots dans légumes), et pour chaque produit il affiche: une checkBox (qui
permet de sélectionner le produit, un bouton Imprimer permet une sortie
papier des produits sélectionnés; la checkBox permet aussi d'afficher le nom
du produit), deux listBox pour la quantité: si l'on veut 1 boîte de haricots,
on choisit le nombre dans la première listBox et "Boîte" dans la deuxième
listBox.
Mais j'ai un pb d'affichage des contrôles de nouveaux produits, et ceci de
temps en temps seulement.Les contrôles de ce produit sont à la bonne hauteur,
mais sont décalés horizontalement, vers la droite; et si je crée deux
nouveaux produits dans cette colonne, le deuxième peut être encore plus
décalé que le premier, ou décalé autant que le premier. Après une série de
trois produits décalés, il est arrivé que le quatrième soit bien placé.
Je précise que les contrôles sont regroupés normalement (cad la checkBox est
à côté des deux listBox), et que les propriété .left des contrôles sont
normales (donc le décalage ne vient pas de là).
Voici le code:
'btnPdt est le bouton qui permet de rajouter un produit
Private Sub BtnPdt_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles BtnPdt.Click
' acquisition du nb de pdts ds cette catégorie, pour pv rajouter le pdt au
bon 'endroit
Dim NbPdt1 As Integer
NbPdt1 = TAQueries.NbPdt(CbxSup.Text, lsbCat.SelectedItem)
'acquisition de: PdtPar (nom du nvo pdt), CatCNbPar (numéro de la
colonne du nvo 'pdt) et de PdtNbPar (rien de nvo, c'est juste un changement
de nom de variable)
Dim pdtPar = InputBox("Entrez le nom du produit", "COURSES")
Dim CatCNbPar As Integer = lsbCat.SelectedIndex + 1
' on avait PdtNbPar commence par 0
Dim PdtNbPar As Integer = NbPdt1
'rajout des contrôles ds le panel
Dim FonteFam1 As New FontFamily("Georgia")
Dim Police1 As New Font(FonteFam1, 10, FontStyle.Regular,
GraphicsUnit.Pixel)
'checkBox
Dim myChkBox As New CheckBox()
With myChkBox
'Pour le nom, on commence par Ckb 1.1
.Name = "Ckb " & CType(CatCNbPar, String) & "." & CType(PdtNbPar
+ 1, String)
.Text = pdtPar
Dim ckbVal As GraphicsUnit = GraphicsUnit.Pixel
.Width = 75
.BackColor = Color.OliveDrab
.ForeColor = Color.Yellow
.Left = 26 + 232 * (CatCNbPar - 1)
'PdtNbPar commence à 1
.Top = 226 - 163 + 20 * PdtNbPar
.Font = Police1
'.Width = 160
'.Height = 20
End With
'en +, qd chkboxClickChanged, placer le curseur sur la lstBox associée
AddHandler myChkBox.CheckedChanged, AddressOf GiveFocus
pnlCatPdt.Controls.Add(myChkBox)
Je ne sais pas du tout à quoi c'est dû, si vous avez une idée, elle est la
bienvenue!
Voici mon pb: je développe une programme de gestion des courses au
supermarché; il affiche une liste de produits (classés par catégorie, par ex
haricots dans légumes), et pour chaque produit il affiche: une checkBox (qui
permet de sélectionner le produit, un bouton Imprimer permet une sortie
papier des produits sélectionnés; la checkBox permet aussi d'afficher le nom
du produit), deux listBox pour la quantité: si l'on veut 1 boîte de haricots,
on choisit le nombre dans la première listBox et "Boîte" dans la deuxième
listBox.
Mais j'ai un pb d'affichage des contrôles de nouveaux produits, et ceci de
temps en temps seulement.Les contrôles de ce produit sont à la bonne hauteur,
mais sont décalés horizontalement, vers la droite; et si je crée deux
nouveaux produits dans cette colonne, le deuxième peut être encore plus
décalé que le premier, ou décalé autant que le premier. Après une série de
trois produits décalés, il est arrivé que le quatrième soit bien placé.
Je précise que les contrôles sont regroupés normalement (cad la checkBox est
à côté des deux listBox), et que les propriété .left des contrôles sont
normales (donc le décalage ne vient pas de là).
Voici le code:
'btnPdt est le bouton qui permet de rajouter un produit
Private Sub BtnPdt_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles BtnPdt.Click
' acquisition du nb de pdts ds cette catégorie, pour pv rajouter le pdt au
bon 'endroit
Dim NbPdt1 As Integer
NbPdt1 = TAQueries.NbPdt(CbxSup.Text, lsbCat.SelectedItem)
'acquisition de: PdtPar (nom du nvo pdt), CatCNbPar (numéro de la
colonne du nvo 'pdt) et de PdtNbPar (rien de nvo, c'est juste un changement
de nom de variable)
Dim pdtPar = InputBox("Entrez le nom du produit", "COURSES")
Dim CatCNbPar As Integer = lsbCat.SelectedIndex + 1
' on avait PdtNbPar commence par 0
Dim PdtNbPar As Integer = NbPdt1
'rajout des contrôles ds le panel
Dim FonteFam1 As New FontFamily("Georgia")
Dim Police1 As New Font(FonteFam1, 10, FontStyle.Regular,
GraphicsUnit.Pixel)
'checkBox
Dim myChkBox As New CheckBox()
With myChkBox
'Pour le nom, on commence par Ckb 1.1
.Name = "Ckb " & CType(CatCNbPar, String) & "." & CType(PdtNbPar
+ 1, String)
.Text = pdtPar
Dim ckbVal As GraphicsUnit = GraphicsUnit.Pixel
.Width = 75
.BackColor = Color.OliveDrab
.ForeColor = Color.Yellow
.Left = 26 + 232 * (CatCNbPar - 1)
'PdtNbPar commence à 1
.Top = 226 - 163 + 20 * PdtNbPar
.Font = Police1
'.Width = 160
'.Height = 20
End With
'en +, qd chkboxClickChanged, placer le curseur sur la lstBox associée
AddHandler myChkBox.CheckedChanged, AddressOf GiveFocus
pnlCatPdt.Controls.Add(myChkBox)
Je ne sais pas du tout à quoi c'est dû, si vous avez une idée, elle est la
bienvenue!

Poser une question


Peut être les polices, pour avoir la même proportion il faut une police
à taille fixe (couRier new)???
J'ai fait une liste de course par drag and drop, si tu veux voir:
http://irolog.free.fr/irolog_vente/.../index.htm
------
Site logiciels
http://irolog.free.fr
Mail
http://irolog.free.fr/ecrire/index.htm
Site perso
http://irolog.free.fr/joe/index.htm
Principe d'utilisation des news Groups
http://support.microsoft.com/direct...regles.htm
------------------------------------------------------------------------------------
"Olivier57b" de news:
changé. Je pense à une propriété du panel, mais je suis dans le flou...
Bien essayé!
"X" wrote:
devant, par un
ma_chaine=TRIM(ma_chaine)
Sinon, les décalés, tu les passe au rayon X, il doit y avoir une raison,
genre:
dim a as integer
dim decale
for i = 1 to len(decale)
decale = TRIM(decale)
a = ASC(mid(decale, i, 1)
msgbox a
next i
------
Site logiciels
http://irolog.free.fr
Mail
http://irolog.free.fr/ecrire/index.htm
Site perso
http://irolog.free.fr/joe/index.htm
Principe d'utilisation des news Groups
http://support.microsoft.com/direct...regles.htm
------------------------------------------------------------------------------------
"Olivier57b" de news:
Olivier57b disait :
Bonjour,
Vas voir sur les groupes :
microsoft.public.fr.dotnet
microsoft.public.fr.dotnet.vb
Les contrôles du framework offrent beaucoup plus de possibilités que
ceux du vb6. C'est donc là-bas que tu auras les réponses les plus
adaptées.
Sans compter que les techniques de programmation sont tout de même très
différentes.
--
Fred
http://www.cerbermail.com/?3kA6ftaCvT