Annuler un resize

cs_santiago69 Messages postés 91 Date d'inscription jeudi 18 novembre 2004 Statut Membre Dernière intervention 17 décembre 2008 - 2 juil. 2006 à 10:50
cs_santiago69 Messages postés 91 Date d'inscription jeudi 18 novembre 2004 Statut Membre Dernière intervention 17 décembre 2008 - 6 juil. 2006 à 20:04
Bonjour a tous,
Lorsqu'on ferme une fenetre, il est possible d'annuler l'evenement de la maniere suivante :

Private Sub Form_Unload(Cancel As Integer)
    Cancel = True
End Sub

Mais comment faire pour annuler un resize ?
En fait j'ai un formulaire dont les controles s'adaptent a la taille de la fenetre. Mais, si la fenetre devient trop petite, certaines mesures deviennent negatives. Je voudrais intercepter l'erreur et empecher l'utilisateur de continuer de reduire la taille de la fenetre.
Un truc du genre
Private Sub Form_Resize()
    On Error GoTo Err_IncorrectSize
    MyControl.Move Calcul1, Calcul2, Calcul3, Calcul4
Exit Sub
Err_IncorrectSize:
   Cancel = True (mais ca n'existe pas !)
End Sub

Voila, merci de votre aide
Santiago

il y a 10 types de personnes : ceux qui comprennent le binaire et ceux qui ne le comprennent pas.

4 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
2 juil. 2006 à 11:33
tu peux utiliser par exemple :

http://www.vbfrance.com/codes/BLOQUER-REDIMENSIONNEMENT-VOS-FORMES_31210.aspx

Renfield
Admin CodeS-SourceS- MVP Visual Basic
0
OneHacker Messages postés 1447 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 23 septembre 2007 2
2 juil. 2006 à 11:59
J'ai un code VB.Net que j'ai fait mais je pense que c'est à peu près pareil en VB6.

Déclare ces deux valeur en haut de la form

Private AcceptedSize
As Size

Private bCancelResize
As
Boolean =
FalseEnsuite lors du chargement de la form :

Private
Sub frmMain_Load(
ByVal sender
As System.Object,
ByVal e
As System.EventArgs)
Handles
MyBase.LoadAcceptedSize =

Me.Size

End
SubEnsuite lors du redimensionnement :

Private
Sub frmMain_Resize(
ByVal sender
As
Object,
ByVal e
As System.EventArgs)
Handles
MyBase.Resize

If bCancelResize
ThenRestoreResize()

ElseAcceptedSize =

Me.Size

End
If

End
Sub

Private
Sub RestoreResize()

Me.Size = AcceptedSize

End
Subdonc c'est bCancelResize qui détermine si le redimensionnement est autorisé ou pas.

P.S : Tu peux utilise une CheckBox en plus.

Redman
0
JB76000 Messages postés 135 Date d'inscription vendredi 4 juin 2004 Statut Membre Dernière intervention 14 février 2013
2 juil. 2006 à 16:08
Private Sub Form_Resize()


If Form1.Width < Command1.Width + 800 Then Form1.Width = Command1.Width + 800: Exit Sub


Command1.Left = (Form1.Width - Command1.Width) / 2


End Sub

Si la taille de ta fenêtre sort de la tolérance, tu la redéfinis.
La 2e ligne sert à centrer le bouton sur la fenêtre.

Jer
0
cs_santiago69 Messages postés 91 Date d'inscription jeudi 18 novembre 2004 Statut Membre Dernière intervention 17 décembre 2008
6 juil. 2006 à 20:04
merci a tous,
partant de vos reponses, voila la solution que j'ai elabore :
a l'ouverture je defini "MinWidth" et "MinHeight" :
Private Sub Form_Load()
    MinWidth = 4000
    MinHeight = 3000
End Sub
et lors du resize, je force la taille a etre plus grande que les "Min" avant d'adapter le contenu de mon form
Private Sub Form_Resize()
    If ScaleWidth < MinWidth Then Width = MinWidth + Width - ScaleWidth
    If ScaleHeight < MinHeight Then Height = MinHeight + Height - ScaleHeight
   'ensuite je repositionne les controles
End Sub

Graphiquement c'est pas top quand on essaye de redimensionner la fenetre en dessous des "Min" (ca tremble un peu) mais ca marche.

Encore merci a tous !
Santiago   

il y a 10 types de personnes : ceux qui comprennent le binaire et ceux qui ne le comprennent pas.
0
Rejoignez-nous