Buongiorno,
ho scritto una funzione che inserita in eventi AfterUpdate di alcuni controllidovrebbe formattarli in maniera da evidenzioare all'utente i campi da compilare. Si tratta di textbox, listbox e combobox:
Public Function format_campo(ctrl As Access.Control)
Dim i As Integer
With ctrl
Select Case .ControlType
Case acListBox, acComboBox
list_empty ctrl
For i = 0 To ctrl.ListCount - 1
If .Selected(i) = True Then
list_noempty ctrl
Exit For
End If
Next
Case acTextBox
If Len(.Text & vbNullString) = 0 Then
txt_empty ctrl
Else
txt_noempty ctrl
End If
End Select
End With
End Function
dove al loro volta le funzioni richiamate sono:
Public Function txt_empty(ctrl As Access.TextBox)
With ctrl
.SpecialEffect = 0 ' aspetto bordo: piatto 0,rilievo 1, incassato 2
.BorderWidth = 1 ' spessore bordo
.BorderColor = rosso ' colore bordo
.ForeColor = rosso
End With
change_color = True
End Function
Public Function txt_noempty(ctrl As Access.TextBox)
With ctrl
.SpecialEffect = 2 ' aspetto bordo: piatto 0,rilievo 1, incassato 2
.BorderWidth = 1 ' spessore bordo
.BorderColor = g_chiaro ' colore bordo
.ForeColor = vbBlack
End With
change_color = False
End Function
Public Function list_empty(ctrl As Access.Control)
With ctrl
Select Case .ControlType
Case acListBox, acComboBox
.SpecialEffect = 0 ' aspetto bordo: piatto 0,rilievo 1, incassato 2
.BorderWidth = 1 ' spessore bordo
.BorderColor = rosso ' colore bordo
End Select
End With
End Function
Public Function list_noempty(ctrl As Access.Control)
With ctrl
Select Case .ControlType
Case acListBox, acComboBox
.SpecialEffect = 2 ' aspetto bordo: piatto 0,rilievo 1, incassato 2
.BorderWidth = 1 ' spessore bordo
.BorderColor = g_chiaro ' colore bordo
End Select
End With
End Function
poi vengono richiamate invocando la funzione format_campo me.nomecontrollo negli eventi AfterUpdate.
il comportamento però è un pò anomalo per i controlli listbox e combobox, nel senso che la proprietà dei campi non varia se cè o meno al sezione di un campo nelle listbox o combobox.
Grazie.