Proprietà tag.

di il
6 risposte

Proprietà tag.

Buonasera,
se all'interno di una maschera sono presenti ad esempio due gruppi di controlli che differiscono tra loro per il valore della proprietà tag assegnata, come faccio a differenziare il rispettivo comportamento? Ad esempio avendo avendo a disposizione due gruppi di controllo di cui un gruppo contrassegnato con tag=campo1 ed un altro gruppo con tag=campo2 e voglio che soltanto il gruppo con tag=campo1 debba assumere la proprietà backcolor=vbRed qualora tutti i controlli della maschera assumono valore null.
Spero di essere stato chiaro.
Grazie.

6 Risposte

  • Re: Proprietà tag.

    Considerato che devi fare un po' di prove, proverei a mettere in campo l'evento "Su corrente" tale che deve verificarsi con "tutti Null" nei tuoi campi.
    tag=campo1 significa "campo1" o il valore dentro [campo1]?
    Però devi provare a buttare giù tu qualcosa.
  • Re: Proprietà tag.

    Faccio un esempio, ovviamente non corretto ma rende bene quello che intendo, credo:
    Dim ctrl As control
    
            For Each ctrl In Form_SM_Specifiche.Controls
               If ctrl.Tag = "Campo1"= VbNullString Then
                   With ctrl
                   .BackColor = vbRed
                   End With
               End If 
    
               If ctrl.Tag = "Campo2"= VbNullString Then
                     With ctrl
                     .BackColor = VbBlue
                    End With
                End If
            Next
            Set ctrl = Nothing
  • Re: Proprietà tag.

    Il codice che proponi non è sbagliato in assoluto, certo continene errori strani, e sicuramente non è ottimizzato nel Confronto, visto che la Proprietà TAG quando la riconosci non necessita di essere confrontata anche per gli altri valori, scriverei una cosa simile
    
    Dim ctrl As Access.control
    For Each ctrl In Form_SM_Specifiche.Controls
        With ctrl
            If .Tag = "Campo1" Then
                   .BackColor = vbRed
            ElseIf .Tag = "Campo2" Then
                   .BackColor = VbBlue
            End If
        End With
    Next
    Set ctrl = Nothing
    Io preferisco usare il Select Case:
    
    Dim ctrl As Access.Control
    For Each ctrl In Form_SM_Specifiche.Controls
        With ctrl
            Select Case .Tag
                Case "Campo1":      .BackColor = vbRed
                Case "Campo2":      .BackColor = vbBlue
                Case Else:          .BackCoolor = vbWhite
            End Select
        End With
    Next
    Set ctrl = Nothing
    Next
    Set ctrl = Nothing[/code]
  • Re: Proprietà tag.

    Ma come faccio a differenziare il caso in cui i controlli con tag="Campo1" assumono valori null e gli altri no?
  • Re: Proprietà tag.

    Devi spiegare cosa vuoi fare dopo che hai discriminato il TAG... se, devi ulteriormente discriminare il fatto che non sono stati compilati... devi includere sia il NULL che il NULLSTRING... ed io farei così:
    
    Dim ctrl As Access.Control
    For Each ctrl In Form_SM_Specifiche.Controls
        With ctrl
            Select Case .Tag
                Case "Campo1":      
                    If Len(.Value & VbNullstring)=0 Then .BackColor = vbRed
                Case "Campo2": 
                    If Len(.Value & VbNullstring)=0 Then .BackColor = vbBlue
                Case Else:          .BackCoolor = vbWhite  ' questo potresti ometterlo...
            End Select
        End With
    Next
    Set ctrl = Nothing
  • Re: Proprietà tag.

    Ho indicato null per semplificare l'esempio, ma in realtà intendevo utilizzare la funzione Len nella maniera indicata. Il codice che hai scritto è l'approccio che mi serviva. Grazie.
Devi accedere o registrarti per scrivere nel forum
6 risposte