Ciao a tutti,
ho provato a inserire l'istruzione che mi ha scritto (ALex) ma non mi funziona.
Per meglio far comprendere la logica del programma riporto l'XML, la procedura “enebled” e le procedure delle due form associate ai pulsanti.
Ho semplificato l'XML che apre due gruppi e ogni gruppo ha un solo pulsante per fare le prove:
<?xml version="1.0" encoding="utf-8"?>
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui" onLoad="fncRibbon" loadImage="fncLoadImage">
<ribbon startFromScratch="false">
<tabs>
<tab id="Materiali" label="Anagrafica">
<group id="Group6" label="BUSINESS PARKS">
<button id="Bparksx"
label="Inserisci"
tag="A0000_B_Park"
onAction="ribOpenFormbpark"
getEnabled="ControlEnabled"
size="large"
image="albero.png"
supertip="Inserisci business Parks" />
</group>
<group id="Group7" label="GRUPPO">
<button id="Gruppox"
label="Inserisci"
tag="E0000_Property_gruppo"
onAction="ribOpenFormgruppo"
getEnabled="ControlEnabled"
size="large"
image="gruppo.png"
supertip="Inserisci gruppo" />
</group>
</tab>
</tabs>
</ribbon>
</customUI>
Le istruzione onActionvaproni i due form (a seconda del pulsante premuto) che sono “RibOpenFormbpark” e ribOpenFormgruppo.
Quando devo poi disabilitare i due pulsanti riesco solo a farlo agendo sui singoli controlli. La variabile visibilita (variabile pubblica di tipo byte non boolean assume 0 oppure 1 a rispettivamente per enable=true e enable=false.
Public Sub ControlEnabled(control As IRibbonControl, ByRef enabled)
Dim pulsanti() As Variant
Dim contatorei As Byte
pulsanti = Array("Gruppox", "Bparksx")
For contatorei = 0 To 1
If visibilita = 1 Then
If control.Id = pulsanti(contatorei) Then enabled = False
End If
If visibilita = 0 Then
If control.Id = pulsanti(contatorei) Then enabled = True
End If
Next contatorei
End Sub
Gli eventi assoiciati ai due form sono semplici e sono:
RibOpenFormbpark:
Private Sub Comando42a_Click()
Dim z As String
z = "SELECT ID_BPark,Nome,Localita,Indirizzo,Numeri_lotto FROM A0000_B_Park WHERE ID_BPark = " & txt_Carica_bp.Value & ";"
Form_A0000_B_Park.RecordSource = z
Form_A0000_B_Park.Requery
z = txt_Carica_bp
txt_Carica_bp = ""
If CasellaControllo43a.Value = -1 Then
DoCmd.SetWarnings False
DoCmd.RunSQL "INSERT INTO A0000_B_Park SELECT A0000_B_Park.* FROM A0000_B_Park WHERE (([A0000_B_Park]![ID_BPark]= " & z & "));"
DoCmd.RunCommand acCmdDeleteRecord
DoCmd.SetWarnings True
End If
End Sub
Private Sub Comandobp_Click()
Dim stringaSQL2 As String
If IsNull(Me.txt_Ricerca_bp) = False Then variabile = "*" & Me.txt_Ricerca_bp & "*" Else variabile = ""
stringaSQL2 = "SELECT A0000_B_Park.[ID_BPark], A0000_B_Park.[Nome], A0000_B_Park.[Localita], A0000_B_Park.[Indirizzo] FROM A0000_B_Park WHERE A0000_B_Park.[Nome] LiKE '" & variabile & "';"
Lista1.ColumnCount = 4
Lista1.ColumnWidths = "0,5in.;2in.;3in.;2in."
Lista1.RowSourceType = "Table/Query"
Lista1.RowSource = stringaSQL2
End Sub
Private Sub Form_Load()
visibilita = 1
objRibbon.Invalidate
End Sub
Private Sub Form_Close()
visibilita = 0
objRibbon.Invalidate
End Sub
mentre l' altro pulsante e'
ribOpenFormgruppo:
Private Sub Form_Load()
visibilita = 1
objRibbon.Invalidate
End Sub
Private Sub Form_Close()
visibilita = 0
objRibbon.Invalidate
End Sub
Private Sub Comando42a_Click()
Dim z As String
z = "SELECT ID_Gruppo, Gruppo FROM E0000_Property_gruppo WHERE ID_Gruppo = " & txt_Carica_bp.Value & ";"
Form_E0000_Property_gruppo.RecordSource = z
Form_E0000_Property_gruppo.Requery
z = txt_Carica_bp
txt_Carica_bp = ""
If CasellaControllo43a.Value = -1 Then
DoCmd.SetWarnings False
DoCmd.RunSQL "INSERT INTO E0000_Property_gruppo SELECT E0000_Property_gruppo.* FROM E0000_Property_gruppo WHERE (([E0000_Property_gruppo]![ID_Gruppo]= " & z & "));"
DoCmd.RunCommand acCmdDeleteRecord
DoCmd.SetWarnings True
End If
End Sub
Private Sub Comandobp_Click()
Dim stringaSQL2 As String
If IsNull(Me.txt_Ricerca_bp) = False Then variabile = "*" & Me.txt_Ricerca_bp & "*" Else variabile = ""
stringaSQL2 = "SELECT E0000_Property_gruppo.[ID_Gruppo], E0000_Property_gruppo.[Gruppo] FROM E0000_Property_gruppo WHERE E0000_Property_gruppo.[Gruppo] LiKE '" & variabile & "';"
Lista1.ColumnCount = 2
Lista1.ColumnWidths = "0,5in.;2in."
Lista1.RowSourceType = "Table/Query"
Lista1.RowSource = stringaSQL2
End Sub
Le istruzioni associate agli eventi load e close fanno cambiare la variabile visibilita.
Il comando che mi ha suggerito Alex non riesco a farlo funzionare anche perchè la variabile era visibilita (byte) e non “chiusura” (string).
Attenzione la mia non è una critica era solo per vedere se ne vengo a capo.
Grazie ancora per l'attenzione