begin process at 2012 02 15 04:47:33
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Visual Basic & VB.NET

 > 

Archives Visual Basic

 > 

Graphique

 > 

demande d'aide sur le controle shape


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

demande d'aide sur le controle shape

samedi 13 août 2005 à 13:58:58 | demande d'aide sur le controle shape

jalil_msti

 est ce que qlq un peut me dire comment redimmensionner un contrôle shape au cours de l'exéxution du programme en utilisant la souris. merci d'avance.
samedi 13 août 2005 à 14:09:11 | Re : demande d'aide sur le controle shape

DARKSIDIOUS

Membre Club Administrateur CodeS-SourceS
Merci de ne pas ouvrir un nouveau post à chaque réponses qui te conviennent pas...

Comme l'a dit Gobillot, il faut utiliser les propriétés Width et Height.

Maintenant, si tu veux le redimensionner à la souris, et bien il te faut récupèrer les coordonnées de la souris dans le MouseDown, et redimensionner ton contrôle dans le MouseMove à partir des coordonnées récupèrée dans le MouseDown.

Dis comme cà, ca à l'air simple, mais le problème que tu va rencontrer, c'est pour le MouseMove si des contrôles sont sur ta feuille, donc voici ce que je te conseille : utiliser la fonction de l'API Windows SetCapture lors d'un click sur ton shape qui permettra de rediriger les message de la souris vers la feuille contenant le shape, et tu n'aura plus qu'à utiliser les événements MouseDown et MouseMove pour le redimensionner.
Par contre, n'oublie pas de libérer les messages de la souris pas un appel à la fonction de l'API Windows ReleaseCapture dans le MouseUp de ta feuille après !

DarK Sidious

