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
|
Public Sub ssfrmHeightResize(nbMaxLignesAffichees As Integer, ctlSsFrm As Control)
'Positionnement du ss-formulaire
'--------------------------------
' twips : 567 dans 1 cm et 1440 dans 1 pouce.
' limite la hauteur du sous-form à nbMaxLignesAffichees lignes
' qd nbLignes > nbMaxLignesAffichees, on affiche le défilement vertical
Dim heightMaxAllowedSsFrm As Long, heightTotalSsFrm As Long, widthSsFrm As Long
Dim lineHeight As Long, calageAbsolu As Long, lngRecordCount As Long
Dim oSsFrm As Form
Dim rst As Recordset
Set oSsFrm = ctlSsFrm.Form
'Hauteur d'une ligne du sous-form
'--------------------------------
Debug.Print "width : " & Application.GetOption("default column width") 'en cm
'Debug.Print "height: " & Application.GetOption("default row height")
Debug.Print "height: " & oSsFrm.RowHeight 'en twips
If oSsFrm.DefaultView = 2 Then
'en mode DS
lineHeight = 283
'widthSsFrm = oSsFrm.Width 'ou bien un nombre en twips
Else
'en mode continu
lineHeight = oSsFrm.Section(acDetail).Height
'widthSsFrm = oSsFrm.Width + 50
End If
'Nombre de records dans le sousForm
'-----------------------------------
If oSsFrm.RecordsetClone.RecordCount > 0 Then
oSsFrm.RecordsetClone.MoveFirst
oSsFrm.RecordsetClone.MoveLast
'Attention : The recordcount is unreliable when using a server side cursor
lngRecordCount = oSsFrm.RecordsetClone.RecordCount
Else
lngRecordCount = 0
End If
Debug.Print "oSsFrm. lngRecordCount: " & lngRecordCount
'Debug.Print "Form.Detail.Height avant: " & Me.Form.Section(acDetail).Height
Debug.Print "oSsFrm. Detail.Height : " & oSsFrm.Section(acDetail).Height
heightMaxAllowedSsFrm = oSsFrm.Section(acHeader).Height _
+ IIf(oSsFrm.Section(acFooter).Visible, oSsFrm.Section(acFooter).Height, 0) _
+ lineHeight _
* (IIf(oSsFrm.AllowAdditions, nbMaxLignesAffichees + 1, nbMaxLignesAffichees))
Debug.Print "heightMaxAllowedSsFrm : " & heightMaxAllowedSsFrm
heightTotalSsFrm = oSsFrm.Section(acHeader).Height _
+ IIf(oSsFrm.Section(acFooter).Visible, oSsFrm.Section(acFooter).Height, 0) _
+ lineHeight _
* (IIf(oSsFrm.AllowAdditions, lngRecordCount + 1, lngRecordCount))
Debug.Print "heightTotalSsFrm : " & heightTotalSsFrm
If heightTotalSsFrm < heightMaxAllowedSsFrm Then
'ctlSsFrm.Width = widthSsFrm + 150 'Largeur automatique du sous-form
oSsFrm.InsideHeight = heightTotalSsFrm
oSsFrm.ScrollBars = 0 'aucune barre de défilement
Else
'ctlSsFrm.Width = widthSsFrm + 410 'Largeur automatique du sous-form
oSsFrm.InsideHeight = heightMaxAllowedSsFrm
oSsFrm.ScrollBars = 2 'barre de défilement verticale
End If
Debug.Print "lineHeight: " & lineHeight
Set ctlSsFrm = Nothing
Set oSsFrm = Nothing
End Sub |
Partager