Contrôle déplaçable par l'utilisateur [VB6] ?

[Résolu]
Signaler
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
-
Messages postés
3172
Date d'inscription
dimanche 15 février 2004
Statut
Membre
Dernière intervention
9 avril 2017
-
Salut,

malgrè mes recherches (ici, google, autres sites et AllApi) je ne trouve pas de propriété permettant, pendantl'exécution d'une Form, le déplacement d'une ligne ou d'un label PAR l'utilisateur.

Est ce faisable ? Y-a-t'il une fonction d'Api le permettant ?
Faut-il tricher avec la position + clic de la souris ?

Merci pour vos messages !

@++

<hr width="100%" size="2" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
/DIV>

10 réponses

Messages postés
3172
Date d'inscription
dimanche 15 février 2004
Statut
Membre
Dernière intervention
9 avril 2017
35
Salut,

Pour une label rien de plus simple :



Dim PtX AsSingle, PtY AsSingle
PrivateSub TaLabel_MouseDown(Button AsInteger, Shift AsInteger, X AsSingle, Y AsSingle)  If Button 1 Then PtX X: PtY = Y
EndSub
PrivateSub TaLabel_MouseMove(Button AsInteger, Shift AsInteger, X AsSingle, Y AsSingle)
  If Button = 1 ThenWith TaLabel: .Move .Left + X - PtX, .Top + Y - PtY: EndWith
EndSub,

----

(Coloration syntaxique automatique par Kenji)



Pour une line, ca peut rester faisable mais un peu plus dur.
Il faut d'abord savoir si l'utilisateur à cliqué sur la ligne, récupéré la posision du clique et après c'est comme le code précédent.




__________________

Kenji
 
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
126
Je ne pense pas que ce soit réalisable directement (ca serait trop facile ;p ) Et surtout, je ne vois pas trop l'intérêt d'avoir développer des API pour faire cela puisque les API facilite la programmation avant tout, et non l'utilisation des contrôles par l'utilisateur !

Il faut passer par un bon vieux code : tu clique sur le contrôle pour le sélectionner, puis tu le déplace, et enfin tu clique n'importe où pour le déselectionner, tout ca pas code bien entendu.
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
Oui, merci DarkSidious pour cette précision.
Je suis en train de voir ça avec un Label, et je souhaite que le déplacement du Label soit visible en temps réel !

"je ne vois pas trop l'intérêt d'avoir développer des API pour faire cela puisque les API facilite la programmation avant tout, et non l'utilisation des contrôles par l'utilisateur "
>>  Beh ça m'aurait facilité la programmation 

Si je trouve une solution correcte, je posterai la réponse. Merci de tes indications.

@++

<hr width="100%" size="2" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
/DIV>
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
26
Il est possible de faire un drag and drop sur un label.
Il en va différemment avec un contrôle Line, à moins, bien sur, de le mettre dans un container (Frame, par exemple) et de faire le drag and drop du container...


Reste la possibilité de stocker en mémoire la position(X1,Y1  -  X2,Y2)  du contrôle line et de s'en servir pour faire des comparaisons avec les X et Y d'une mouseDown sur la form et décider alors (si concordances à définir) d'instructions de modification des coordonnées X1,Y1,X2 et Y2 du contrôle line. Tout ceci me parait cher payer...
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
Salut Kenji,

merci pour ta réponse, ça fait 2 heures que je suis dessus avec les Apis GetKeyState et GetCursorPos et j'éprouvais une dernière difficulté : le rapport twip et pixel, car mon code ne fonctionne bien que lorsque la Form est en plein écran.

Conclusion, je vais prendre ta solution qui est parfaite. Encore Merci (et merci aussi à jmfmarques).

Je donne le but : je mets 2 webbrowser sur une Form, le premier sur toute la largeur de la Form et sur les 3/4 de la hauteur, le quart restant est pour le webbrowser2.
Ce Label sépare les deux, et je souhaitais que l'utilisateur est la possibilité de modifier la taille des 2 webbrowser en modifiant le placement de ce Label, déterminant la valeur Width du premier webbrowser et la valeur Top du second.

@++

<hr width="100%" size="2" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
/DIV>
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
Arff Mortalino, tu aurais dû faire ça en .NET

Tu as le controle Splitter qui te fais ça tout seul. Rien à faire, tu pose le splitter sur la feuille, tes controles de chaque coté du splitter.
A l'éxecution, tu bouge le splitter, les controles sont automatiquement redimensionnés, même pas de code à écrire.

---- Sevyc64  (alias Casy) ---- # LE PARTAGE EST NOTRE FORCE #
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
Salut Casy,

Beh je le saurai (dotnet pour plus tard), je ne connaissais pas ce nom (splitter) mais c'était à l'origine ce genre de contrôle que je cherchais.

Heureusement que je peux faire autrement, en plus le code de Kenji est moins lourd que le mien.
Encore 3 ou 4 adaptations, et c'est parti...

@++

<hr width="100%" size="2" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
/DIV>
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
Kenji,

juste une précision, pourquoi ton code fonctionne parfaitement en vba (le Label bouge en direct) alors qu'en vb6, il faut attendre de relacher le bouton pour voir le placement s'opérer ??

@++

<hr width="100%" size="2" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
/DIV>
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
Excuse Kenji, en vb6, je me suis planté, j'étais dans l'évènement MouseUp
Corrigé et c'est nickel 

@++

<hr width="100%" size="2" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
/DIV>
Messages postés
3172
Date d'inscription
dimanche 15 février 2004
Statut
Membre
Dernière intervention
9 avril 2017
35
héhé ,
de rien.




__________________

Kenji