codice:
Sub BarrePersonalizzate(NomeBarra As String, swNasVis As Boolean, _
swEnb As Boolean, FogliAb As String, _
arrBottoni() As Variant, BotFogli As String, Cartella As String, _
Optional swNewDisp As Boolean, Optional swNewVis As Boolean)
' se FogliAb="" significa da applicare a tutti i fogli
' in caso nomebarra = FB,SB usare swNasVis per la FormulaBar e swEnb per la StatusBar
Dim swBar As Integer, swTool As Boolean
On Error GoTo ErrH
If ControllaOggetto = True Then Exit Sub
swBar = -1
If NomeBarra = "FB,SB" Then
For i = 0 To UBound(barre.barra)
If barre.barra(i).Nome = NomeBarra Then
barre.barra(i).VisibileProgramma = swNasVis
barre.barra(i).DispProgramma = swEnb
If Len(Trim(FogliAb)) > 0 Then
Call AggFogBott(i, FogliAb, BotFogli, False)
Else
ReDim Preserve barre.barra(UBound(barre.barra)).FoglioAttivo(0)
barre.barra(UBound(barre.barra)).FoglioAttivo(0).NomeFoglio = ""
End If
GoTo VisNasCB
End If
Next
End If
If CBDoesExist(NomeBarra) = False Then
Call CreaBarra(NomeBarra, arrBottoni(), "Crea")
Else
For i = 0 To UBound(barre.barra)
If barre.barra(i).Nome = NomeBarra Then
swBar = i
Exit For
End If
Next
If arrBottoni(0) <> "" Then Call CreaBarra(NomeBarra, arrBottoni(), "Verifica")
End If
If swBar >= 0 Then
Call AggFogBott(swBar, FogliAb, BotFogli, True)
If swNasVis <> barre.barra(swBar).VisibileProgramma Or barre.barra(swBar).DispProgramma <> swEnb Then
barre.barra(swBar).VisibileProgramma = swNasVis
barre.barra(swBar).DispProgramma = swEnb
swTool = CBToolbarShow(NomeBarra, swNasVis, swEnb)
End If
barre.barra(swBar).CartellaAttiva = Cartella
Else
ReDim Preserve barre.barra(UBound(barre.barra) + 1)
barre.barra(UBound(barre.barra)).Nome = NomeBarra
If IsMissing(swNewDisp) Then swNewDisp = False
If IsMissing(swNewVis) Then swNewVis = False
barre.barra(UBound(barre.barra)).Disponibile = swNewDisp
barre.barra(UBound(barre.barra)).Visibile = swNewVis
Call AggFogBott(UBound(barre.barra), FogliAb, BotFogli, True)
barre.barra(UBound(barre.barra)).VisibileProgramma = swNasVis
barre.barra(UBound(barre.barra)).DispProgramma = swEnb
barre.barra(UBound(barre.barra)).CartellaAttiva = Cartella
End If
If Tienne.Normalizzato = True Then Tienne.Normalizzato = False
VisNasCB:
On Error GoTo 0
Exit Sub
ErrH:
Call Errore("BarrePersonalizzate", Err.Description, Err.Number)
End Sub
Sub AggFogBott(posBarra As Integer, Fogli, Bottoni, swBottoni)
Dim arrBottoni As Variant, arrFogli As Variant, posFoglio As Integer, swFoglioCe, strFogliCe As String * 1
On Error GoTo ErrH
If Len(Trim(Fogli)) > 0 Then
arrFogli = Split(Fogli, ",")
strFogliCe = "x"
Else
strFogliCe = ""
End If
If Len(Trim(strFogliCe)) = 0 Then
ReDim Preserve barre.barra(posBarra).FoglioAttivo(0)
posFoglio = 0
barre.barra(posBarra).FoglioAttivo(posFoglio).NomeFoglio = ""
barre.barra(posBarra).FoglioAttivo(posFoglio).CeBottoni = False
If swBottoni = True Then Call AggBottoni(posBarra, Bottoni, posFoglio)
Else
i = 0
Do While Not i > UBound(arrFogli)
If i = 0 Then
ReDim Preserve barre.barra(posBarra).FoglioAttivo(0)
posFoglio = 0
Else
If VerPosFoglio(arrFogli(i), posBarra) = -1 Then
posFoglio = UBound(barre.barra(posBarra).FoglioAttivo)
ReDim Preserve barre.barra(posBarra).FoglioAttivo(posFoglio + 1)
posFoglio = UBound(barre.barra(posBarra).FoglioAttivo)
End If
End If
barre.barra(posBarra).FoglioAttivo(posFoglio).NomeFoglio = Trim(arrFogli(i))
barre.barra(posBarra).FoglioAttivo(posFoglio).CeBottoni = False
If swBottoni = True Then Call AggBottoni(posBarra, Bottoni, posFoglio)
i = i + 1
Loop
End If
Exit Sub
ErrH:
Call Errore("AggFogBott", Err.Description, Err.Number)
End Sub
Function VerPosFoglio(NomeFoglio, posBarra) As Integer
On Error GoTo ErrH
VerPosFoglio = -1
For k = 0 To UBound(barre.barra(posBarra).FoglioAttivo)
If barre.barra(posBarra).FoglioAttivo(k).NomeFoglio = NomeFoglio Then
VerPosFoglio = k
Exit For
End If
Next
Exit Function
ErrH:
Call Errore("VerPosFoglio", Err.Description, Err.Number)
End Function
Sub AggBottoni(posBarra As Integer, Bottoni, nFoglio)
Dim qstFoglio, arrBottoni As Variant, z, arrVisDisp As Variant, x
On Error GoTo ErrH
If Len(Trim(Bottoni)) > 0 Then
arrBottoni = Split(Bottoni, ",")
If UBound(arrBottoni) > -1 Then
arrVisDisp = Split(arrBottoni(0), ";")
If UBound(arrVisDisp) > -1 Then
With barre.barra(posBarra).FoglioAttivo(nFoglio)
ReDim Preserve .Bottoni(UBound(arrVisDisp))
For x = 0 To UBound(arrVisDisp)
Select Case arrVisDisp(x)
Case "0"
.Bottoni(x).Disponibile = False
.Bottoni(x).Visibile = False
Case "1"
.Bottoni(x).Disponibile = False
.Bottoni(x).Visibile = True
Case "2"
.Bottoni(x).Disponibile = True
.Bottoni(x).Visibile = False
Case "3"
.Bottoni(x).Disponibile = True
.Bottoni(x).Visibile = True
End Select
.Bottoni(x).Discriminato = True
Next
.CeBottoni = True
End With
End If
Bottoni = Replace(Bottoni, arrBottoni(0) & ",", "")
End If
Else
With barre.barra(posBarra).FoglioAttivo(nFoglio)
ReDim Preserve .Bottoni(0)
.Bottoni(0).Disponibile = True
.Bottoni(0).Visibile = True
.Bottoni(0).Discriminato = False
End With
End If
Exit Sub
ErrH:
Call Errore("AggBottoni", Err.Description, Err.Number)
End Sub