1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82
| Private Sub Report_Load()
' lors du chargement du form
' nous ouvrons le form frmAutoSizeIt en mode conception (acDesign)
' et en mode caché (acHidden)
DoCmd.OpenReport "frmAutoSizeIt", acDesign, , , , acHidden
End Sub
Private Sub Report_Unload(Cancel As Integer)
' lors du déchargement du form
' nous fermons le form frmAutoSizeIt sans le sauvegarder (acSaveNo)
DoCmd.Close acReport, "frmAutoSizeIt", acSaveNo
End Sub
Private Sub Report_Current()
' événement provoqué pour chaque affichage d'un nouvel enregistrement
If Not IsNull(Me.Photo) Then
If Len(Me.Photo) > 0 Then
' appel de la fonction de calcul de la hauteur d'un contrôle
Me.Photo.Height = GetCtlSize("Photo")
' affectation de la hauteur calculée
Me.Section("Détail").Height = Me.Photo.Top + Me.Photo.Height
' marge pour la partie basse du formulaire
Me.InsideHeight = Me.Section("Détail").Height + 50
End If
End If
End Sub
Private Function GetCtlSize(ByVal ctl As String) As Long
' fonction permettant de trouver la hauteur du contrôle pour un texte donné
' nous passons les caractéristiques de mise en forme
' puis nous utilisons la méthode .SizeToFit pour trouver la bonne hauteur
' argument : ctl As String (Chaîne nom du contrôle qui doit subir ce traitement)
' Le formulaire frmAutoSizeIt est celui qui est ouvert en mode conception et caché
' rappelons que l'étiquette lblDoIt est celle sur qui va s'appliquer la méthode
' SizeToFit pour calculer la hauteur du texte
With Report("frmAutoSizeIt").lblDoIt
' attribution du texte du contrôle avec un renvoi à la ligne
.Caption = Me.Controls(ctl).Value & vbCrLf & " "
' attribution des enrichissements de forme
' Police de caractères
'.FontName = Me.Controls(ctl).FontName
' Taille de caractères
'.FontSize = Me.Controls(ctl).FontSize
' Gras
'.FontBold = Me.Controls(ctl).FontBold
' Italique
'.FontItalic = Me.Controls(ctl).FontItalic
' Epaisseur
'.FontWeight = Me.Controls(ctl).FontWeight
' Largeur du contrôle
.Width = Me.Controls(ctl).Width
' application de la méthode .SizeToFit qui ajuste automatiquement
' la largeur du contrôle au contenu
.SizeToFit
' on répète l'opération sans le retour charriot
.Caption = Me.Controls(ctl).Value
.Width = Me.Controls(ctl).Width
.SizeToFit
' on renvoie la hauteur du contrôle
GetCtlSize = .Height
End With
End Function |
Partager