WIDGETS GAMBAS
LOGICIELS GAMBAS 3
TUTORIELS
VISITES

   visiteurs

   visiteurs en ligne

Où ça, qui ça?
PICTUREBOX - Drag and Drop d'une image
Un drag and Drop d'une image
electric.jpg

Aujourd'hui, nous allons étudier plus en détail la fonction DRAG and DROP d'une image de GAMBAS.
nous allons creer une petite application avec une feuille Fmain, une Drawarea1 et une picturebox.
L'idée sera de pouvoir déplacer notre image n'importe ou sur la feuille.

creeons un projet et nommez le drag_easy
Les propriétés de Fmain sont :
Maximized = TRUE

creeons une drawarea1
les proprietes sont :
drawarea1.X = 0
drawarea.y = 0

creeons la fonction Fmain_resize()
et ecrivons ce code :

PUBLIC SUB Fmain_resize()
drawarea1.height = ME.height
drawarea1.width = ME.width
END

nous demandons lors d'une "Maximisation" soit agrandissement de la fenêtre de redimensionner la drawarea1 a son maximum par la commande : drawarea1.height = ME.height en verticale et drawarea1.width = ME.width en horizontale.

maintenant dans la drawarea1 creeons une pictureBox1 et insserons y une image (l'image de l'exemple)

tout est prêt  !

realisons notre DRAG and DROP :

PREMIERE ETAPE "LE DRAG"

le drag va être réalisé lorsque nous cliquerons sur la picturebox et que nous la bougerons.
donc voici la fonction :
PUBLIC SUB PictureBox1_mousedrag()


IF Mouse.Left THEN
    Drag.Icon = LAST.Picture
    LAST.Drag(LAST.Picture.Image)

  ENDIF

END

decortiquons le code :

IF Mouse.Left THEN est une boucle de test qui veut dire La souris prendra l'objet à déplacer à gauche.
N'essayez pas mouse.right ou mouse.middle cela ne marche pas.
nous dirons que c'est une phrase a ajouter systematiquement pour faire un drag.

Drag.Icon = LAST.Picture veut dire simplement que l'icone au moment du deplacement sera l'objet déplacé.
pour essayer mettez cette phrase en commentaire, et vous verrez qu'au  moment du déplacement, le curseur reste ...une simple fleche !

LAST.Drag(LAST.Picture.Image)
voila la fonction DRAG par excellence, c'est ce bout de code qui autorise le deplacement de l'objet
cela veut dire "le dernier Drag(deplacement) était une image à déplacer"

endif on sort de la boucle

entre Endif et END nous pourrions ajouter une boite à message du style :
message.info("j'ai déplacé l'élément!")
et nous verrons qu'à la fin du DRAG au moment du relachement de la souris la fenêtre s'affiche.

DEUXIEME ETAPE LE DROP

dans notre exemple qui va recevoir le DROP ? c'est notre drawarea1
N'oublions pas au début nous voulions déplacer une picturebox1 dans toute la drawarea1

Mettons dans la propriété "DROP" de la Drawarea1 à TRUE

Maintenant creeons une fonction qui va recevoir le DROP :

PUBLIC SUB DrawingArea1_Drop()
PictureBox3.X = Drag.X
PictureBox3.Y = Drag.Y

END

Décortiquons le code

PictureBox3.X = Drag.X
nous demandons simplement d'ajuster les coordonnées de la picturebox1 en X à la valeur de la fin du DRAG
PictureBox3.Y = Drag.Y
Idem pour la verticale avec Y

Sur vb a la firme Redmond, au moment du DRAG la picturebox1 originale disparait, suit le curseur et apparait au Drop. Nous pouvons faire pareil.
Dans la fonction DRAG precedente nous ajoutons simplement :
PictureBox1.Visible = FALSE

voyons le code entier :
PUBLIC SUB PictureBox1_MouseDrag()
IF Mouse.Left THEN
Drag.Icon = LAST.Picture
PictureBox1.Visible = FALSE
LAST.Drag(LAST.Picture.Image)
ENDIF
PictureBox3.Visible = TRUE
END

CONCLUSION :
un drag and drop a trois etapes essentielles:
une fonction "mousedrag" de l'emetteur du DRAG avec la boucle IF Mouse.Left THEN...ENDIF
la propriété du récepteur DROP est à "TRUE"
une fonction DROP du récepteur qui reçoit le drag (coordonnées,image,texte,etc...)

Voici les sources de cet exemple.
Bonne journee à tous.










Date de création : 06/05/2009 @ 15:14
Dernière modification : 13/05/2009 @ 14:12
Catégorie : PICTUREBOX
Page lue 3619 fois


Imprimer l'article Imprimer l'article


react.gifRéactions à cet article

Personne n'a encore laissé de commentaire.
Soyez donc le premier !


ACCES RAPIDE
RECHERCHE




LOGICIELS GAMBAS 2
LES INSTRUCTIONS
LES COMPOSANTS
Divers

^ Haut ^