IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

[VB6] DragDrop avec affichage de l'image durant son deplacement


Sujet :

VB 6 et antérieur

  1. #1
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 132
    Par défaut [VB6] DragDrop avec affichage de l'image durant son deplacement
    J'utilise une façon de faire du DragDrop un peu special, car j'ai besoin que l'on voit l'image pendant son deplacement,
    Mon probleme se situe lors du passage d'un conteneur à un autre, un effet de traces apparait durant le temps du passage de l'un à l'autre, est-il possible d'ameliorer ?
    Existe-t-il une façon plus simple de faire du DragDrop avec affichage de l'image durant son deplacement?
    J'ai cherché sur plusieurs forums mais, ou j'ai mal formulé ma demande d'infos ou la chose n'est pas possible sous VB6

    Pour faire les essais si ca dit à quelqu'un,
    sur une Form, mettre 2 PictureBox portant le même nom PictContenaire, indexé 0 et 1
    sur l'une des deux y mettre 2 autres PictureBox portant le même nom PictDrag, indexé 0 et 1

    La partie '' Form_Load() '' n'est pas necessaire si tout est parametré lors de la construction du projet.
    Le code est un peu long, j'ai essayer de mettre des commentaires utiles, il peut etre copié-Collé.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    Option Explicit
    Dim NewLeft, NewTop As Integer ' pour calculer les nouvelles coordonnées
    Dim DemiH, DemiL As Integer ' pour memoriser la demi hauteur et la demi largeur
    Dim IndexContenaire As Integer ' pour memoriser le PictContenaire actif
     
    Private Sub Form_Load()
    'si non initialisé lors de la conception du projet, DEREMER toutes les ligne suivantes
    'Me.ScaleMode = vbTwips
    'PictDrag(0).ScaleMode = vbTwips: PictDrag(1).ScaleMode = vbTwips
    'PictContenaire(0).ScaleMode = vbTwips: PictContenaire(1).ScaleMode = vbTwips
    'PictDrag(0).Appearance = 0: PictDrag(1).Appearance = 0
    'PictContenaire(0).Appearance = 0: PictContenaire(1).Appearance = 0
    'Me.Height = 8805: Me.Width = 6735: Me.Top = 0: Me.Left = 0
    'PictContenaire(0).Left = 60: PictContenaire(1).Left = 60
    'PictContenaire(0).Width = 6495: PictContenaire(1).Width = 6495
    'PictContenaire(0).Height = 2925: PictContenaire(1).Height = 5025
    'PictContenaire(0).Top = 60: PictContenaire(1).Top = 3300
    'PictDrag(0).AutoSize = True: PictDrag(1).AutoSize = True
     
    'chargement de 2 petites images (adapter le chemin ou se trouvent ces images)
    'elles doivent etre plus petites que le plus petit des conteneurs
    PictDrag(0).Picture = LoadPicture("C:\PersoFrancis\MoyenPersonage2.bmp")
    PictDrag(1).Picture = LoadPicture("C:\PersoFrancis\PetitPersonage1.bmp")
    End Sub
     
    Private Sub PictDrag_MouseDown(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
    'memorisation des divers elements utiles
    DemiH = Int(PictDrag(Index).Height / 2)
    DemiL = Int(PictDrag(Index).Width / 2)
    IndexContenaire = PictContenaire(PictDrag(Index).Container.Index)
    PictDrag(Index).ZOrder 'mise au premier plan
    End Sub
     
    Private Sub PictDrag_MouseMove(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
    If Button = 1 Then
     'objet conteneur en TWIPS
     NewLeft = Int((PictDrag(Index).Left + X) - DemiL)
     NewTop = Int((PictDrag(Index).Top + Y) - DemiH)
     
     PictDrag(Index).Move NewLeft, NewTop
     'PictDrag(Index).Refresh '(suivant les performances de l'ordi)
     'passage d'un contenaire à un autre
     If PictDrag(Index).Top > PictContenaire(IndexContenaire).Height - DemiH Then
      IndexContenaire = 1
      Set PictDrag(Index).Container = PictContenaire(IndexContenaire)
     End If
     If PictDrag(Index).Top < -DemiH Then
      IndexContenaire = 0
      Set PictDrag(Index).Container = PictContenaire(IndexContenaire)
     End If
     'PictContenaire(IndexContenaire).Refresh'(suivant les performances de l'ordi)
    End If
    End Sub
    Private Sub PictDrag_MouseUp(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
    If Button = 1 Then
     'l'affichage du PictDrag doit etre completement dans le PictContenaire
     'donc verification
     If PictDrag(Index).Left < 1 Then NewLeft = 0
     If PictDrag(Index).Left > PictContenaire(IndexContenaire).Width - PictDrag(Index).Width Then
      NewLeft = PictContenaire(IndexContenaire).Width - PictDrag(Index).Width
     End If
     If PictDrag(Index).Top < 1 Then NewTop = 0
     If PictDrag(Index).Top > PictContenaire(IndexContenaire).Height - PictDrag(Index).Height Then
      NewTop = PictContenaire(IndexContenaire).Height - PictDrag(Index).Height
     End If
     PictDrag(Index).Move NewLeft, NewTop
    End If
    End Sub
    En attendant une eventuelle sujestion, merci d'avoir parcourut ce post.

    ProgElecT
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  2. #2
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Par défaut
    Cherche un tout petit peu (pas loin).
    J'ai donné la réponse à Lucas il y a moins d'une semaine !

  3. #3
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 132
    Par défaut
    Merci jmfmarques pour la prise en compte de ma question.

    J'ai parcouru les posts de Lucas et les reponses sujerées, en remontants 4semaines.
    je dois commencer à me faire vieux, je n'ai pas trouvé la reponse attendu.

    Une petite aide sur le post contenant la reponse ou indication qui devrait m'interesser !!!
    Je tient absolumant a que le DragDrop permet l'affichage de l'image durant son deplacement.
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  4. #4
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Par défaut
    Tu n'as pas bien cherché, hein ?
    Bon j'y vais !
    Ne touches rien en attendant...
    et çà, cest quoi ?
    http://www.developpez.net/forums/sho...61&postcount=9
    où il suffit de remplacer le bouton de commande par une picturebox

    mais... attends encore ...
    Et ceci, qui va encore plus loin, c'est quoi ? de la guimauve ?

    http://www.developpez.net/forums/sho...d.php?t=156511

    Et l'intéressé, pourtant, c'est toi !....

  5. #5
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 132
    Par défaut
    j'ai trouvé le post signalé par jmfmarques: Deplacer un objet sur une form en mode Exploitation de Lucas42.

    Le probleme que je n'arrive pas à resoudre est l'effet de traces entre le passage d'un conteneur à l'autre.
    Les quelques lignes de code fourni font parti d'un programme d'optimisation de decoupe sur 2 surfaces, le passage de l'une
    à l'autre sont absolument necessaire ( le prog compilé fait plus de 700 K).
    Je ne peu modifier la disposition de ces surfaces, les utilisateurs seraient trop perturbés, et cela me demanderait pas mal de boulot ( l'ergonomie, qui satisfait maintenant, a ete longue a mettre en place et a convenir a chaqu'un).
    J'esperrai qu'une petite astuce génial me tirerai d'affaire.
    Je vais surveiller pendant une petite semaine ce post, puis je le fermerai si aucune solution au petit probleme ne trouve pas de solution.
    D'ailleurs c'est que pour la beauté du visu et ne dur que le temps du passage du contenaire à l'autre.

    Merci encor.

    ProgElecT
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  6. #6
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Par défaut
    Tu rigoles ?
    Aucune trace (prends le code jmf et pas celui de Lucas, pardi !)
    Attends !
    D'un container à l'autre ? C'est peut-être différent , en effet !
    Laisse-mopi y réfléchir !

  7. #7
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 132
    Par défaut
    Tu rigoles ?
    Non mais cela n'est pas grave.
    J'ai bien pris ton code, mais c'est le passage du contenaire à l'autre qui pose probleme.
    C'est pas grave, je viens de regarder les premieres sources de mon programme,
    il date de plus de 3 ans, le temps passe !!!

    Merci encor pour l'interet apporté à ce petit post.

    ProgElecT
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  8. #8
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Par défaut
    Tout vu et tour réfléchi : tu ne peux faire celà avec image continue.... ce serait en effet du "drag, jump and drop !"
    Seule façon : mettre en mémoire tampon et lâcher dans l'autre container ! Mais alors : pas de "cheminement" de l'image entre un container et l'autre, sauf à passer par de nombreuses Apis de Windows pour, chaque fois, "transporter" visuellement l'image ....
    Que connais-tu des Apis, donc, avant de continuer (tu sais que je n'aime pas l'application de "soluces" sans les cerner totalement !...)
    Si tu réponds "suffisamment", je te donne les éléments essentiels sans le code....
    Si tu réponds "pas vraiment connues de moi", j'arrête bien évidemment là !

  9. #9
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 132
    Par défaut
    Pour les APIs, pas grand chose, mis a part que je les utilise de plus en plus depuis que j'ai decouvers ce forum.
    D'ailleurs, s'est moi qui me pose ce probleme d'estetisme, les utilisateur du programme ne me l'on même pas fait remarqué, mais je m'en fait un petit defit et de temps en temps je me remet à rechercher de mon coté, avec l'aide sympa des copains. bien sur !!!
    Sur ce, je vais passer à autre chose, defois lacher un probleme permet d'entrvoire une solution.

    Bonsoir.

    ProgElecT
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  10. #10
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Par défaut
    Cette décision est très sage ! il aurait fallu gérer, à un moment ou à l'autre, et en continuité, l'affichage d'un morceau encore dans le container de départ alors que l'autre était déja à afficher ailleurs, sur la form, par exemple ! et idem pou ce qui était de la rentrée dans le container suivant ... En résumé : beaucoup d'acrobaties et de calculs, à chaque petit mouvement de la souris... En es-tu conscient ?

  11. #11
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Par défaut
    Ceci étant dit, tu peux utiliser un subterfuge, sans APIs...
    Piste : une picturebox hors de chacun des 2 containers, puis positionnée (chacune) au dessus du container...
    A toi de jouer (ce n'est plus de l'informatique, ni de la syntaxe, mais un cheminement de la pensée).... montre-moi cette capacité à dérouler celle pensée .... (j'ai "construit" la mienne à l'instant)

  12. #12
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Par défaut
    Bon !
    Je te signale que je viens de mettre en application ce que j'ai exposé plus haut pour ce "drag jump and drop", sans aucune syntaxe autre qu'élémentaire et que tu ne connaisses déjà parfaitement.
    Uniquement en organisant la pensée.
    Le tout marche parfaitement en sans "trainées"
    A toi maintenant ...
    Au moins en algo...(c'est d'ailleurs par ce geste que j'ai commencé)

    Tiens ! A propos d'algo et puisque Bujuman affirmait dans un autre sujet que "VB étant proche du langage humain il n'était pas nécessaire de faire un algo"... :
    Quand mon code sera ici, je l'inviterai à faire un algo à partir de ce petit code, sans y passer plus de 12 heures (alors qu'il ne m'a fallu que 1 heure en tout, en commençant par l'algo)... Il constatera à quel point ce que je voulais lui faire comprendre est exact et à ce point évident qu'il serait déplacé d'ouvrir un débat sur ce thème

  13. #13
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 132
    Par défaut
    Merci pour l'interet porté a mon post.
    J'ai fini par ecrire ce code en m'inspirant des conseils et des sujestions qui mon ete faite.
    En voici le code, un peu long, a savoir que dans la picturebox nommé 'PictDragDrop' j'ai mis un Shape nommé 'ShapeSelect' de 225 twips en cercle, il simule un voyant.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    Option Explicit
    Dim NewLeft, NewTop As Integer ' pour calculer les nouvelles coordonnées
    Dim DemiH As Integer ' pour memoriser la demi hauteur(utile pour le calcul du basculement entre les 2 contenaires)
    Dim IndexContenaire As Integer ' pour memoriser le PictContenaire actif
    Dim IndexDrag As Integer ' pour memoriser le PictDrag actif
    Dim PointBascule As Integer ' pour le passage d'un conteneur à l'autre
    Dim LimiteGauche, LimiteDroite, LimiteHaut, LimiteBas As Integer 'limite des conteneurs
    Dim MemoX, MemoY As Integer
    Private Sub Form_Load()
    'chargement de 3 petites images (adapter le chemin ou se trouvent ces images)
    'elles doivent être plus petites que le plus petit des conteneurs
    'PictDrag(0).Picture = LoadPicture("C:\PersoFrancis\MoyenPersonage2.bmp")
    'PictDrag(1).Picture = LoadPicture("C:\PersoFrancis\PetitPersonage1.bmp")
    'PictDrag(2).Picture = LoadPicture("C:\PersoFrancis\MoyenPersonage3.jpg")
    PointBascule = PictContenaire(1).Top - (PictContenaire(0).Top + PictContenaire(0).Height)
    PointBascule = Int(PointBascule / 2)
    PointBascule = PointBascule + PictContenaire(0).Top + PictContenaire(0).Height
    IndexDrag = -1
    End Sub
     
    Private Sub PictContenaire_Click(Index As Integer)
    'pour etre sur que le dernier objet bougé soit visible
    If IndexDrag <> -1 Then
     PictDrag(IndexDrag).Visible = True: PictDragDrop.Visible = False
     IndexDrag = -1
    End If
    End Sub
     
    Private Sub PictDrag_MouseDown(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
    If Button = 1 And Shift = 0 Then
     'pour etre sur que le dernier objet bougé soit visible
     If IndexDrag <> -1 Then PictDrag(IndexDrag).Visible = True
     'memorisation des divers elements utiles
     IndexContenaire = PictDrag(Index).Container.Index
     IndexDrag = Index
     PictDragDrop.Picture = PictDrag(IndexDrag).Image 'charge l'image de l'objet a deplacer
     DemiH = Int(PictDrag(Index).Height / 2)
     LimiteGauche = PictContenaire(0).Left
     LimiteDroite = (PictContenaire(IndexContenaire).Left + PictContenaire(IndexContenaire).Width)
     LimiteDroite = (LimiteDroite - PictDrag(IndexDrag).Width) + ScaleX(X, 1, 3)
     LimiteHaut = PictContenaire(0).Top
     LimiteBas = (PictContenaire(1).Top + PictContenaire(1).Height) - PictDrag(IndexDrag).Height
     NewLeft = PictContenaire(IndexContenaire).Left + PictDrag(IndexDrag).Left + 15
     NewTop = PictContenaire(IndexContenaire).Top + PictDrag(IndexDrag).Top + 15
     PictDragDrop.Move NewLeft, NewTop
     PictDragDrop.ToolTipText = "un nouveau click pour me bouger"
     PictDrag(IndexDrag).Visible = False
     PictDragDrop.Visible = True
    End If
    End Sub
     
    Private Sub PictDragDrop_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    If Button = 1 Then
     ShapeSelect.FillColor = &HFF00&: PictDragDrop.ToolTipText = ""
     MemoX = ScaleX(X, 1, 3): MemoY = ScaleY(Y, 1, 3)
    End If
    End Sub
     
    Private Sub PictDragDrop_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) '
    If Button = 1 Then
     NewLeft = Int((PictDragDrop.Left + ScaleX(X, 1, 3)) - MemoX)
     NewTop = Int((PictDragDrop.Top + ScaleY(Y, 1, 3)) - MemoY)
     'l'un des contenaires pouvant etre de largeur differant
     'ajustage de la limite droite
     If NewTop > PointBascule Then 'a faire
      LimiteDroite = (PictContenaire(1).Left + PictContenaire(1).Width) - PictDrag(IndexDrag).Width
      Else
      LimiteDroite = (PictContenaire(0).Left + PictContenaire(0).Width) - PictDrag(IndexDrag).Width
     End If
     'verification du non depacement des contenaires
     If NewLeft < LimiteGauche Then NewLeft = LimiteGauche 'pour coté gauche
     If NewLeft > LimiteDroite Then NewLeft = LimiteDroite 'pour coté gauche
     If NewTop < LimiteHaut Then NewTop = LimiteHaut 'pour le haute
     If NewTop > LimiteBas Then NewTop = LimiteBas 'pour le bas
     PictDragDrop.Move NewLeft, NewTop
    End If
    End Sub
    Private Sub PictDragDrop_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
    If Button = 1 Then
     NewLeft = PictDragDrop.Left - PictContenaire(IndexContenaire).Left - 15
     If (PictDragDrop.Top + ScaleX(X, 1, 3)) + DemiH > PointBascule Then
      IndexContenaire = 1
      Set PictDrag(IndexDrag).Container = PictContenaire(IndexContenaire)
      NewTop = PictDragDrop.Top - (PictContenaire(0).Top + PictContenaire(0).Height)
      NewTop = NewTop - (PictContenaire(1).Top - (PictContenaire(0).Top + PictContenaire(0).Height)) - 15
      Else
      IndexContenaire = 0
      Set PictDrag(IndexDrag).Container = PictContenaire(IndexContenaire)
      NewTop = PictDragDrop.Top - PictContenaire(IndexContenaire).Top - 15
     End If
     'l'affichage du PictDrag doit etre completement dans le PictContenaire
     'donc verification et modification eventuelle
     If NewLeft < -1 Then NewLeft = -15
     If NewLeft > PictContenaire(IndexContenaire).Width - PictDrag(IndexDrag).Width Then
      NewLeft = PictContenaire(IndexContenaire).Width - PictDrag(IndexDrag).Width - 15
     End If
     If NewTop < -1 Then NewTop = -15
     If NewTop = 0 Then NewTop = -15
     If NewTop > PictContenaire(IndexContenaire).Height - PictDrag(IndexDrag).Height Then
      NewTop = PictContenaire(IndexContenaire).Height - PictDrag(IndexDrag).Height - 15
     End If
     PictDrag(IndexDrag).Move NewLeft, NewTop
     PictDragDrop.Visible = False
     PictDrag(IndexDrag).Visible = True
     ShapeSelect.FillColor = &HFF&
    End If
    End Sub
    Domage que je ne parvien pas à joindre le fichier .zip du projet, cela serait plus explicite.
    En tous cas cela fonctionne tres bien et pour moi je vais taguer comme resolut.

    ProgElecT
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  14. #14
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Par défaut
    OK, progelect, tu as travaillé... alors... je te passe bien volontiers ce que j'ai fait et qui te permet :
    - de passer réellement une picturebox d'un container (ici un Frame) à l'autre
    - de passer "en sens inverse", la picture box du 2ème container au 1er
    - de tester qu'il s'agit bien d'une insertion dans un nouveau container (bouton preuve disponible après drad jump and drop
    - d'avoir le tout dans un module pour l'utiliser par appel facile pour plusieurs pictureboxes éventuellement.

    Méthode :
    1) double clic sur la picturebox à faire glisser
    2) avec le bouton gauche : faire glisser entièrement dans le nouveau container et lâcher

    Si le lacher n'est pas fait là où il faut : effet élastique (retour de la picturebox à sa place d'origine

    Bien sur : glissement ensuite autosisé (par le même module) du cadre2 vers le cadre1

    On y va ?
    Voilà le zip :

    On va laisser le soin à Bujuman de nous montrer s'il est capable, en moins de 12 heures, de faire l'algo clair et compréhensible de ce que j'ai écrit là !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Effet survol d'un lien avec affichage d'une image
    Par apt dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 07/05/2011, 15h31
  2. affichage d'une image avec les servlets
    Par hassanovich dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 03/11/2006, 10h35
  3. Réponses: 3
    Dernier message: 01/06/2006, 19h45
  4. [GD] Problème d'affichage d'une image avec gd2
    Par turini dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 04/10/2005, 11h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo