|
Trouver une ressource
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
FORM/WINDOW RESIZE
Information sur la source
Description
Adaptation d'un code Pour repositionner les composants d'une fenêtre sur Visual Basic .NET
Le code repositionne les composants de la fenêtre en se servant de leur positionne initiale (mise en mémoire par l'appel d'une procédure dans le "Load" de la "Form"). La grosseur des composantes et des caractères sont proportionnel à la grandeur de la fenêtre. Correction des problèmes relié au texte (Oui, il grossi la grosseur des polices). Le code supporte les "Panels", "GroupBox" et autres. Le code a été testé avec Windows XP et Windows Vista (il supporte les nouveau Bouton, GroupBox et RadioButton de Vista+Aero).
Le fonctionnement du code reste simple. Inclure le document vb dans votre projet. Dans la procédure "Load" de votre formulaire, inscrire "LoadArray_WindowResize(Me)". "Me" étant interprêter comme un "Windows.Forms.Control". Dans la procédure "Resize", inscrire "Set_WindowResize(Me)". C'est tout !!!
Source
- Module WindowResizeV2
- Dim ArrayOfObject(0) As TableauWindowsResize
- Dim CORR As Single = 7.5
- Dim Compteur As Integer = 0
-
- Private Structure TableauWindowsResize
- Dim ObjectName As String
- Dim RatioTop As Single
- Dim RatioLeft As Single
- Dim RatioHeigth As Single
- Dim RatioWidth As Single
- Dim FontRatio As Single
- Dim Parent As String
- Dim FlagAvecBordure As Boolean
- End Structure
-
- Public Sub LoadArray_WindowResize(ByVal FormToTreat As Windows.Forms.Control)
- ' Fonction qui rempli le tableau avec tous les composants de la fenetre
- Dim Composant As Windows.Forms.Control
-
- 'eviter de remplir le tableau 2 fois
- ReDim Preserve ArrayOfObject(Compteur)
- For Each Composant In FormToTreat.Controls 'WindowResize_V1.Form1
- If Not Composant.Name = "" Then 'Pour ne pas prendre l'intérieur d'un application MDI
- Compteur += 1
- ReDim Preserve ArrayOfObject(Compteur)
- ArrayOfObject(Compteur).ObjectName = Composant.Name
- ArrayOfObject(Compteur).RatioHeigth = CSng(Composant.Bounds.Height / Composant.Parent.ClientSize.Height)
- ArrayOfObject(Compteur).RatioWidth = CSng(Composant.Bounds.Width / Composant.Parent.ClientSize.Width)
- ArrayOfObject(Compteur).RatioTop = CSng(Composant.Bounds.Top / Composant.Parent.ClientSize.Height)
- ArrayOfObject(Compteur).RatioLeft = CSng(Composant.Bounds.Left / Composant.Parent.ClientSize.Width)
- ArrayOfObject(Compteur).Parent = Composant.Parent.Name
- Try
- If Composant.Size.Height - Composant.Font.Size > 11 Then
- ArrayOfObject(Compteur).FontRatio = CSng(Composant.Font.Size / (Composant.Height - CORR))
- ArrayOfObject(Compteur).FlagAvecBordure = True
- Else
- ArrayOfObject(Compteur).FontRatio = CSng(Composant.Font.Size / Composant.Height)
- ArrayOfObject(Compteur).FlagAvecBordure = False
- End If
- Catch ex As Exception
- ArrayOfObject(Compteur).FontRatio = -1
- End Try
- If Composant.HasChildren = True Then LoadArray_WindowResize(Composant)
- End If
- Next Composant
- End Sub
-
- Public Sub Set_WindowResize(ByVal FormToTreat As Windows.Forms.Control)
- Dim Compteur As Integer = 0
- Dim x, y, wi, he As Int32
-
- For Compteur = 1 To ArrayOfObject.Length - 1
- If FormToTreat.Name = ArrayOfObject(Compteur).Parent Then
- With FormToTreat.Controls(ArrayOfObject(Compteur).ObjectName)
- he = CInt(ArrayOfObject(Compteur).RatioHeigth * .Parent.ClientSize.Height)
- wi = CInt(ArrayOfObject(Compteur).RatioWidth * .Parent.ClientSize.Width)
- y = CInt(ArrayOfObject(Compteur).RatioTop * .Parent.ClientSize.Height)
- x = CInt(ArrayOfObject(Compteur).RatioLeft * .Parent.ClientSize.Width)
- Try
- If ArrayOfObject(Compteur).FlagAvecBordure = True Then
- If Not ArrayOfObject(Compteur).FontRatio = -1 Then .Font = New Drawing.Font(.Font.FontFamily,_
- CSng((he - CORR) * ArrayOfObject(Compteur).FontRatio))
- Else
- If Not ArrayOfObject(Compteur).FontRatio = -1 Then .Font = New Drawing.Font(.Font.FontFamily,_
- CSng(he * ArrayOfObject(Compteur).FontRatio))
- End If
- Catch ES As Exception
- End Try
- .SetBounds(x, y, wi, he)
- If .HasChildren Then Set_WindowResize(FormToTreat.Controls(ArrayOfObject(Compteur).ObjectName))
- End With
- End If
- Next Compteur
-
- End Sub
-
- End Module
Module WindowResizeV2
Dim ArrayOfObject(0) As TableauWindowsResize
Dim CORR As Single = 7.5
Dim Compteur As Integer = 0
Private Structure TableauWindowsResize
Dim ObjectName As String
Dim RatioTop As Single
Dim RatioLeft As Single
Dim RatioHeigth As Single
Dim RatioWidth As Single
Dim FontRatio As Single
Dim Parent As String
Dim FlagAvecBordure As Boolean
End Structure
Public Sub LoadArray_WindowResize(ByVal FormToTreat As Windows.Forms.Control)
' Fonction qui rempli le tableau avec tous les composants de la fenetre
Dim Composant As Windows.Forms.Control
'eviter de remplir le tableau 2 fois
ReDim Preserve ArrayOfObject(Compteur)
For Each Composant In FormToTreat.Controls 'WindowResize_V1.Form1
If Not Composant.Name = "" Then 'Pour ne pas prendre l'intérieur d'un application MDI
Compteur += 1
ReDim Preserve ArrayOfObject(Compteur)
ArrayOfObject(Compteur).ObjectName = Composant.Name
ArrayOfObject(Compteur).RatioHeigth = CSng(Composant.Bounds.Height / Composant.Parent.ClientSize.Height)
ArrayOfObject(Compteur).RatioWidth = CSng(Composant.Bounds.Width / Composant.Parent.ClientSize.Width)
ArrayOfObject(Compteur).RatioTop = CSng(Composant.Bounds.Top / Composant.Parent.ClientSize.Height)
ArrayOfObject(Compteur).RatioLeft = CSng(Composant.Bounds.Left / Composant.Parent.ClientSize.Width)
ArrayOfObject(Compteur).Parent = Composant.Parent.Name
Try
If Composant.Size.Height - Composant.Font.Size > 11 Then
ArrayOfObject(Compteur).FontRatio = CSng(Composant.Font.Size / (Composant.Height - CORR))
ArrayOfObject(Compteur).FlagAvecBordure = True
Else
ArrayOfObject(Compteur).FontRatio = CSng(Composant.Font.Size / Composant.Height)
ArrayOfObject(Compteur).FlagAvecBordure = False
End If
Catch ex As Exception
ArrayOfObject(Compteur).FontRatio = -1
End Try
If Composant.HasChildren = True Then LoadArray_WindowResize(Composant)
End If
Next Composant
End Sub
Public Sub Set_WindowResize(ByVal FormToTreat As Windows.Forms.Control)
Dim Compteur As Integer = 0
Dim x, y, wi, he As Int32
For Compteur = 1 To ArrayOfObject.Length - 1
If FormToTreat.Name = ArrayOfObject(Compteur).Parent Then
With FormToTreat.Controls(ArrayOfObject(Compteur).ObjectName)
he = CInt(ArrayOfObject(Compteur).RatioHeigth * .Parent.ClientSize.Height)
wi = CInt(ArrayOfObject(Compteur).RatioWidth * .Parent.ClientSize.Width)
y = CInt(ArrayOfObject(Compteur).RatioTop * .Parent.ClientSize.Height)
x = CInt(ArrayOfObject(Compteur).RatioLeft * .Parent.ClientSize.Width)
Try
If ArrayOfObject(Compteur).FlagAvecBordure = True Then
If Not ArrayOfObject(Compteur).FontRatio = -1 Then .Font = New Drawing.Font(.Font.FontFamily,_
CSng((he - CORR) * ArrayOfObject(Compteur).FontRatio))
Else
If Not ArrayOfObject(Compteur).FontRatio = -1 Then .Font = New Drawing.Font(.Font.FontFamily,_
CSng(he * ArrayOfObject(Compteur).FontRatio))
End If
Catch ES As Exception
End Try
.SetBounds(x, y, wi, he)
If .HasChildren Then Set_WindowResize(FormToTreat.Controls(ArrayOfObject(Compteur).ObjectName))
End With
End If
Next Compteur
End Sub
End Module
Conclusion
Je suis ouvert à toutes modifications au sujet de la performance du module.
Contacter moi s'il y a des bugs, j'aimerais pour les corrgier le plus rapidement possible. Le code va servir dans une entreprise (environ 10 personnes vont utiliser le programme) et j'aimerais que les "gadgets" soit sans problèmes.
Historique
- 16 août 2007 21:45:58 :
- Suppression d'une ligne de code que je me servait pour le debug et le correction des grandeurs des polices dans un textbox
- 05 septembre 2007 13:23:12 :
- Modification de la fonction LoadArray_WindowResize(). J'ai trouvé un bug quand je travail avec une application MDI. Le centre de l'application devenait un object sans nom !!!. J'ai rajouté une ligne qui filtre cet object. Le centre ed l'application MDI s'agrandit quand même sur le reste du MainForm sans causé de problème
Sources de la même categorie
Sources en rapport avec celle ci
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
empêcher le redimensionnement d'un fenêtre [ par drublic ]
salut,j'aimerais, que lorsque la fenêtre de mon programme s'affiche, l'on ne puisse pas avec la sourie la redimenssionner.ou alors comment fait on pou
empêcher le redimensionnement d'un fenêtre [ par drublic ]
salut,j'aimerais, que lorsque la fenêtre de mon programme s'affiche, l'on ne puisse pas avec la sourie la redimenssionner.ou alors comment fait on pou
PB REDIMENSIONNEMENT FEUILLE [ par hlt ]
Après avoir exécuté word à patir de visual, le document word precharge des données.Entre temps je reduit la feuille principal(elle est iconifiée dans
recadrage et resize d'une image jpg [ par benthi ]
est il possible, à partir de VB6, de lancer la commande de recadrage puis la commande de resize sur une image jpg situé dans un répertoire précis.
empecher le redimensionnement d'une feuille [ par darkyoda ]
salut a vous,compagons developpeurs!comment empecher un utilisateur de redimensionner une feuille et commentdésactiver les boutons réduire,restaurer e
form1_resize() [ par rodo22 ]
Bonjour,Comment peut-on avec la commande form_resize() faire en sorte que les contrôles qui se trouvent sur la feuille soient redimensionnés en même t
Redimensionnement de la form [ par Le NeWbIe ]
Quelqu'un pourrait me dire comment avoir le bouton minimiser sur ma form mais désactiver le bouton agrandir?Par exemple la calculette windows est faît
redimensionnement d'un contrôle [ par brisky ]
salut à tous,j'aimerais savoir comment redimentionner un treeview et un listview à l'exécution. comme dans l'explorateur windows, quand on se met entr
Form_Resize avec Frame? [ par jia2812 ]
Slt les progs'Walla, cé pô compliqué mon pb... Je veux faire 1 évent Resize que vous connaissez évidemment... Seulement le pb, cé que si les contrôles
Resize MDI Form [ par denis ]
Bonjour,Est-il possible d'interdire le "Resize manuel" d'une feuille MDI : je souhaiterais ne disposer que des fonctions Maximize et minimize à partir
|
Téléchargements
Logiciels à télécharger sur le même thème :
|