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 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
| Private Sub Form_Current()
Call ssfrmHeightResize(3, Me.jonction_sous_formulaire)
'tu mettras 8 au lieu de 3
End Sub
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
Dim calageAbsolu As Long, lngRecordCount As Long
Dim LineHeight As Long
Dim oSsFrm As Form
Dim rst As Recordset
Set oSsFrm = ctlSsFrm.Form
'Nombre de records dans le sousForm
'-----------------------------------
lngRecordCount = DCount("*", "jonction", " [refAnnonce]=" & Me.Refannonce)
Debug.Print "oSsFrm. lngRecordCount: " & lngRecordCount
'Attention : information : The recordcount is unreliable when using a server side cursor
Debug.Print "oSsFrm. RecordCount : " & oSsFrm.RecordsetClone.RecordCount
'Hauteur d'une ligne du sous-form
If oSsFrm.DefaultView = 2 Then
'en DS
LineHeight = 250
Else
'en continu
LineHeight = oSsFrm.Section(acDetail).Height
End If
'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
oSsFrm.InsideHeight = heightTotalSsFrm
oSsFrm.ScrollBars = 0 'aucune barre de défilement
Else
oSsFrm.InsideHeight = heightMaxAllowedSsFrm
oSsFrm.ScrollBars = 2 'barre de défilement verticale
End If
Debug.Print "LineHeight: " & LineHeight
'ctlSsFrm.Height = oSsFrm.WindowHeight
'ctlSsFrm.Height = oSsFrm.InsideHeight
calageAbsolu = ctlSsFrm.Top + ctlSsFrm.Height + 0
Debug.Print "calageAbsolu (en twips) :" & calageAbsolu
' Actualisation de la hauteur du formulaire
'------------------------------------------
'Me.Form.Section(acDetail).Height = calageAbsolu + 600
'Me.CtlTab1.Height = calageAbsolu + 180
'Me.libItem.Height = Me.CtlTab1.Height - 40
'Debug.Print "Me.Form.Section(acDetail).Height: " & Me.Form.Section(acDetail).Height
'Décalage des zones de textes en-dessous
'-----------------------------------------------------
'il suffit de modifier leur position en fonction du sous-formulaire,
'Me.et_Lot.Top = calageAbsolu
'Me.et_vendu.Top = calageAbsolu + 150
'Ajustement de la fenêtre globale
'Forms(NameForm).InsideHeight = Forms(NameForm).InsideHeight * k
'Forms(NameForm).InsideWidth = Forms(NameForm).InsideWidth * k
'Me.Form.InsideHeight = Me.Form.Section(acHeader).Height + Me.Form.Section(acDetail).Height + Me.Form.Section(acFooter).Height
'Debug.Print "Me.Form.InsideHeight: " & Me.Form.InsideHeight
'Debug.Print "Me.Form.WindowHeight: " & Me.Form.WindowHeight
'Me.Form.Section(acDetail).Height = Me.CtlTab1.Height
'Debug.Print "Form.Detail.Height après: " & Me.Form.Section(acDetail).Height
'Debug.Print "LineHeight après: " & LineHeight
Set ctlSsFrm = Nothing
Set oSsFrm = Nothing
End Sub |
Partager