Redimentionner form

Sinsitrus Messages postés 849 Date d'inscription samedi 11 juin 2005 Statut Membre Dernière intervention 21 août 2015 - 16 févr. 2013 à 16:47
 Nectar108 - 4 mars 2015 à 18:02
Salut à tous !

svp, avez une idée de comment redimensionner un formulaire à propriété BorderStyle = 0 à l'aide d'une PictureBox ?

Une PictureBox en bas à droite de la fenêtre pour redimensionner le form ?

Merci d'avance

----------
OS : Windows 7 Pro 64 Bit
Platforme : Visual Basic 6.0

15 réponses

Bonjour Sinsitrus.
Voici un code possible.

Option Explicit
Private u As Single, v As Single

Private Sub pBox_MouseDown(b As Integer, m As Integer, x As Single, y As Single)
    If b 1 Then u x: v = y
End Sub

Private Sub pBox_MouseMove(b As Integer, m As Integer, x As Single, y As Single)
    If b = 1 Then
        pBox.Left = pBox.Left + x - u
        pBox.Top = pBox.Top + y - v
        Me.Width = pBox.Left + pBox.Width
        Me.Height = pBox.Top + pBox.Height 
    End If

End Sub



Cordialement.

Étant illettré, je signe d'une croix : ×
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
16 févr. 2013 à 19:25
Bonjour,
On peut se débrouiller sans besoin de cette picturebox.
Si tu acceptes de continuer à affiner, je veux bien te bâcler un exemple (et je n'irai pas plus loin car je n'en vois pas l'intérêt personnel)
Quand je dis affiner :
- ne faire réagir que si le curseur est près de bords
- modifier la forme du curseur en mode redimensionnement
- etc ...
Ce sera principalement du travail de calcul et je te laisserai le continuer, hein...
Tu dis ...

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
16 févr. 2013 à 19:35
Bonjour Zermelo,
Attention : ton code, tel qu'il est, se heurtera à certains problèmes en cas d'échelles en Pixels.


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
Sinsitrus Messages postés 849 Date d'inscription samedi 11 juin 2005 Statut Membre Dernière intervention 21 août 2015
16 févr. 2013 à 19:43
Je vous remercie.

Je suis partant ucfoutu.
Veux tu bien être mon prof ? (sérieusement)
0

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

Posez votre question
Bonjour ucfoutu.

Il n'y a pas de problème si les ScaleMode du formulaire et du PictureBox sont identiques. De toute façon, bête et discipliné comme je suis, j'ai fait ce que Sinsitrus a demandé.


Cordialement.


Étant illettré, je signe d'une croix : ×
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
16 févr. 2013 à 21:18
Il n'y a pas de problème si les ScaleMode du formulaire et du PictureBox sont identiques

As-tu essayé ?
A Sinsitrus : je ne veux être le professeur de personne...
Je reviendrai lorsqu'aura d'abord été mis au clair le code de zermelo. Son code, qui utilise une picturebox, comme tu le demandais, est plus simple à comprendre que celui que j'écrirai ensuite.
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
Bonjour à nouveau ucfoutu.

Je n'ai pas essayé, mais si je le faisais je n'oublierais pas de multiplier Me.Width et Me.Height par le nombre de twips par pixels.

En passant, une question qui me taraude : de quel sexe sont les PictureBox ?


Avec mes amitiés.


Étant illettré, je signe d'une croix : ×
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
17 févr. 2013 à 07:24
de quel sexe sont les PictureBox

En français ? ===>> box = boîte ===>> = féminin === >> Une picturebox
Mais le masculin est possible, ainsi : un contrôle picturebox
De la même manière (analogie) que le mot mâle est masculin et que cela n'exclut pas l'expression une prise mâle.
Ce qui, par contre, est de plus en plus souvent entendu et est inacceptable, c'est le genre "un espèce de ...(n'importe quel mot masculin)..."



________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
17 févr. 2013 à 11:20
Je n'ai pas essayé, mais si je le faisais je n'oublierais pas de multiplier Me.Width et Me.Height par le nombre de twips par pixels

