cs_marco62118
Messages postés176Date d'inscriptionmercredi 7 avril 2004StatutMembreDernière intervention 1 avril 2013
-
2 janv. 2008 à 20:18
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 2018
-
5 janv. 2008 à 15:02
bonjour à tous
j'ai fait une application scrabble avec des des userform pour les pions . ce userform n'est que deux label imbriqués. le problème est quand je déplace mes pions l'apparence n'est pas "chouette" . le userform se réduit à son pourtour (pas le plus génant) mais surtout le glissement est très saccadé, avec disparition totale du pourtour, très saccadé!
si vous me comprenez, c'est peut être pas clair, avez vous une solution
cs_marco62118
Messages postés176Date d'inscriptionmercredi 7 avril 2004StatutMembreDernière intervention 1 avril 20131 2 janv. 2008 à 23:46
pardon un contrôle que j'ai fait moi même Un gran,d label pour contenir la lmettre et un plus petit label imbriqué dans l'autre pour le point de la lettre
cs_marco62118
Messages postés176Date d'inscriptionmercredi 7 avril 2004StatutMembreDernière intervention 1 avril 20131 3 janv. 2008 à 18:23
simplement je clique dessus je maintien et je déplace
j'ai téléchargé d'autres logiciel scrabble mais là se sont des picturebox qui servent de pions et il n'y a apparement pas de saccade
Vous n’avez pas trouvé la réponse que vous recherchez ?
jmfmarques
Messages postés7668Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 3 janv. 2008 à 18:49
"simplement je clique dessus je maintien et je déplace"
Cela veut dire (si tu parles bien d'un déplacement en mode exécution et pas en mode création de l'appli sur laquelle tu as unséré ce UserControl) :
Qu'il contient lui-même des instructions de déplacement !...
Question, dans ce cas : cet ocx est-il de toi ? Si non : en as-tu le source ? Si non également : tu ne peux que le subir, tel qu'il est écrit, bien évidemment !!!
cs_marco62118
Messages postés176Date d'inscriptionmercredi 7 avril 2004StatutMembreDernière intervention 1 avril 20131 4 janv. 2008 à 18:54
oui c'est bien un OCX que j'ai créé.
sur ma form qui représente mon jeu j'ai charger mes cases fabriquées à partir de l'OCX . une fois chargé et prêt à jouer je déplace mes cases, j'utilise "DragDrop" de mon OCX case.
mais je viens de remarquer lors de la phase de création, lorsque je déplace des objets sur ma form ça fait exactement le même genre de déplacement saccadé
jmfmarques
Messages postés7668Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 4 janv. 2008 à 19:14
Alors ===>> tu nous le montres quand, ce bout de code qui gère le déplacemen (et que TU as forcément écrit dans ton ocx) ?
Pas tout l'ocx, hein ... juste les parties gérant le déplacement ....
cs_marco62118
Messages postés176Date d'inscriptionmercredi 7 avril 2004StatutMembreDernière intervention 1 avril 20131 4 janv. 2008 à 23:40
voici une partie de code , je ne sais si c'est ça que tu veux voir???
Private Sub Case_DragDrop(ind As Integer, Source As Control, X As Single, Y As Single)
'place les lettres du chevalet sur le plateau, les cases prennent la valeur du chevalet
Dim ligne, col As Integer
Dim i As Integer
Dim Jocker As String
X = Form1.Case(ind).Top
Y = Form1.Case(ind).Left
If Change = False Then
If Form1.Case(ind).Caption = "" Then 'si case destination vide
If Source.Name = "Chev" Then 'la source est le chevalet
Form1.ListView1.Enabled = False
Form1.CmdSolution.Visible = False
Form1.Menu_Solution.Enabled = False
Form1.Menu_Changer.Enabled = False
Form1.Case(ind).DragMode = 1 'autorise le mode glisser déplacer
If Source.Caption = "?" Then
Jocker = UCase(InputBox("Quelle lettre choississez vous pour remplacer le JOCKER ? ", "JOCKER", , X, Y))
If Jocker = "" Then
MsgBox "Vous devez rentrer une lettre pour le Jocker "
Exit Sub
ElseIf Len(Jocker) > 1 Then
Exit Sub
ElseIf Asc(Jocker) < 65 Or Asc(Jocker) > 90 Then
Exit Sub
End If
Source.Caption = Jocker
Source.point = tab_point_let(Asc(Jocker))
Form1.Case(ind).Tag = 1
End If
Source.DragMode = 0 'bloque le mode glisser déplacer de la source
Form1.Case(ind).Caption = Source.Caption 'la case prend la lettre de la source
Plateau(ind).Let = Source.Caption 'met à jour le plateau
Source.Caption = "" 'vide la source
Form1.Case(ind).point = Source.point 'la case prend le point de la source
Plateau(ind).point = Source.point 'met à jour le plateau
Form1.Case(ind).PtVisible = True ' le point devient visible
Source.PtVisible = False 'efface le point de la source
NumPose = NumPose + 1
With CoordLetDéposé(NumPose) 'enregistre chaque lettre déposée dans un tableau qui enregistre les coordonnees de chaque lettres
.Y = Plateau(ind).Y 'prends la ligne du plateau
.X = Plateau(ind).X 'prends la colonne du plateau
.ind = ind 'Form1.Case(ind).Index
.Let = Plateau(ind).Let 'Form1.Case(ind).Caption
.Bon = Plateau(ind).Bon 'Form1.Case(ind).Tag
.point = Plateau(ind).point 'Form1.Case(ind).Point
.MotMultipli = Plateau(ind).MotMultipli
End With
ElseIf Source.Name = "Case" Then 'une lettre qui vient d'être placée sur le plateau est bougéeée dans le plateau _
il faut changer ses coordonnées
Form1.Case(ind).DragMode = 1 'autorise le mode glisser déplacer
If Source.Tag = 1 Then
Jocker = UCase(InputBox("Quelle lettre choississez vous pour remplacer le JOCKER ? ", "JOCKER", , X, Y))
If Jocker = "" Then
MsgBox "Vous devez rentrer une lettre pour le Jocker "
Exit Sub
ElseIf Len(Jocker) > 1 Then Exit Sub
ElseIf ((Asc(Jocker)) < 65) Or ((Asc(Jocker)) > 90) Then Exit Sub
End If
Source.Caption = Jocker
Source.point = tab_point_let(Asc(Jocker))
Form1.Case(ind).Tag = 1
End If
Source.DragMode = 0 'empêche le glisser déplacer
Form1.Case(ind).Caption = Source.Caption 'la case prend la lettre de la source
Plateau(ind).Let = Source.Caption
Plateau(Source.Index).Let = ""
Source.Caption = ""
Form1.Case(ind).point = Source.point 'la case prend le point de la source
Plateau(ind).point = Source.point
Plateau(Source.Index).point = 0
Form1.Case(ind).PtVisible = True ' le point devient visible
Source.PtVisible = False 'le point de la source devient invisible
For i = 1 To 7
If CoordLetDéposé(i).ind = Source.Index Then
With CoordLetDéposé(i)
.X = Plateau(ind).X 'Int(Form1.Case(ind).Top / Form1.Case(ind).Height)
.Y = Plateau(ind).Y 'Int(Form1.Case(ind).Left / Form1.Case(ind).Width)
.ind = ind 'Form1.Case(ind).Index
.Let = Plateau(ind).Let 'form1.Case(ind).Caption
.Bon = Plateau(ind).Bon 'Form1.Case(ind).Tag
.point = Plateau(ind).point ' Form1.Case(ind).Point
.MotMultipli = Plateau(ind).MotMultipli
End With
End If
Next i
End If
End If
End If
If NumPose > 0 Then
Form1.CmdValide.Visible = True
End If
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201822 5 janv. 2008 à 00:03
Je ne suis pas certain de ce que j'avance, mais plutôt que d'utiliser les X et Y
X = Form1.Case(ind).Top
Y = Form1.Case(ind).Left
qui sont les paramètres de la procédure, crées 2 variables qui prendront ces valeurs
MonX= X
MonY = Y
et utilise ces variables dans toute la procédure
MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA.
jmfmarques
Messages postés7668Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 5 janv. 2008 à 08:44
Ce code n'étant pas celui du glisser d'un objet mais celui d'un drag and drop source/cible qui positionne l'objet, in fine, sur la cible, il n'y a absolument pas à s'étonner des mouvements saccadés !!!
cs_marco62118
Messages postés176Date d'inscriptionmercredi 7 avril 2004StatutMembreDernière intervention 1 avril 20131 5 janv. 2008 à 14:51
Merci j'ai bien compris!
comme on me l'a aussi expliqué sur l'autre forum "développez.com" il faut que je crée des méthodes pour gérer le déplacemen t de mon OCX.
problème annexe: J'ai créé cet OCX endhors de mon projet de scrabble, est il possible d'intégrer le code de mon Ocx dans mon projet scrabble, pour n'avoir pas à fournir l'OCX, comme le usercontrol ne sert que pour ce projet.!
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201822 5 janv. 2008 à 15:02
Dans le menu Fichier, tu choisis Ajouter un projet et tu choisis le projet original .vbp de ton OCX. Ça va te créer un nouveau projet .VBG qui deviendra ton projet de départ.
MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA.