Je voudrais en faire de meme pour un TextBox, un comboBox, un label et un listBox
Ma premiere question est :
Suis-je obligé de recopier ce code pour CHACUN des controles ou y a t'il une combine pour passer les controles en variablex et utiliser le meme code, puisque c'est la meme chose que je veux faire avec chaque controle ?
Ma seconde question est :
Peut on faire glisser ces controles d'une form à une autre ?
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 11 sept. 2007 à 16:15
Tu peux toujours te créer une Sub de création de contrôles dans laquelle tu passes en paramètre ce que dont tu auras besoin... Nom de la Form, type de contrôle, positions éventuellement, texte, couleur,.... tout ce dont tu auras besoin. Si dans certains cas, certaines options (paramètres) ne sont pas nécessaires, tu les mets à la fin de la liste des paramètres avec le mot-clé "Optional", ce qui permet de ne pas en tenir compte s'il est vide.
ex:
Sub MaSub(Nom As String, LeType As String, Optional Gauche As Single)
Dès qu'il y a le mot Optional pour un paramètre, tous les autres paramètres à droite de celui-ci doivent être Optional.
Par contre, si tu crées des boutons uniquement, tu sauras aisément où tu dois les afficher par rapport aux autres. Si ta Sub permet de créer différents types de contrôles, tu auras peut-être plus de difficultés à définir où placer tel ou tel type de contrôle et comment le configurer... Mais bon, c'est toi qui fais ce programme et toi seul, pour l'instant, sais ce qui doit y être fait.
cs_andrebernard
Messages postés404Date d'inscriptionlundi 9 juin 2003StatutMembreDernière intervention 4 septembre 20131 11 sept. 2007 à 16:37
Mais le probleme c'est que l'appel MouseDown se fait selon le controle sur lequel on a cliqué.
Pour pouvoir appeler une procedure avec variables, il faudrait faire un hook, souris pour recuperer l'evenement MouseDown ou que ce soit que l'on clique et gérer l'evenement selon le controle sur lequel on a cliqué, non ????
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 11 sept. 2007 à 16:45
Si tu utilises la méthode LOAD pour créer de nouveaux contrôles, c'est donc dire que tu as préalablement créé au moins UN contrôle de chaque type avec un Index à 0. Donc, les événements MouseUp, MouseDown,... sont déjà existants ... s'ils les possèdent, bien sûr.
Je ne vois donc pas le problème. Ou je ne saisis pas bien ta question (?)
MPi
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_andrebernard
Messages postés404Date d'inscriptionlundi 9 juin 2003StatutMembreDernière intervention 4 septembre 20131 11 sept. 2007 à 17:15
Ce que je veux dire c'est que code de déplacement et creation des controles que j'ai mis en bleu au debut du POST, je suis obligé de le réécrire par exemple pour l'evenement sur le label
Private Sub LabelTitre_MouseDown(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
Puis pour le combo , le textbox etc ....
Car quand je clic sur le label, ou les autre controles qui ne sont pas de meme type, evidement il n'y a pas de reaction dans l'evenement BoutonInstruction que ce soit mousedown, mouseup, ou mousemove
Donc il faudrais créer 3 procedures comme tu me l'a conseillé au dessus et leur passer le type d'objet qui a été cliqué, ai-je bien compris
Un peu du style :
Private Sub BoutonInstruction_MouseDown(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
MonMouseDown(Nom As String, LeType As String, Optional Gauche As Single)
End Sub
Private Sub BoutonInstruction_MouseMove(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
MonMouseMove(Nom As String, LeType As String, Optional Gauche As Single)
End Sub
Private Sub BoutonInstruction_MouseUp(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
MonMouseUp (Nom As String, LeType As String, Optional Gauche As Single)
End Sub
Private Sub Label_MouseDown(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
MonMouseDown(Nom As String, LeType As String, Optional Gauche As Single)
End Sub
Private Sub Label_MouseMove(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
MonMouseMove(Nom As String, LeType As String, Optional Gauche As Single)
End Sub
Private Sub Label_MouseUp(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
MonMouseUp (Nom As String, LeType As String, Optional Gauche As Single)
End Sub
Private Sub ComboBox_MouseDown(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
MonMouseDown(Nom As String, LeType As String, Optional Gauche As Single)
End Sub
Private Sub ComboBox_MouseMove(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
MonMouseMove(Nom As String, LeType As String, Optional Gauche As Single)
End Sub
Private Sub ComboBox_MouseUp(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
MonMouseUp (Nom As String, LeType As String, Optional Gauche As Single)
End Sub
Private Sub MonMouseDown(Nom As String, LeType As String, Optional Gauche As Single)
'Code de ce qui concerne le MouseDown pour n'importe quel controle
End Sub
Private Sub MonMouseMove(Nom As String, LeType As String, Optional Gauche As Single)
'Code de ce qui concerne le MouseMove pour n'importe quel controle
End Sub
Private Sub MonMouseUp(Nom As String, LeType As String, Optional Gauche As Single)
'Code de ce qui concerne le MouseUp pour n'importe quel controle
End Sub
J'espere que tu m'a compris car je reconnais que c'est vraiment pas facile à expliquer
Merci de ta patience
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 11 sept. 2007 à 18:01
C'est bien comme ça que je vois la chose... en y ajoutant tous les paramètres nécessaires, dont le contrôle et son Index, ainsi que tous les paramètres déjà existant dans MouseDown et les autres, soient les X et Y, le Button,... et autres au besoin
Donc, plutôt que Nom As String, ce pourrait être Ctl As Control
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 11 sept. 2007 à 18:53
Je pense qu'en spécifiant le nom de la Form sur lequel est le contrôle, ça devrait fonctionner. Ce serait donc un autre paramètre à rajouter à tes fonctions...
...(Frm As Form....)
cs_andrebernard
Messages postés404Date d'inscriptionlundi 9 juin 2003StatutMembreDernière intervention 4 septembre 20131 11 sept. 2007 à 19:01
Merci j'essaierais, je voulais savoir si j'avais une chance que ça marche .....avec deux forms
J'ai encore une question, avec une seule form ça marche pour tous les controles sauf pour le combo
Quand je clic dessus, il prend le focus, le curseur se met dedans mais j'arrive pas à le déplacer ....
T'aurais pas une idée dans ta hotte de magicien....
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 12 sept. 2007 à 14:16
Dans le menu Projet de VB, tu fais "Ajouter un UserControl" qui est une base sur laquelle tu peux insérer des contrôles. C'est un conteneur, un peu comme une feuille.
Dans le menu "Add-Ins" (qui doit être en français Composants ou Ajout de Composants) tu as un utilitaire pour créer des UserControls (ou contrôles ActiveX) que tu peux activer. Il te tient par la main jusqu'à ce que tu aies terminé. Tu peux donc ajouter ou enlever des propriétés ou méthodes par simples clicks. Une fois terminé, tu n'as qu'à faire le ménage du superflu.