Un API Viewer (pour le VB, VB.NET, C, C# et Delphi) : www.ProgOtoP.com/popapi/
samedi 13 août 2005 à 14:47:47 | Re : demande d'aide sur le controle shape

jpleroisse

Bonjour,

Peut-être les APIS dont parle Dark Sidious, pourront t'aider, sinon, il n'est pas possible de redimentionner un contrôle Shape pendant l'exécution d'un programme. Tous simplement parce que ce contrôle ne gère aucun évènement. (Place un contrôle Shape sur ta Form, DlClick dessus et tu verras qu'il n'apparaît pas dans le module de la Form).

jpleroisse

samedi 13 août 2005 à 16:04:14 | Re : demande d'aide sur le controle shape

CanisLupus

Membre Club Administrateur CodeS-SourceS

Salut,
Un tit exemple en vb6 bricolé en 10 minutes, sans api, mais un peu tiré par les cheveux. Il ne te permet que de redimensionner en largeur à partir du côté droit. Je te laisses faire pour le reste.
Utilisation : tu cliques sur le côté droit de la shape (en maintenant le bouton enfoncé et tu tires vers la droite ou la gauche. Quand tu relâches, ta shape a une nouvelle largeur.

Dans une form avec une shape :

Dim test1 As Boolean
Dim test2 As Boolean

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
  test2 = test1
End Sub

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
   'le +25 c'est pour compenser l'imprécision du click souris
  If X >= Shape1.Left + Shape1.Width - 25 And X <= Shape1.Left + Shape1.Width + 25 Then
    test1 = True
  Else
    test1 = False
  End If
End Sub

Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
  If test2 = True Then
    Shape1.Width = X - Shape1.Left
    test2 = False
  End If
End Sub

Bon courage

-------------------------------------------------
Dresseur de puces, .... normal pour un loup  !?

samedi 13 août 2005 à 19:47:34 | Re : demande d'aide sur le controle shape

DARKSIDIOUS

Membre Club Administrateur CodeS-SourceS
canislupus : ton code ne fonctionne pas (à tester tout de même), si un bouton par exemple se trouve sous la souris lors de l'étirement du shape, d'où l'utilisation des API !

DarK Sidious

Un API Viewer (pour le VB, VB.NET, C, C# et Delphi) : www.ProgOtoP.com/popapi/
samedi 13 août 2005 à 20:13:08 | Re : demande d'aide sur le controle shape

Gobillot

je confirme, c'est le controle qui se trouve sous la souris qui va reprendre la main
à moins de mettre un ReleaseCapture à chaque controle ce qui risque d'être lourd s'il y a beaucoup de controles
une autre solution c'est d'aller chercher la position de la souris dans un Timer avec GetCursorPos et de regarder si le curseur est bien dans la Shape.


Daniel
samedi 13 août 2005 à 20:41:22 | Re : demande d'aide sur le controle shape

Gobillot

exemple pour une PictureBox:
redimentionnement sur 2 côtés et déplacement
c'est loin d'être parfait, faut être patient et aller très doucement.
pour la Shape faudra adapter

Option Explicit

Dim XX      As Long
Dim YY      As Long
Dim Pointer As Long
Dim X1      As Long
Dim Y1      As Long
Dim Curs5   As Boolean
Dim d   As Long
Dim dx  As Long
Dim dy  As Long

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    Pointer = 0
    Picture1.BorderStyle = 0
End Sub

Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
   'nouveau
    If Curs5 = True Then
       Curs5 = False
       Else
       Curs5 = True
       X1 = X
       Y1 = Y
       End If
End Sub

Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)

    If Button <> 1 Then
      
       Pointer = 0:
      'nouveau
       Picture1.BorderStyle = 1
       If X > Picture1.Width - 150 Then
          XX = X - 15: Pointer = 9
          End If
       If Y > Picture1.Height - 150 Then
          YY = Y - 15: If Pointer = 0 Then Pointer = 7 Else Pointer = 8
          End If
      
       Else
      
         If Pointer = 9 Or Pointer = 8 Then
            dx = X - XX: Text1 = dx
            d = Picture1.Width + X - XX
            If d > 300 And d < Me.ScaleWidth Then
               Picture1.Width = d: XX = X
               End If
            End If
       
         If Pointer = 7 Or Pointer = 8 Then
            dy = Y - YY: Text2 = dy
            d = Picture1.Height + Y - YY
            If d > 300 And d < Me.ScaleHeight Then
               Picture1.Height = d: YY = Y
               End If
            End If
         
        'Déplacement
         If Curs5 And Pointer = 0 Then
            Picture1.Top = Picture1.Top + Y - Y1
            Picture1.Left = Picture1.Left + X - X1
            End If
      
       End If
      
    Picture1.MousePointer = Pointer

End Sub

Private Sub Picture1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
    Pointer = 0
    Picture1.MousePointer = 0
    Curs5 = False
End Sub


Daniel
samedi 13 août 2005 à 21:00:50 | Re : demande d'aide sur le controle shape

DARKSIDIOUS

Membre Club Administrateur CodeS-SourceS
Non, si on fait un SetCapture dans le MouseDown, et un ReleaseCapture dans le MouseUp, il n'y a plus de problème de contrôle survollé.

Il suffit donc de rajouter dans le code de daniel :
Dans le MouseDown :
Call SetCapture(Me.Hwnd)

Dans le MouseUp :
Call ReleaseCapture

DarK Sidious

Un API Viewer (pour le VB, VB.NET, C, C# et Delphi) : www.ProgOtoP.com/popapi/
samedi 13 août 2005 à 21:20:17 | Re : demande d'aide sur le controle shape

CanisLupus

Membre Club Administrateur CodeS-SourceS
OK avec vos critiques Dark Sidious et Daniel mais je répète, mon exemple est un truc bricolé.
Juste pour dire que c'est possible mais évidemment, ça ne marche à coup sùr que si la form ne contient QUE SEULEMENT UNE SHAPE (encore qu'il faudrait tester aussi les width et height de la form). 
Dans le cas ou d'autres controles existent sur la form, il faudra les gérer aussi et ça, c'est pas impossible mais c'est pas gagné.
Franchement, c'est seulement une piste et, personnellement, je ne me ressens pas de développer un truc comme ça, à moins que j'y soit obligé. C'est pour ça que j'ai terminé mon précédent post par :

Bon courage (et je maintiens).

PS : jalil_msti qu'en dis tu ?

-------------------------------------------------
Dresseur de puces, .... normal pour un loup  !?


Cette discussion est classée dans : aide, controle, demande, shape


Répondre à ce message

Sujets en rapport avec ce message

demande d'aide sur le controle shape [ par jalil_msti ] est ce que qlq un peut me dire comment redimmensionner un contrôle shape au cours de l'exéxution du programme. merci d'avance. demande d'aide [ par cinglee ] salut à tout je suis entran de developer une petirte application vb qui est applée à recuprer des informations a partir de lexterieu de la macine.je d Demande aide pour installation MP-FOL8 [ par myrtille78 ] Je viens de gagner un lecteur MP3 mpman MP-FOL8, dans le mini mini guide il est écrit qu'il faut juste brancher le MP3 puis (sous windows XP) l'instal demande aide winsock/chat/correction de bugs programmation winsock [ par retaks666 ] voila, alors j'ai fait un programme qui recrée un chat, mais il y a des problèmes avec le winsock et je ne trouve pas, je mets la source en ligne tem tres debutant demande aide [ par cphamvan ] debutant parle à expert:je voudrais avoir l'heure atomique sur mon PC.j'ai chargé les 5 PROG sur le site MIcrosoft comme indiqué sur http://www.vbfran Demande d'aide CommonDialog et objet Printer de VB [ par pmesson ] Quelqu'un pourrait-il m'aider ?Dans une application VB6, j'utilise CommonDialog.ShowPrinter de manière à ce que l'utilisateur puisse choisir l'imprim Demande d'aide sur Visual Basic [ par Mal Ganis ] Comment faire en Visual Basic pour envoyer une note du programme à un synthétiseur et comment faire pour récevoir sur le programme la note émise sur u Besoin d'aide pour le controle listview [ par Marnilla ] Salut,J'utlise dans un de mes programmes le contrôle listview et j'ai eu des soucis pour récupérer les données sélectionnées sur ce contrôle. Finaleme demande d'aide [ par cyberspace ] j'ai un cybercafe et je voudrais creer des procedures sous vba excel2000,pour me permettre d'eteindre ou bloquer les autres postes (win98se) a partir demande d'aide [ par la_vida ] la_vidabonjour,j'ai utilisé le code pour ouvrir la boite de dialogue "ouvrir "et "enregistrer sous" le problème se trouve dans ces deux lignes:var=com


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,624 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales