Maison >tutoriels informatiques >connaissances en informatique >Le type de fonction adaptative de taille de contrôle VB ne répond pas aux exigences !
Ajouter un module
Option explicite
Dim FormOldWidth As Long 'L'ancienne valeur de largeur du formulaire
Dim FormOldHeight As Long 'L'ancienne valeur de hauteur du formulaire
Public Sub ResizeInit (FormName As Form)
Dim pCtl comme contrôle
'Définissez l'ancienne hauteur et largeur du formulaire
FormOldWidth = FormName.ScaleWidth
FormOldHeight = FormName.ScaleHeight
En cas d'erreur, reprendre ensuite
Pour chaque pCtl dans FormName
'Définissez la valeur Tag du contrôle dans le formulaire (définie en fonction de la position et de la taille de l'espace)
'Renvoie ou définit une expression qui stocke les données supplémentaires nécessaires au programme.
'Contrairement à d'autres propriétés, Visual Basic n'utilise pas la valeur de la propriété Tag
;'Utilisez cet attribut pour identifier des objets.
pCtl.Tag = pCtl.Left & " ” & pCtl.Top & " " & pCtl.Width & " ” & pCtl.Height & " "
Prochain pCtl
En cas d'erreur, allez à 0
Fin du sous-marin
Public Sub ResizeForm (FormName As Form)
Dim Pos (4) en double
Dim i aussi longtemps, tmpPos aussi longtemps, staPos aussi longtemps
Dim pCtl comme contrôle
Dim ScaleX en double, ScaleY en double
'Enregistrez le rapport de mise à l'échelle en largeur et en hauteur du formulaire
ScaleX = FormName.ScaleWidth / FormOldWidth
ScaleY = FormName.ScaleHeight / FormOldHeight
En cas d'erreur, reprendre ensuite
'Modifiez les contrôles dans le formulaire
Pour chaque pCtl dans FormName
staPos = 1
Pour i = 0 à 4 'Position et taille
'Obtenir la position et la taille d'origine du contrôle
tmpPos = InStr(staPos, pCtl.Tag, "", vbTextCompare)
Si tmpPos > 0 Alors
Pos(i) = Mid(pCtl.Tag, staPos, tmpPos - staPos)
staPos = tmpPos + 1
Autre
Pos(i) = 0
Fin si
'Modifiez la taille en fonction de la position et de la forme d'origine du contrôle
'Repositionner et redimensionner les contrôles proportionnellement
pCtl.Move Pos(0) * ScaleX, Pos(1) * ScaleY, Pos(2) * ScaleX, Pos(3) * ScaleY
Suivant je
Prochain pCtl
En cas d'erreur, allez à 0
Fin du sous-marin
Ajouter du code dans le formulaire
Sous-Formulaire Privé_Load()
Appelez ResizeInit (Me)
Fin du sous-marin
'Lorsque la taille du formulaire change, changez la taille en fonction de la proportion du formulaire
'Repositionnez et modifiez la taille de chaque contrôle du formulaire.
Sous-Formulaire Privé_Resize()
Appelez ResizeForm(Me)
Fin du sous-marin
Placez ensuite quelques contrôles dans le formulaire et essayez de modifier la taille du formulaire
Formulaire adaptatif de contrôle :
Dim anciennehauteur&, anciennelargeur&
Sous-Formulaire Privé_Load()
oldheight = Me.Height : oldwidth = Me.Width
Fin du sous-marin
Sous-Formulaire Privé_Resize()
Dim cnt comme contrôle
Pour chaque cnt dans les contrôles
cnt.Width = cnt.Width * Me.Width / oldwidth
cnt.Height = cnt.Height * Me.Height / oldheight
Suivant
oldheight = Me.Height : oldwidth = Me.Width
Fin du sous-marin
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!