Bonjours tt le monde,j'ai un probleme d'ou je ne vois pas la fin....
j'aimerais realiser une boite à outil comme sur VB mais je n'arrive pas à
gerer le Drag And Drop entre 2 feuilles.Quelqu'un a t'il déjà eu ce probleme
et trouvé une solution,car je seche la dessus
D'avance merci.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Thierry Bertrand
A priori il n'y a pas de possibilité de drag and drop entre deux feuilles. VB ne le fait pas. J'ai fait ce genre de truc: Une feuille d'outils et une feuille de design: La feuille d'outil permet de sélectionner l'outil. Il n'y a pas de drag and drop dans la feuille de design. Par contre ensuite je dessine dans la feuille de design un rectangle dimentionnable qui se transforme en objet une fois le bouton de souris relaché. Cet objet peut ensuite être draggé droppé dans la fenêtre de design. VB fait la même chose ...
A priori il n'y a pas de possibilité de drag and drop entre deux feuilles.
VB ne le fait pas.
J'ai fait ce genre de truc: Une feuille d'outils et une feuille de design:
La feuille d'outil permet de sélectionner l'outil. Il n'y a pas de drag and
drop dans la feuille de design. Par contre ensuite je dessine dans la
feuille de design un rectangle dimentionnable qui se transforme en objet une
fois le bouton de souris relaché. Cet objet peut ensuite être draggé droppé
dans la fenêtre de design.
VB fait la même chose ...
A priori il n'y a pas de possibilité de drag and drop entre deux feuilles. VB ne le fait pas. J'ai fait ce genre de truc: Une feuille d'outils et une feuille de design: La feuille d'outil permet de sélectionner l'outil. Il n'y a pas de drag and drop dans la feuille de design. Par contre ensuite je dessine dans la feuille de design un rectangle dimentionnable qui se transforme en objet une fois le bouton de souris relaché. Cet objet peut ensuite être draggé droppé dans la fenêtre de design. VB fait la même chose ...
West972
Merci d'avoir pris le temps de me répondre :)
peux tu poster un exemple de code réalisant ce que tu as décri. Merci
Merci d'avoir pris le temps de me répondre :)
peux tu poster un exemple de code réalisant ce que tu as décri.
Merci
peux tu poster un exemple de code réalisant ce que tu as décri. Merci
Thierry Bertrand
Comme je ne vais pas t'nevoyer le source complet d'un logiciel, je vais essayer de t'envoyer des morceaux compréhensibles:
L'appli gère 3 fenêtres MDI: frmCMD qui contient les outils sous forme indexées (pictures box) frmProperty qui contient des boites de saisies et des combo qui permettent de définir les propriétés de l'occurence de l'outil qu'on utilise frmDefine qui est la fenêtre de design. Elle contient des objets types indexés (depuis 0) tels que boite de siaisie, image, etc...
Le principe: On sélectionne un outil en cliquant sur l'image correspondant dans la fenêtre frmCMD. on dessine un rectangle dans la fenêtre de design pour délimiter les coordonnées et la taille pris par l'occurence d'outil qu'on utilise à l'aide de la souris (enfoncer bouton gauche, déplacement, relachement bouton) La fenêtre est entièrement remplie par un objet image de nom pctPict Une fois l'objet positionné, la fenetre de propriété devient visible pour indiquer les caratéristiques spécifiques de l'objet. La variable gbAction définie le type d'outil qu'on est en train d'utiliser
=============== Choix de l'outil ============ Private Sub cmd_Click(Index As Integer) gbAction = Index cmd(OldCmd).Appearance = 0 cmd(OldCmd).BorderStyle = 0 cmd(OldCmd).BackColor = &H80000004 cmd(Index).Appearance = 1 cmd(Index).BorderStyle = 1 OldCmd = Index Select Case Index Case 0: frmDefine.MousePointer = vbArrow Case 1, 2, 3, 4, 5, 6: frmDefine.MousePointer = vbCrosshair Case Else: frmDefine.MousePointer = vbDefault End Select frmProperty.Hide End Sub ======================================== =============== dessin de l'obet en cours de design ===================== Private Sub pctPict_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) Dim I As Integer
If gbAction = ActionSelect Then For I = 1 To PictShape.UBound If (X > PictShape(I).Left And _ X < PictShape(I).Left + PictShape(I).Width And _ Y > PictShape(I).Top And _ Y < PictShape(I).Top + PictShape(I).Height And _ PictShape(I).Visible) Then PictShape_MouseDown I, Button, Shift, X - PictShape(I).Left, Y - PictShape(I).Top Exit Sub End If Next I End If If gbAction <> ActionSelect Then gbFrm_X = X gbFrm_Y = Y gbFrm_OldX = X gbFrm_OldY = Y gbFrm_DefineZone = True Exit Sub End If gbAction = ActionSelect ValideSaisie End Sub
Private Sub pctpict_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Container_MouseMove pctPict, Button, Shift, X, Y End Sub
Private Sub pctpict_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) Dim I As Integer
If gbAction = ActionSelect Then For I = 1 To PictShape.UBound If (X > PictShape(I).Left And _ X < PictShape(I).Left + PictShape(I).Width And _ Y > PictShape(I).Top And _ Y < PictShape(I).Top + PictShape(I).Height) Then PictShape_MouseUp I, Button, Shift, X - PictShape(I).Left, Y - PictShape(I).Top Exit Sub End If Next I End If Container_MouseUp pctPict, lblDatas, Button, Shift, X, Y End Sub
Private Sub Container_MouseMove(Obj As Object, Button As Integer, Shift As Integer, X As Single, Y As Single) If gbFrm_DefineZone Then Obj.Line (gbFrm_X, gbFrm_Y)-(gbFrm_OldX, gbFrm_OldY), Obj.BackColor, B Obj.Line (gbFrm_X, gbFrm_Y)-(X, Y), , B gbFrm_OldX = X gbFrm_OldY = Y End If End Sub
Private Sub Container_MouseUp(Parent As Object, Obj As Object, Button As Integer, Shift As Integer, X As Single, Y As Single) Dim Left As Single Dim Top As Single Dim Width As Single Dim Height As Single Dim LFichier As String
If gbFrm_DefineZone Then Parent.Line (gbFrm_X, gbFrm_Y)-(X, Y), Parent.BackColor, B gbFrm_DefineZone = False If X > gbFrm_X Then Left = gbFrm_X Else Left = X End If If Y > gbFrm_Y Then Top = gbFrm_Y Else Top = Y End If Width = Abs(X - gbFrm_X) Height = Abs(Y - gbFrm_Y) If gbAction = ActionAddStatic _ Or gbAction = ActionAddText Then ' ajout d'un objet de type label ou text End If If gbAction = ActionAddTableau Then ' ajout d'un objet de type tableau End If If gbAction = ActionAddImage Then ' ajort d'un objet image End If If gbAction = ActionAddShape Then AddShape Left, Top, Width, Height, 0, 0, 1, 1, 0 End If ' etc ... End If ValideSaisie End Sub
la proc valide saisie permet ensuite d'indiquer les propriétés particulière de l'occurence d'objet
Comme je ne vais pas t'nevoyer le source complet d'un logiciel, je vais
essayer de t'envoyer des morceaux compréhensibles:
L'appli gère 3 fenêtres MDI:
frmCMD qui contient les outils sous forme indexées (pictures box)
frmProperty qui contient des boites de saisies et des combo qui permettent
de définir les propriétés de l'occurence de l'outil qu'on utilise
frmDefine qui est la fenêtre de design. Elle contient des objets types
indexés (depuis 0) tels que boite de siaisie, image, etc...
Le principe:
On sélectionne un outil en cliquant sur l'image correspondant dans la
fenêtre frmCMD.
on dessine un rectangle dans la fenêtre de design pour délimiter les
coordonnées et la taille pris par l'occurence d'outil qu'on utilise à l'aide
de la souris (enfoncer bouton gauche, déplacement, relachement bouton)
La fenêtre est entièrement remplie par un objet image de nom pctPict
Une fois l'objet positionné, la fenetre de propriété devient visible pour
indiquer les caratéristiques spécifiques de l'objet.
La variable gbAction définie le type d'outil qu'on est en train d'utiliser
=============== Choix de l'outil ============ Private Sub cmd_Click(Index As Integer)
gbAction = Index
cmd(OldCmd).Appearance = 0
cmd(OldCmd).BorderStyle = 0
cmd(OldCmd).BackColor = &H80000004
cmd(Index).Appearance = 1
cmd(Index).BorderStyle = 1
OldCmd = Index
Select Case Index
Case 0: frmDefine.MousePointer = vbArrow
Case 1, 2, 3, 4, 5, 6: frmDefine.MousePointer = vbCrosshair
Case Else: frmDefine.MousePointer = vbDefault
End Select
frmProperty.Hide
End Sub
========================================
=============== dessin de l'obet en cours de design ===================== Private Sub pctPict_MouseDown(Button As Integer, Shift As Integer, X As
Single, Y As Single)
Dim I As Integer
If gbAction = ActionSelect Then
For I = 1 To PictShape.UBound
If (X > PictShape(I).Left And _
X < PictShape(I).Left + PictShape(I).Width And _
Y > PictShape(I).Top And _
Y < PictShape(I).Top + PictShape(I).Height And _
PictShape(I).Visible) Then
PictShape_MouseDown I, Button, Shift, X -
PictShape(I).Left, Y - PictShape(I).Top
Exit Sub
End If
Next I
End If
If gbAction <> ActionSelect Then
gbFrm_X = X
gbFrm_Y = Y
gbFrm_OldX = X
gbFrm_OldY = Y
gbFrm_DefineZone = True
Exit Sub
End If
gbAction = ActionSelect
ValideSaisie
End Sub
Private Sub pctpict_MouseMove(Button As Integer, Shift As Integer, X As
Single, Y As Single)
Container_MouseMove pctPict, Button, Shift, X, Y
End Sub
Private Sub pctpict_MouseUp(Button As Integer, Shift As Integer, X As
Single, Y As Single)
Dim I As Integer
If gbAction = ActionSelect Then
For I = 1 To PictShape.UBound
If (X > PictShape(I).Left And _
X < PictShape(I).Left + PictShape(I).Width And _
Y > PictShape(I).Top And _
Y < PictShape(I).Top + PictShape(I).Height) Then
PictShape_MouseUp I, Button, Shift, X - PictShape(I).Left,
Y - PictShape(I).Top
Exit Sub
End If
Next I
End If
Container_MouseUp pctPict, lblDatas, Button, Shift, X, Y
End Sub
Private Sub Container_MouseMove(Obj As Object, Button As Integer, Shift As
Integer, X As Single, Y As Single)
If gbFrm_DefineZone Then
Obj.Line (gbFrm_X, gbFrm_Y)-(gbFrm_OldX, gbFrm_OldY), Obj.BackColor,
B
Obj.Line (gbFrm_X, gbFrm_Y)-(X, Y), , B
gbFrm_OldX = X
gbFrm_OldY = Y
End If
End Sub
Private Sub Container_MouseUp(Parent As Object, Obj As Object, Button As
Integer, Shift As Integer, X As Single, Y As Single)
Dim Left As Single
Dim Top As Single
Dim Width As Single
Dim Height As Single
Dim LFichier As String
If gbFrm_DefineZone Then
Parent.Line (gbFrm_X, gbFrm_Y)-(X, Y), Parent.BackColor, B
gbFrm_DefineZone = False
If X > gbFrm_X Then
Left = gbFrm_X
Else
Left = X
End If
If Y > gbFrm_Y Then
Top = gbFrm_Y
Else
Top = Y
End If
Width = Abs(X - gbFrm_X)
Height = Abs(Y - gbFrm_Y)
If gbAction = ActionAddStatic _
Or gbAction = ActionAddText Then
' ajout d'un objet de type label ou text
End If
If gbAction = ActionAddTableau Then
' ajout d'un objet de type tableau
End If
If gbAction = ActionAddImage Then
' ajort d'un objet image
End If
If gbAction = ActionAddShape Then
AddShape Left, Top, Width, Height, 0, 0, 1, 1, 0
End If
' etc ...
End If
ValideSaisie
End Sub
la proc valide saisie permet ensuite d'indiquer les propriétés particulière
de l'occurence d'objet
Comme je ne vais pas t'nevoyer le source complet d'un logiciel, je vais essayer de t'envoyer des morceaux compréhensibles:
L'appli gère 3 fenêtres MDI: frmCMD qui contient les outils sous forme indexées (pictures box) frmProperty qui contient des boites de saisies et des combo qui permettent de définir les propriétés de l'occurence de l'outil qu'on utilise frmDefine qui est la fenêtre de design. Elle contient des objets types indexés (depuis 0) tels que boite de siaisie, image, etc...
Le principe: On sélectionne un outil en cliquant sur l'image correspondant dans la fenêtre frmCMD. on dessine un rectangle dans la fenêtre de design pour délimiter les coordonnées et la taille pris par l'occurence d'outil qu'on utilise à l'aide de la souris (enfoncer bouton gauche, déplacement, relachement bouton) La fenêtre est entièrement remplie par un objet image de nom pctPict Une fois l'objet positionné, la fenetre de propriété devient visible pour indiquer les caratéristiques spécifiques de l'objet. La variable gbAction définie le type d'outil qu'on est en train d'utiliser
=============== Choix de l'outil ============ Private Sub cmd_Click(Index As Integer) gbAction = Index cmd(OldCmd).Appearance = 0 cmd(OldCmd).BorderStyle = 0 cmd(OldCmd).BackColor = &H80000004 cmd(Index).Appearance = 1 cmd(Index).BorderStyle = 1 OldCmd = Index Select Case Index Case 0: frmDefine.MousePointer = vbArrow Case 1, 2, 3, 4, 5, 6: frmDefine.MousePointer = vbCrosshair Case Else: frmDefine.MousePointer = vbDefault End Select frmProperty.Hide End Sub ======================================== =============== dessin de l'obet en cours de design ===================== Private Sub pctPict_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) Dim I As Integer
If gbAction = ActionSelect Then For I = 1 To PictShape.UBound If (X > PictShape(I).Left And _ X < PictShape(I).Left + PictShape(I).Width And _ Y > PictShape(I).Top And _ Y < PictShape(I).Top + PictShape(I).Height And _ PictShape(I).Visible) Then PictShape_MouseDown I, Button, Shift, X - PictShape(I).Left, Y - PictShape(I).Top Exit Sub End If Next I End If If gbAction <> ActionSelect Then gbFrm_X = X gbFrm_Y = Y gbFrm_OldX = X gbFrm_OldY = Y gbFrm_DefineZone = True Exit Sub End If gbAction = ActionSelect ValideSaisie End Sub
Private Sub pctpict_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Container_MouseMove pctPict, Button, Shift, X, Y End Sub
Private Sub pctpict_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) Dim I As Integer
If gbAction = ActionSelect Then For I = 1 To PictShape.UBound If (X > PictShape(I).Left And _ X < PictShape(I).Left + PictShape(I).Width And _ Y > PictShape(I).Top And _ Y < PictShape(I).Top + PictShape(I).Height) Then PictShape_MouseUp I, Button, Shift, X - PictShape(I).Left, Y - PictShape(I).Top Exit Sub End If Next I End If Container_MouseUp pctPict, lblDatas, Button, Shift, X, Y End Sub
Private Sub Container_MouseMove(Obj As Object, Button As Integer, Shift As Integer, X As Single, Y As Single) If gbFrm_DefineZone Then Obj.Line (gbFrm_X, gbFrm_Y)-(gbFrm_OldX, gbFrm_OldY), Obj.BackColor, B Obj.Line (gbFrm_X, gbFrm_Y)-(X, Y), , B gbFrm_OldX = X gbFrm_OldY = Y End If End Sub
Private Sub Container_MouseUp(Parent As Object, Obj As Object, Button As Integer, Shift As Integer, X As Single, Y As Single) Dim Left As Single Dim Top As Single Dim Width As Single Dim Height As Single Dim LFichier As String
If gbFrm_DefineZone Then Parent.Line (gbFrm_X, gbFrm_Y)-(X, Y), Parent.BackColor, B gbFrm_DefineZone = False If X > gbFrm_X Then Left = gbFrm_X Else Left = X End If If Y > gbFrm_Y Then Top = gbFrm_Y Else Top = Y End If Width = Abs(X - gbFrm_X) Height = Abs(Y - gbFrm_Y) If gbAction = ActionAddStatic _ Or gbAction = ActionAddText Then ' ajout d'un objet de type label ou text End If If gbAction = ActionAddTableau Then ' ajout d'un objet de type tableau End If If gbAction = ActionAddImage Then ' ajort d'un objet image End If If gbAction = ActionAddShape Then AddShape Left, Top, Width, Height, 0, 0, 1, 1, 0 End If ' etc ... End If ValideSaisie End Sub
la proc valide saisie permet ensuite d'indiquer les propriétés particulière de l'occurence d'objet