marco62118
Messages postés35Date d'inscriptionmercredi 30 janvier 2008StatutMembreDernière intervention25 juin 2015 7 janv. 2008 à 21:29
bonsoir
je viens de trouver pourquoi ça ne fonctionnais pas dans case_mousemove je n'avais pas inscrit (index as integer... ne reprenant que la définition de mon usercontrol
enfin je n'ai pas fini car au début je faisait des dragdrop de mes cases, permettant de gérer facilement les cases autorisées à bouger , celles pouvant recevoir , sans vraiment déplacer les objets transférants seulement leur contenu mais ces glissement avec drgdrop sont très saccdé et ne donne pas une bonne viison de la chose , donc je voulais utilser la fonction mousemove, mais apperement ce n'est pas trop compatible avec DragMode automatic
je vais chercher
merci encore pour ton aide
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 7 janv. 2008 à 09:30
Case est un mot reservé... voilà tout ^^
si je les renommme et fait un groupe de controles ca fonctionne nikel, bien que le code ne soit pas top.
en effet:
- Dim utilisé en lieu et place de Public, pour déclarer P1 et P2
- API inutile ici, X et Y te sont transmises par l'evenement lui même...
Private mnOrgX As Single
Private mnOrgY As Single
Private Sub CcCase_MouseDown(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = vbLeftButton Then
mnOrgX = X
mnOrgY = Y
End If
End Sub
Private Sub CcCase_MouseMove(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = vbLeftButton Then
CcCase(Index).Left = CcCase(Index).Left + X - mnOrgX
CcCase(Index).Top = CcCase(Index).Top + Y - mnOrgY
End If
End Sub
marco62118
Messages postés35Date d'inscriptionmercredi 30 janvier 2008StatutMembreDernière intervention25 juin 2015 7 janv. 2008 à 07:46
j'ai créé un userform avec un label "Lbllet"qui contien un tout petit label "Lblpt"
le code dans le userform
Public Event MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Public Event MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Private Sub LblLet_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
RaiseEvent MouseDown(Button, Shift, X, Y)
End Sub
Private Sub LblLet_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
RaiseEvent MouseMove(Button, Shift, X, Y)
End Sub
ce qui me permet de voir dans ma form lorsque je charge le userform appelé "case" la propriété MouseMove et MouseDown
mais dans la form lorsque j'écris le code
Private Type POINTAPI
X As Long
Y As Long
End Type
Dim P1 As POINTAPI
Dim P2 As POINTAPI
Private Sub Case_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
GetCursorPos P1
End Sub
Private Sub Case_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = vbLeftButton Then
GetCursorPos P2
Case.Left = Case.Left + (P2.X - P1.X) * Screen.TwipsPerPixelX
Case.Top = Case.Top + (P2.Y - P1.Y) * Screen.TwipsPerPixelY
GetCursorPos P1
End If
End Sub
ne fonctionne pas sur 225 "case" que j'ai chargé dynamiquement
le mousemove ne fonctionne que sur chaque "case" c'est à dire si je remplace dans le code cse par case1 et donc de faire une fonction par case
si je me fait comprendre
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 6 janv. 2008 à 23:35
je n'ai pas compris ta question...
normallement, si tu definit un groupe de controles, les evenements changent tout seuls pour accueillir l'Index
marco62118
Messages postés35Date d'inscriptionmercredi 30 janvier 2008StatutMembreDernière intervention25 juin 2015 6 janv. 2008 à 23:18
Bonjour
je regardais cette source pour voir comment faire exactement un mousemove sur un usercontrol et je m'appercois que tu déclare une procédure UserControl_MouseMove... mais dans la form sur le controle "overlabel" il n'existe pas d'événement mousemove?????
j'avais donc fait un usercontrole et je lui ai affecté un événement mousemove en utilisant event mousemove..... et RaiseEvent Mousemove... là ça fonctionne mais ce que je n'arrive pas à faire c'est lorsque je crée des usercontrol indexé, mon événement n'est valable que pour usercontrol1_MouseMove... Comment faire pour avoir comme l'événement DragDrop valable pour le usercontrol en général
merci d'avance si vous me comprenez
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 13 juin 2006 à 14:28
Salut chevalier gallois
Merci pour tes remarques.
un fichier .Ctl est un UserControl.
c'est a inclure dans un projet, au même titre qu'un .frm ou .bas ...
un fichier .Ocx est un fichier compilé qui contient 1 ou plusieurs controles...
en gros (je simplifie) le .ctl est le code
le .ocx est la version compilée de celui-ci.
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 13 juin 2006 à 14:09
Salut Renfield !
Ben c'est vraiment très très bien commentés. Rien à dire. Je prendrai exemple sur ta source pour des tests car je n'ai suivi que les tutoriaux ou les sources jusqu'à présent, mais les créations de propriétés et des procédures sont très bien décrite.
D'ailleurs, je regardé toutes tes sources et de nombreuses m'interresse (en particulier les OCX).
Par contre, je m'interroge sur un point, quel est la différence entre un controle avec l'extension .ctl et avec .ocx ?
En tout cas merci à toi de compléter mes connaissances et certainement à très bientôt sur tes autres sources. (je te laisserai les commentaires)
A+ Mortalino
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 7 juil. 2005 à 01:02
et demain, Bernard Pivot nous apprendra à écrire le mot "brosse-Adam"...
7/10 pour la source. commentée à souhait, mais venant du REY, même en ocx basique (comme je te l'ai dit en M.E), on pourrait espérer un peu plus de détails et d'options (but principal d'un tuto) ;)
parfait cela dit en toute première ouverture d'un ocx, dans le parcours d'un développeur. (et dire qu'il fait çà de la main gauche, pendant qu'il fait des puzzles 10000pièces de l'autre, tout çà pendant son sommeil..... çà laisse rêveur...)
je re-DL pour "MAJ font", et m'attarde un peu sur le mouse-O-ver ;)
PCPT
ScSami
Messages postés1488Date d'inscriptionmercredi 5 février 2003StatutMembreDernière intervention 3 décembre 200724 6 juil. 2005 à 20:46
... mais null n'est parfait!!! Je n'avais jamais remarqué ce petit "vice" chez notre ami!!!
Il est aussi à noter la présence qu'un accent circonflexe sur le 1er "i" : "rafraîchir" ;-)
www.FRFrance.com °~°
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 6 juil. 2005 à 15:01
ah... euh ... OK. Merci ^^
je ferais gaffe à ça, dorénavant
tbbuim1
Messages postés940Date d'inscriptionjeudi 20 février 2003StatutMembreDernière intervention 3 février 20119 6 juil. 2005 à 14:11
Excellent comme d'hab.
Par contre j'ai noté une faute que tu fais souvent:
RAFRAICHIR ne prend qu'un seul F :p
odan71
Messages postés140Date d'inscriptionmardi 8 juillet 2003StatutMembreDernière intervention11 décembre 2007 6 juil. 2005 à 11:56
comme toujours de la belle ouvrage :D
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 6 juil. 2005 à 09:37
ola ! que d'honneurs ^^
non, je ne participe pas au projet de DarkSidious...
tout ce que j'espère, c'est que ce "tuto" aidera un maximum de gens voulant se mettre aux OCX...
ScSami
Messages postés1488Date d'inscriptionmercredi 5 février 2003StatutMembreDernière intervention 3 décembre 200724 6 juil. 2005 à 07:07
Tient d'ailleurs, ça me fait penser à te demandé si tu participe au projet POPApi de DarkSidious ???
Sinon, la source, idem... Renfield sera toujours... notre maître à tous tant son savoir est grand ;-)
cs_NISANDSYSTEMS
Messages postés178Date d'inscriptionvendredi 1 novembre 2002StatutMembreDernière intervention 9 janvier 2010 5 juil. 2005 à 17:28
On s'demandait ou tché quété passé depuis ch'timp là.
Sinon toujours correct niveau code, explications et démos.
Petite suggestion.
Tu devrais essayer de deployer une lib type ApiGuide avec toutes
tes petites astuces car il est vrai que certaines sont tres bien.
Sur cela bonne continuation et au plaisir sur VBFrance.
@+ Nisand-systems
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 5 juil. 2005 à 16:25
WindowFromPoint est a favoriser a toute comparaison de coordonées.
En effet, si un controle est ne serai-ce que partiellement superposé a ton UserControl et que la souris va sur la zone commune, ton curseur sera déclaré Over ton controle....
alors que c'est faux...
concernant l'objet Ambient, pas grand chose a en dire... il sert a plusieurs choses, récupérer le nom du controle, comme dans la présente source, ou via Ambient.UserMode, a savoir si on est en mode execution. cet objet propose d'autres propriétés que je vous invite a découviri. Je n'ai amais vraiement fouiné de ce coté là. Un evenement indique même la modification de la valeur de ses propriétés. Utile pour etre avertit du renommage de votre composant.
maintenant, c'est vrais que ce controle est très basique, il ne fait que montrer les bases.
pour être exploitable, il faudrais ajouter couleur de fond, image, alignement... enfin, quelques propriétés comme celles-ci
j'encourage ceux que ca interesse d'apprendre à mettre les mains dans le code, et d'implementer ces quelques fonctionnalités, afin de se faire la main.
je viens de mettre a jour, incluant une nouvelle propriété : Font
econs
Messages postés4030Date d'inscriptionmardi 13 mai 2003StatutMembreDernière intervention23 décembre 200824 5 juil. 2005 à 15:50
Je voudrais bien faire sur ta source un commentaire aussi constructif que tu le fis sur ma dernière source, mais à part dire que c'est très bien, ... je n'ai pas vraiment d'autre idée.
C'est simple à comprendre tellement c'est bien commenté.
Je ne connaissais pas WindowFromPoint, mais maintenant, je ne vais plus l'oublier ! :o)
Peux-tu donner deux ou trois informations sur les propriétés Ambient d'un UserControl STP ? Ca pourrait intéresser du monde (moi le premier).
7 janv. 2008 à 21:29
je viens de trouver pourquoi ça ne fonctionnais pas dans case_mousemove je n'avais pas inscrit (index as integer... ne reprenant que la définition de mon usercontrol
enfin je n'ai pas fini car au début je faisait des dragdrop de mes cases, permettant de gérer facilement les cases autorisées à bouger , celles pouvant recevoir , sans vraiment déplacer les objets transférants seulement leur contenu mais ces glissement avec drgdrop sont très saccdé et ne donne pas une bonne viison de la chose , donc je voulais utilser la fonction mousemove, mais apperement ce n'est pas trop compatible avec DragMode automatic
je vais chercher
merci encore pour ton aide
7 janv. 2008 à 09:30
si je les renommme et fait un groupe de controles ca fonctionne nikel, bien que le code ne soit pas top.
en effet:
- Dim utilisé en lieu et place de Public, pour déclarer P1 et P2
- API inutile ici, X et Y te sont transmises par l'evenement lui même...
Private mnOrgX As Single
Private mnOrgY As Single
Private Sub CcCase_MouseDown(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = vbLeftButton Then
mnOrgX = X
mnOrgY = Y
End If
End Sub
Private Sub CcCase_MouseMove(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = vbLeftButton Then
CcCase(Index).Left = CcCase(Index).Left + X - mnOrgX
CcCase(Index).Top = CcCase(Index).Top + Y - mnOrgY
End If
End Sub
7 janv. 2008 à 07:46
le code dans le userform
Public Event MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Public Event MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Private Sub LblLet_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
RaiseEvent MouseDown(Button, Shift, X, Y)
End Sub
Private Sub LblLet_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
RaiseEvent MouseMove(Button, Shift, X, Y)
End Sub
ce qui me permet de voir dans ma form lorsque je charge le userform appelé "case" la propriété MouseMove et MouseDown
mais dans la form lorsque j'écris le code
Private Type POINTAPI
X As Long
Y As Long
End Type
Dim P1 As POINTAPI
Dim P2 As POINTAPI
Private Sub Case_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
GetCursorPos P1
End Sub
Private Sub Case_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = vbLeftButton Then
GetCursorPos P2
Case.Left = Case.Left + (P2.X - P1.X) * Screen.TwipsPerPixelX
Case.Top = Case.Top + (P2.Y - P1.Y) * Screen.TwipsPerPixelY
GetCursorPos P1
End If
End Sub
ne fonctionne pas sur 225 "case" que j'ai chargé dynamiquement
le mousemove ne fonctionne que sur chaque "case" c'est à dire si je remplace dans le code cse par case1 et donc de faire une fonction par case
si je me fait comprendre
6 janv. 2008 à 23:35
normallement, si tu definit un groupe de controles, les evenements changent tout seuls pour accueillir l'Index
6 janv. 2008 à 23:18
je regardais cette source pour voir comment faire exactement un mousemove sur un usercontrol et je m'appercois que tu déclare une procédure UserControl_MouseMove... mais dans la form sur le controle "overlabel" il n'existe pas d'événement mousemove?????
j'avais donc fait un usercontrole et je lui ai affecté un événement mousemove en utilisant event mousemove..... et RaiseEvent Mousemove... là ça fonctionne mais ce que je n'arrive pas à faire c'est lorsque je crée des usercontrol indexé, mon événement n'est valable que pour usercontrol1_MouseMove... Comment faire pour avoir comme l'événement DragDrop valable pour le usercontrol en général
merci d'avance si vous me comprenez
13 juin 2006 à 14:28
Merci pour tes remarques.
un fichier .Ctl est un UserControl.
c'est a inclure dans un projet, au même titre qu'un .frm ou .bas ...
un fichier .Ocx est un fichier compilé qui contient 1 ou plusieurs controles...
en gros (je simplifie) le .ctl est le code
le .ocx est la version compilée de celui-ci.
13 juin 2006 à 14:09
Ben c'est vraiment très très bien commentés. Rien à dire. Je prendrai exemple sur ta source pour des tests car je n'ai suivi que les tutoriaux ou les sources jusqu'à présent, mais les créations de propriétés et des procédures sont très bien décrite.
D'ailleurs, je regardé toutes tes sources et de nombreuses m'interresse (en particulier les OCX).
Par contre, je m'interroge sur un point, quel est la différence entre un controle avec l'extension .ctl et avec .ocx ?
En tout cas merci à toi de compléter mes connaissances et certainement à très bientôt sur tes autres sources. (je te laisserai les commentaires)
A+ Mortalino
7 juil. 2005 à 01:02
7/10 pour la source. commentée à souhait, mais venant du REY, même en ocx basique (comme je te l'ai dit en M.E), on pourrait espérer un peu plus de détails et d'options (but principal d'un tuto) ;)
parfait cela dit en toute première ouverture d'un ocx, dans le parcours d'un développeur. (et dire qu'il fait çà de la main gauche, pendant qu'il fait des puzzles 10000pièces de l'autre, tout çà pendant son sommeil..... çà laisse rêveur...)
je re-DL pour "MAJ font", et m'attarde un peu sur le mouse-O-ver ;)
PCPT
6 juil. 2005 à 20:46
Il est aussi à noter la présence qu'un accent circonflexe sur le 1er "i" : "rafraîchir" ;-)
www.FRFrance.com °~°
6 juil. 2005 à 15:01
je ferais gaffe à ça, dorénavant
6 juil. 2005 à 14:11
Par contre j'ai noté une faute que tu fais souvent:
RAFRAICHIR ne prend qu'un seul F :p
6 juil. 2005 à 11:56
6 juil. 2005 à 09:37
non, je ne participe pas au projet de DarkSidious...
tout ce que j'espère, c'est que ce "tuto" aidera un maximum de gens voulant se mettre aux OCX...
6 juil. 2005 à 07:07
Sinon, la source, idem... Renfield sera toujours... notre maître à tous tant son savoir est grand ;-)
5 juil. 2005 à 17:28
Sinon toujours correct niveau code, explications et démos.
Petite suggestion.
Tu devrais essayer de deployer une lib type ApiGuide avec toutes
tes petites astuces car il est vrai que certaines sont tres bien.
Sur cela bonne continuation et au plaisir sur VBFrance.
@+ Nisand-systems
5 juil. 2005 à 16:25
En effet, si un controle est ne serai-ce que partiellement superposé a ton UserControl et que la souris va sur la zone commune, ton curseur sera déclaré Over ton controle....
alors que c'est faux...
concernant l'objet Ambient, pas grand chose a en dire... il sert a plusieurs choses, récupérer le nom du controle, comme dans la présente source, ou via Ambient.UserMode, a savoir si on est en mode execution. cet objet propose d'autres propriétés que je vous invite a découviri. Je n'ai amais vraiement fouiné de ce coté là. Un evenement indique même la modification de la valeur de ses propriétés. Utile pour etre avertit du renommage de votre composant.
maintenant, c'est vrais que ce controle est très basique, il ne fait que montrer les bases.
pour être exploitable, il faudrais ajouter couleur de fond, image, alignement... enfin, quelques propriétés comme celles-ci
j'encourage ceux que ca interesse d'apprendre à mettre les mains dans le code, et d'implementer ces quelques fonctionnalités, afin de se faire la main.
je viens de mettre a jour, incluant une nouvelle propriété : Font
5 juil. 2005 à 15:50
C'est simple à comprendre tellement c'est bien commenté.
Je ne connaissais pas WindowFromPoint, mais maintenant, je ne vais plus l'oublier ! :o)
Peux-tu donner deux ou trois informations sur les propriétés Ambient d'un UserControl STP ? Ca pourrait intéresser du monde (moi le premier).