Public Class frmGranulo

    Private Sub Pb_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Pb.Paint
        Pb.BackColor = Color.White
        Pb.Width = 700
        Pb.Height = 400
        Select Case Beton.NbSable
            Case 1
                If Sable.Item(0).Affichage_CourbeGranulo = 1 Then Call Affichage_CourbeGranulo(e.Graphics, 2, 1, 0) : Exit Sub
            Case 2
                If Sable.Item(0).Affichage_CourbeGranulo = 1 Then
                    Call Affichage_CourbeGranulo(e.Graphics, 2, 1, 0)
                Else
                    If Sable.Count > 1 AndAlso Sable.Item(1).Affichage_CourbeGranulo = 1 Then Affichage_CourbeGranulo(e.Graphics, 2, 1, 1) : Exit Sub
                End If
        End Select
        Select Case Beton.NbGravillon
            Case 1
                If Gravillon.Item(0).Affichage_CourbeGranulo = 1 Then Call Affichage_CourbeGranulo(e.Graphics, 2, 2, 0) : Exit Sub
            Case 2
                If Gravillon.Item(0).Affichage_CourbeGranulo = 1 Then
                    Call Affichage_CourbeGranulo(e.Graphics, 2, 2, 0)
                Else
                    If Gravillon.Count > 1 AndAlso Gravillon.Item(1).Affichage_CourbeGranulo = 1 Then Call Affichage_CourbeGranulo(e.Graphics, 2, 2, 1)
                End If
        End Select

        'If appel = 0 Then
        '    Dim msg As String
        '    msg = "La référence d'appel n'a pu être déterminée."
        '    MessageBox.Show(msg, "Affichage courbe granulométrique", MessageBoxButtons.OK, MessageBoxIcon.Warning) : Exit Sub
        'End If

    End Sub


    Private Sub frmGranulo_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        ' Dim perte, mf, Tf As Double
        '  Call Calcul() '(perte, mf, Tf)
        Select Case Beton.NbSable
            Case 1
                If Sable.Item(0).Affichage_CourbeGranulo = 1 Then Call AffichageEntete(1) : Exit Sub
            Case 2
                If Sable.Item(0).Affichage_CourbeGranulo = 1 Then
                    Call AffichageEntete(1)
                Else
                    If Sable.Count > 1 AndAlso Sable.Item(1).Affichage_CourbeGranulo = 1 Then Call AffichageEntete(2) : Exit Sub
                End If
        End Select
        Select Case Beton.NbGravillon
            Case 1
                If Gravillon.Item(0).Affichage_CourbeGranulo = 1 Then Call AffichageEntete(3) : Exit Sub
            Case 2
                If Gravillon.Item(0).Affichage_CourbeGranulo = 1 Then
                    Call AffichageEntete(3)
                Else
                    If Gravillon.Count > 1 AndAlso Gravillon.Item(1).Affichage_CourbeGranulo = 1 Then Call AffichageEntete(4)
                End If
        End Select
        'If appel = 0 Then
        '    Dim msg As String
        '    msg = "La référence d'appel n'a pu être déterminée."
        '    MessageBox.Show(msg, "Affichage courbe granulométrique", MessageBoxButtons.OK, MessageBoxIcon.Warning) : Exit Sub
        'End If

    End Sub
    Private Sub Calcul() '(ByRef perte As Double, ByRef mf As Double, ByRef Tf As Double)
        'Dim mtotal As Double
        Dim i As Integer
        Select Case i'Appel
            Case 1 'sable
                With Sable
                    ''Pourcentage de perte
                    'mtotal = 0 : i = 0
                    'Do
                    '    If Rs(i) > 0 Then mtotal = Tns + Rs(i) : Exit Do
                    '    i = i + 1
                    'Loop
                    'perte = (MS - mtotal) / MS
                    'perte = perte * 100
                    'calcul du module de finesse

                    'For i = 1 To 20
                    '    Rsp(i) = Rs(i) * 100 / MS
                    'Next
                    '.mf = (Rsp(4) + Rsp(7) + Rsp(10) + Rsp(13) + Rsp(16) + Rsp(19)) / 100 '5, 2.5, 1.25, 0.63, 0.315, 0.16
                    'Teneur en fines = passant 0,08mm<12%
                    '   Tf = 100 - Rsp(1)
                End With

            Case 2 'gravillon
                'Pourcentage de perte
                'mtotal = 0 : i = 0
                'Do
                '    If Rg(i) > 0 Then mtotal = Tng + Rg(i) : Exit Do
                '    i = i + 1
                'Loop
                'perte = (Mg - mtotal) / Mg
                'perte = perte * 100
                ''Pour l'affichage de la courbe granulo
                'For i = 1 To 19
                '    Rsp(i) = Rg(i) * 100 / Mg
                'Next
        End Select
    End Sub

    ''' <summary>Affichage de données</summary>
    '''  <param name="i">index du sable</param>
    Private Sub AffichageEntete(ByVal i As Integer) 'ByVal perte As Double, ByVal mf As Double, ByVal Tf As Double)
        Dim F_d, F_Dm As String 'F_perte, F_mf, F_Tf,
        F_d = "0" : F_Dm = "0"
        ''pertes
        'If perte > 2 Then
        '    LblPerte.Text = "Pertes inacceptables suivant NF P18560, le taux de perte = " & perte.ToString("#0.00") & "% > 2%"
        'Else
        '    LblPerte.Text = "Pertes acceptables suivant NF P18560, le taux de perte = " & perte.ToString("#0.00") & "% < 2%"
        'End If

        Select Case i
            Case 1 'sable n°1
                With Sable.Item(0)
                    'Identification
                    lblIdentification.Text = "Identification Sable n°1 : " & .NomSable
                    ' module de finesse
                    Lblmf.Visible = True
                    If Beton.NbSable = 2 Then
                        Lblmf.Text = "Module de finesse :  mf = " & .mf.ToString("#0.00") 'le 2ième sable agit comme correcteur
                    Else
                        If .mf > 3.2 Then
                            Lblmf.Text = "Module de finesse : sable trop grossier, mf = " & .mf.ToString("#0.00") & " > 3,2"
                        ElseIf .mf < 1.8 Then
                            Lblmf.Text = "Module de finesse : sable trop fin, mf = " & .mf.ToString("#0.00") & " < 1,8"
                        ElseIf .mf > 2.85 Then
                            Lblmf.Text = "Module de finesse : sable grossier, mf = " & .mf.ToString("#0.00")
                        ElseIf .mf < 2.15 Then
                            Lblmf.Text = "Module de finesse : sable fin, mf = " & .mf.ToString("#0.00")
                        Else
                            Lblmf.Text = "Module de finesse : sable OK, mf = " & .mf.ToString("#0.00")
                        End If
                    End If
                    'Teneur en fines
                    If Beton.Formulation = 2 Then
                        LblTfines.Visible = True
                        If .TeneurFines * 100 > 12 Then
                            LblTfines.Text = "Teneur fines : " & (.TeneurFines * 100).ToString("#0.00") & " % - > 12% - Non conforme "
                        Else
                            LblTfines.Text = "Teneur fines : " & (.TeneurFines * 100).ToString("#0.00") & " % - < 12% - conforme P18541"
                        End If
                    Else
                        LblTfines.Visible = False
                    End If
                    LblQualité.Visible = False
                    F_d = .ds.ToString("#0.00") : F_Dm = .Dms.ToString("#0.00")
                End With
            Case 2 'sable n°2
                With Sable.Item(1)
                    'Identification
                    lblIdentification.Text = "Identification Sable n°2 : " & .NomSable
                    ' module de finesse
                    Lblmf.Visible = True
                    Lblmf.Text = "Module de finesse :  mf = " & .mf.ToString("#0.00") 'le 2ième sable agit comme correcteur
                    ''Teneur en fines
                    If Beton.Formulation = 2 Then
                        LblTfines.Visible = True
                        LblTfines.Text = "Teneur fines : " & (.TeneurFines * 100).ToString("#0.00") 'Pas de test le 2ième sable agit comme correcteur
                    Else
                        LblTfines.Visible = False
                    End If
                    LblQualité.Visible = False
                    F_d = .ds.ToString("#0.00") : F_Dm = .Dms.ToString("#0.00")
                End With
            Case 3 'gravillon n°1
                With Gravillon.Item(0)
                    'Identification
                    lblIdentification.Text = "Identification Gravillon n°1 : " & .NomGravillon
                    Lblmf.Text = " "
                    Lblmf.Visible = False
                    F_d = .dg.ToString("#0") : F_Dm = .Dmg.ToString("#0")
                    'Coefficient Kg
                    Select Case Beton.Kg_Direct
                        Case True
                            LblQualité.Visible = False
                        Case False
                            LblQualité.Visible = True
                            Select Case Beton.Formulation
                                Case 1 ' Dreux-Gorisse
                                    'Qualité du gravillon
                                    Select Case .Qualite
                                        Case 1
                                            LblQualité.Text = "Classe de Qualité :  A"
                                        Case 2 'Qualité B
                                            LblQualité.Text = "Classe de Qualité :  B" 'qualité B
                                        Case 3 'Qualité C
                                            LblQualité.Text = "Classe de Qualité :  C" 'qualité C
                                        Case 4 'Qualité D
                                            LblQualité.Text = "Classe de Qualité :  D" 'qualité D
                                    End Select
                                Case 2 'Baron-Ollivier
                                    'Pétrographie du gravillon
                                    Select Case .Petrographie
                                        Case 1 'siliceux altérés
                                            LblQualité.Text = "Pétrographie - Qualité :  siliceux altérés"'     = 1
                                        Case 2 'siliceux roulés
                                            LblQualité.Text = "Pétrographie - Qualité :  siliceux roulés"' = 2
                                        Case 3 'calcaire dur
                                            LblQualité.Text = "Pétrographie - Qualité :  calcaire dur" ' = 3
                                    End Select
                            End Select
                    End Select


                End With
                LblTfines.Visible = False
            Case 4 'gravillon n°2
                With Gravillon.Item(1)
                    'Identification
                    lblIdentification.Text = "Identification Gravillon n°2 : " & .NomGravillon
                    Lblmf.Visible = False
                    LblQualité.Visible = False
                    F_d = .dg.ToString("#0") : F_Dm = .Dmg.ToString("#0")
                End With
                LblTfines.Visible = False
        End Select

        LblClasse.Text = "Classe granulaire : " & F_d & "/" & F_Dm
    End Sub
End Class