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

Résolu
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 - 5 nov. 2006 à 09:07
 Utilisateur anonyme - 5 nov. 2006 à 14:27
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

Utilisateur anonyme
5 nov. 2006 à 11:29
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
 
3
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
5 nov. 2006 à 10:05
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.
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
5 nov. 2006 à 10:11
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>
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
5 nov. 2006 à 11:10
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...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
5 nov. 2006 à 11:45
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>
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
5 nov. 2006 à 11:57
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 #
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
5 nov. 2006 à 12:09
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>
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
5 nov. 2006 à 12:19
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>
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
5 nov. 2006 à 12:25
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>
0
Utilisateur anonyme
5 nov. 2006 à 14:27
héhé ,
de rien.




__________________

Kenji 
0
Rejoignez-nous