kimmelf2
Messages postés267Date d'inscriptionlundi 22 septembre 2003StatutMembreDernière intervention27 novembre 2005 8 oct. 2003 à 01:01
seyev> Par trivial, je pense "simple dans le principe" : c'est juste une modif de la position et de la taille d'une zone quand tu resize l'autre.
tout betement ... :-D
mais y'a aucune critique dans mon post. C'est juste pour dire que c'est tout simple mais hyper pratique qd meme
LogRaam (aka Gabriel Mailhot)
Messages postés60Date d'inscriptionlundi 26 mai 2003StatutMembreDernière intervention25 avril 2005 6 oct. 2003 à 18:51
En fait Seyev, il y a quelques changements...
Premièrement, WITH ... END WITH va optimiser ton code. Il sera plus rapide. C'est pratique surtout si chacune des fenêtres contiennent beaucoups de choses.
Deuxièmement, regarde bien la vérification avant le Resize... If Me.ScaleWidth - (.Left - .Width) > 0 Then ... Ce petit bout de code va permettre à ton application de ne pas planter si quelqu'un réduit la fenêtre au plus petit.. Présentement, ça plante.
Troisièmement, le MOVE accélère aussi ton application.
La constante, c'est juste pour rendre la modification du code plus facile.. par exemple, si tu voulais changer ta marge et mettre 800 à la place de 500, et bien là tu n'as qu'à changer la valeur de la constante et la modif s'appliquera à l'ensemble de ton code. C'est plus rapide et c'est plus sûre car tu ne risque pas d'oublier des valeurs.. Surtout si ton code est très long.
Une autre façon serait aussi d'utiliser un ImageBox à la place d'un PictureBox.. Ou encore mieux, un SHAPE. C'est encore plus rapide.
Voilà,
MadLucas
cs_seyev
Messages postés93Date d'inscriptionsamedi 9 juin 2001StatutMembreDernière intervention 6 mai 20051 6 oct. 2003 à 17:39
kimmelf2> "basique et triviale" tu dis... Comment faire autrement, sans OCX supplémentaire et sans être trivial ? Là, je vois pas... ;)
MadLucal> Bien sûr, mais l'idée est la même ;) C'est vrai que de mettre des constantes permet desimplifier le code... (d'ailleurs dans mes programmes, ce sont des constantes que j'utilise...) Pour ce qui est du move par contre, je n'ai pas l'habitude de l'utiliser... Merce à toi ;)
++
Seyev
LogRaam (aka Gabriel Mailhot)
Messages postés60Date d'inscriptionlundi 26 mai 2003StatutMembreDernière intervention25 avril 2005 6 oct. 2003 à 15:24
Voici ce que je te suggère:
'-----------------------------------------------------------
Dim Resizing As Boolean
Private Const myMargin = 500
Private Sub Form_Load()
Picture1.BorderStyle = 0
End Sub
Private Sub Form_Resize()
With Picture1
Text1.Move 0, 0, .Left, Me.ScaleHeight
If Me.ScaleWidth - (.Left - .Width) > 0 Then
Text2.Move .Left + .Width, 0, Me.ScaleWidth - (.Left - .Width), Me.ScaleHeight
End If
.Height = Me.ScaleHeight
End With
End Sub
Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Resizing = True
End Sub
Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Resizing Then
DoEvents
With Picture1
If .Left + X <= (Me.ScaleWidth - myMargin) And .Left + X >= myMargin Then
.Left = .Left + X
Else
If .Left + X >= Me.ScaleWidth - myMargin Then
.Left = Me.ScaleWidth - myMargin
Else
.Left = myMargin
End If
End If
Text1.Width = .Left
Text2.Move .Left + .Width, Text2.Top, Me.ScaleWidth - (.Left - .Width)
End With
End If
End Sub
Private Sub Picture1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
Resizing = False
End Sub
'------------------------------------------------------------
+
MadLucas
cs_lard
Messages postés79Date d'inscriptionjeudi 19 décembre 2002StatutMembreDernière intervention26 janvier 2009 6 oct. 2003 à 15:08
Voilà un truc... qu'il est bien pratique !!!
Simple et efficace...
9/10
Bonne prog!
A plus...
kimmelf2
Messages postés267Date d'inscriptionlundi 22 septembre 2003StatutMembreDernière intervention27 novembre 2005 6 oct. 2003 à 01:14
idem, je qualifierai un peu l'astuce de "basique et triviale" dans le principe mais je te met qd meme un 9 car on peux toujours ameliorer
et, de plus, ca fais travailler tout le monde
Golog
Messages postés224Date d'inscriptionjeudi 31 janvier 2002StatutMembreDernière intervention22 décembre 2009 5 oct. 2003 à 14:00
Nan , mais c'est bien meme si toute les eventualité n'ont pas été prise en compte, je trouve que c'est des source comme les tienne qui sont interresant , puisque les autre regarde se que tu a oublié , donc travaille dessur, et de plus, font travaillé leur ménage :p
Enfin bonne continuation.
9/10
cs_seyev
Messages postés93Date d'inscriptionsamedi 9 juin 2001StatutMembreDernière intervention 6 mai 20051 5 oct. 2003 à 02:45
Il suffit de mettre quesque chose du genre:
If Me.Height < 6200 Then Me.Height = 6200
If Me.Width < 10000 Then Me.Width = 10000
au début du From_Resize()
Je suis désolé pour tous les oublis, mais je pensais donner une source de split de fenêtre, je n'ai donc pas pensé à toutes les éventualités... C'est promis, je ne prépare plus de sources a 3h du mat' - je commence mal ;)
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 4 oct. 2003 à 17:09
Autre bug. Tu ne fais pas assez de vérification dans le Resize de la Form. On ne peut donc pas minimiser la Form ou la réduire trop.
cs_seyev
Messages postés93Date d'inscriptionsamedi 9 juin 2001StatutMembreDernière intervention 6 mai 20051 3 oct. 2003 à 21:04
Et voila, j'ai mis a jour la sourceet le zip...
Merci PROGRAMMIX ;)
cs_seyev
Messages postés93Date d'inscriptionsamedi 9 juin 2001StatutMembreDernière intervention 6 mai 20051 3 oct. 2003 à 20:21
Oups, bien vu programmix... Je sais pas si j'ai compris (je crois que oui), mais je vais voir... J'ai fait ca hier soir vite fait, je post une maj dans un moment.. Merci ;)
cs_PROGRAMMIX
Messages postés1133Date d'inscriptionmercredi 2 octobre 2002StatutMembreDernière intervention24 juillet 20112 3 oct. 2003 à 20:18
Il y a un petit bug....
Dans ton code, tu prévois le redimentionnement dans sa largeur mais pas dans sa hauteur. Ce qui implique que si je met ma feuille en grand, la picture n'est pas redimentionnée et donc la possibilité de "mover" la séparation n'existe que sur la hauteur initiale du picture et non sur toute la hauteur de la séparation (si je me suis bien fais comprendre....)
cs_Urgo
Messages postés780Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention16 avril 20091 3 oct. 2003 à 19:33
Facile, mais pratique pour les débutants
DragonDo
Messages postés93Date d'inscriptionlundi 8 avril 2002StatutMembreDernière intervention22 juillet 2006 3 oct. 2003 à 18:15
Très malin !
Merci
@+
cs_seyev
Messages postés93Date d'inscriptionsamedi 9 juin 2001StatutMembreDernière intervention 6 mai 20051 3 oct. 2003 à 14:42
merci ;)
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 3 oct. 2003 à 14:25
8 oct. 2003 à 08:39
http://www.vbfrance.com/code.aspx?ID=3909
8 oct. 2003 à 01:01
tout betement ... :-D
mais y'a aucune critique dans mon post. C'est juste pour dire que c'est tout simple mais hyper pratique qd meme
6 oct. 2003 à 18:51
Premièrement, WITH ... END WITH va optimiser ton code. Il sera plus rapide. C'est pratique surtout si chacune des fenêtres contiennent beaucoups de choses.
Deuxièmement, regarde bien la vérification avant le Resize... If Me.ScaleWidth - (.Left - .Width) > 0 Then ... Ce petit bout de code va permettre à ton application de ne pas planter si quelqu'un réduit la fenêtre au plus petit.. Présentement, ça plante.
Troisièmement, le MOVE accélère aussi ton application.
La constante, c'est juste pour rendre la modification du code plus facile.. par exemple, si tu voulais changer ta marge et mettre 800 à la place de 500, et bien là tu n'as qu'à changer la valeur de la constante et la modif s'appliquera à l'ensemble de ton code. C'est plus rapide et c'est plus sûre car tu ne risque pas d'oublier des valeurs.. Surtout si ton code est très long.
Une autre façon serait aussi d'utiliser un ImageBox à la place d'un PictureBox.. Ou encore mieux, un SHAPE. C'est encore plus rapide.
Voilà,
MadLucas
6 oct. 2003 à 17:39
MadLucal> Bien sûr, mais l'idée est la même ;) C'est vrai que de mettre des constantes permet desimplifier le code... (d'ailleurs dans mes programmes, ce sont des constantes que j'utilise...) Pour ce qui est du move par contre, je n'ai pas l'habitude de l'utiliser... Merce à toi ;)
++
Seyev
6 oct. 2003 à 15:24
'-----------------------------------------------------------
Dim Resizing As Boolean
Private Const myMargin = 500
Private Sub Form_Load()
Picture1.BorderStyle = 0
End Sub
Private Sub Form_Resize()
With Picture1
Text1.Move 0, 0, .Left, Me.ScaleHeight
If Me.ScaleWidth - (.Left - .Width) > 0 Then
Text2.Move .Left + .Width, 0, Me.ScaleWidth - (.Left - .Width), Me.ScaleHeight
End If
.Height = Me.ScaleHeight
End With
End Sub
Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Resizing = True
End Sub
Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Resizing Then
DoEvents
With Picture1
If .Left + X <= (Me.ScaleWidth - myMargin) And .Left + X >= myMargin Then
.Left = .Left + X
Else
If .Left + X >= Me.ScaleWidth - myMargin Then
.Left = Me.ScaleWidth - myMargin
Else
.Left = myMargin
End If
End If
Text1.Width = .Left
Text2.Move .Left + .Width, Text2.Top, Me.ScaleWidth - (.Left - .Width)
End With
End If
End Sub
Private Sub Picture1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
Resizing = False
End Sub
'------------------------------------------------------------
+
MadLucas
6 oct. 2003 à 15:08
Simple et efficace...
9/10
Bonne prog!
A plus...
6 oct. 2003 à 01:14
et, de plus, ca fais travailler tout le monde
5 oct. 2003 à 14:00
Enfin bonne continuation.
9/10
5 oct. 2003 à 02:45
If Me.Height < 6200 Then Me.Height = 6200
If Me.Width < 10000 Then Me.Width = 10000
au début du From_Resize()
Je suis désolé pour tous les oublis, mais je pensais donner une source de split de fenêtre, je n'ai donc pas pensé à toutes les éventualités... C'est promis, je ne prépare plus de sources a 3h du mat' - je commence mal ;)
4 oct. 2003 à 17:09
3 oct. 2003 à 21:04
Merci PROGRAMMIX ;)
3 oct. 2003 à 20:21
3 oct. 2003 à 20:18
Dans ton code, tu prévois le redimentionnement dans sa largeur mais pas dans sa hauteur. Ce qui implique que si je met ma feuille en grand, la picture n'est pas redimentionnée et donc la possibilité de "mover" la séparation n'existe que sur la hauteur initiale du picture et non sur toute la hauteur de la séparation (si je me suis bien fais comprendre....)
3 oct. 2003 à 19:33
3 oct. 2003 à 18:15
Merci
@+
3 oct. 2003 à 14:42
3 oct. 2003 à 14:25
Merci pour cette source, 9/10 !
DarK Sidious