Pas si simple que celà car sous VB la position du form est en twips et ses dimensions en unités de l'échelle choisie
Si tu utilises en plus une picturebox, ses position et dimensions, ainsi que les X et Y de son évènement Mouse_move vont dépendre de sa propre échelle et si échelle différente par rapport au Form, encore des calculs à prévoir !
Regardons maintenant ce que ferait ceci, sans même ajouter une picturebox :
L&ançons et utilisons le bouton droit ===>>
Option Explicit
Private Type POINTAPI
    X As Long
    Y As Long
End Type
Private Type RECT
    Left As Long
    Top As Long
    Right As Long
    Bottom As Long
End Type
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Private Declare Function GetWindowRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT) As Long
Private Declare Function MoveWindow Lib "user32" (ByVal hwnd As Long, ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal bRepaint As Long) As Long
Private Declare Function SetCursorPos Lib "user32" (ByVal X As Long, ByVal Y As Long) As Long
Private rectan0 As RECT

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
  If Button = 2 Then
    GetWindowRect Me.hwnd, rectan0
    SetCursorPos rectan0.Right, rectan0.Bottom
  End If
End Sub

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim ou As POINTAPI, rectan0 As RECT
  If Button = 2 And X > 0 And Y > 0 Then
    GetCursorPos ou
    GetWindowRect Me.hwnd, rectan0
    MoveWindow Me.hwnd, rectan0.Left, rectan0.Top, ou.X - rectan0.Left, ou.Y - rectan0.Top, 1
  End If
End Sub

On s'affranchit ainsi totalement de toute échelle, puisque tous sera fait en dehors de VB (tout va être calculé en pixels et ce calcul sera géré par Windows).



________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
Bonjour,
J'ai trouvé une solution concernant le redimensionnement d'une form VB, écrite par vous, il y a environ 2 ans, sur le site "http://codes-sources.commentcamarche.net/forum/affich-1627005-redimentionner-form" Je tenais à vous remercier, car c'est la plus géniale des solutions trouvées sur le net. Un grand Merci ! Nectar108
0
Profil bloqué
21 févr. 2013 à 14:49
Salut ucfoutu

Tu dis "De la même manière (analogie) que le mot mâle est masculin et que cela n'exclut pas l'expression une prise mâle."

mâle est soit un nom commun (un beau mâle) soit un adjectif (une prise mâle ou un embout mâle ) !
Mais je chipote
bonne journée


La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.

GRENIER Alain
0
Sinsitrus Messages postés 849 Date d'inscription samedi 11 juin 2005 Statut Membre Dernière intervention 21 août 2015
21 févr. 2013 à 15:09
Salut !

Masculin ou féminin...

Svp les gars, peut-on revenir au sujet principal ?

Vous voyez iTunes ? Il n'a pas de bords, mais lorsque le curseur touche un bord, il est redimensionnable.

Merci Galain pour ton code, l'image se déplace mais ne reste pas à l'angle bas-droit.
Ucfoutu, tu m'as dis que ta méthode est meilleure (enfin, plus évoluée), si vous pouvez m'aider tous les deux à finaliser mon but ça serait sympa.

Merci
0
Profil bloqué
21 févr. 2013 à 15:16
Salut Sinsitrus !
Désolé pour cette incursion humoristique
tu dis "Merci Galain pour ton code, l'image se déplace mais ne reste pas à l'angle bas-droit. "
Remercie plutôt ucfoutu ! C'est lui l'auteur du code

La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.

GRENIER Alain
0
Sinsitrus Messages postés 849 Date d'inscription samedi 11 juin 2005 Statut Membre Dernière intervention 21 août 2015
21 févr. 2013 à 15:21
Pardon, le code premier est de Zermelo.
Le second, celui de ucfoutu est par clic droit et vient automatiquement au bord bas-droit pour redimensionner.

Enfin... merci à tous en tout cas pour votre aide.
0
Utilisateur anonyme
21 févr. 2013 à 18:40
Bonjour,

Je me permets un petit commentaire sur cette phrase de ucfoutu que je salue au passage.

Pas si simple que celà car sous VB la position du form est en twips et ses dimensions en unités de l'échelle choisie.


C'est vrai pour VB6. Par contre, en VB.net, le twip a été zigouillé et remplacé par le pixel.
0
Bonjour Sinsitrus.

Alors disons 15 partout. Par ailleurs, je me suis laissé dire que les PictureBox sont comme les Anges.


Cordialement.


Étant illettré, je signe d'une croix : ×
0
Rejoignez-nous