Discussione:
formattazione controlli in sottomaschera continua
(troppo vecchio per rispondere)
Giuseppe
2024-06-12 08:07:22 UTC
Permalink
Buongiorno a tutti.
Nelle mie sottomaschere su evento corrente utilizzo il seguente codice
per mettere in grassetto e colorare il record attivo:
Private Sub Form_Current()
Dim ctl As control
For Each ctl In Me.Controls
Select Case ctl.ControlType
Case acTextBox, acComboBox, acListBox
With ctl
.FormatConditions.Delete
.FormatConditions.Add acExpression, acEqual,
"IdDipendenteAnticipazione=" & Me!IdDipendenteAnticipazione
.FormatConditions(0).FontBold = True
.FormatConditions(0).ForeColor = 16711680
End With
End Select
Next ctl
End Sub

Tutto ok.
Però nel piè di pagina della sottomaschera ho tre controlli:
1) totale dei valori del controllo txtDare della sottomaschera;
2) totale dei valori del controllo txtAvere della sottomaschera;
3) differenza tra TotaleDare e TotaleAvere.
Il controllo txtAvere e il controllo txtSaldo, se negativo, devono avere
il font di colore rosso.
Ho provato sia con la formattazione condizionale che aggiungendo alla
routine dopo Next ctl il seguente codice
If Me.txtTotaleAvere > 0 Then
Me.txtTotaleAvere.ForeColor = vbRed
End If
If Me.txtSaldo < 0 Then
Me.txtSaldo.ForeColor = vbRed
End If

I due controlli restano sempre blu, ho notato che se mi sposto su
un'altro record con il click del mouse, diventano rossi fino a quando
non lo rilascio; se lo rilascio immediatamente quasi non mi accorgo del
cambio del colore.
Come faccio a staccare dal codice la formattazione dei controlli del piè
di pagina?
Grazie
Giuseppe
--
Questa email è stata esaminata alla ricerca di virus dal software antivirus AVG.
www.avg.com
BFS
2024-06-12 08:14:23 UTC
Permalink
Post by Giuseppe
Buongiorno a tutti.
Nelle mie sottomaschere su evento corrente utilizzo il seguente codice
Private Sub Form_Current()
Dim ctl As control
    For Each ctl In Me.Controls
        Select Case ctl.ControlType
            Case acTextBox, acComboBox, acListBox
            With ctl
                .FormatConditions.Delete
                .FormatConditions.Add acExpression, acEqual,
"IdDipendenteAnticipazione=" & Me!IdDipendenteAnticipazione
                .FormatConditions(0).FontBold = True
                .FormatConditions(0).ForeColor = 16711680
            End With
        End Select
    Next ctl
End Sub
Tutto ok.
1) totale dei valori del controllo txtDare della sottomaschera;
2) totale dei valori del controllo txtAvere della sottomaschera;
3) differenza tra TotaleDare e TotaleAvere.
Il controllo txtAvere e il controllo txtSaldo, se negativo, devono avere
il font di colore rosso.
Ho provato sia con la formattazione condizionale che aggiungendo alla
routine dopo Next ctl il seguente codice
    If Me.txtTotaleAvere > 0 Then
        Me.txtTotaleAvere.ForeColor = vbRed
    End If
    If Me.txtSaldo < 0 Then
        Me.txtSaldo.ForeColor = vbRed
    End If
I due controlli restano sempre blu, ho notato che se mi sposto su
un'altro record con il click del mouse, diventano rossi fino a quando
non lo rilascio; se lo rilascio immediatamente quasi non mi accorgo del
cambio del colore.
Come faccio a staccare dal codice la formattazione dei controlli del piè
di pagina?
Grazie
Giuseppe
prova a impostare sui tre controlli la proprieta TAG
metti esempio "piede" e sfruttala per escludere i tre controlli da quel
for each ctl

modifica il tuo codice cosi:

Private Sub Form_Current()
Dim ctl As control
For Each ctl In Me.Controls
Select Case ctl.ControlType
Case acTextBox, acComboBox, acListBox
With ctl
if .tag="piede" then

'applica qui la formattazione che vuoi usare per quei tre campi
else
.FormatConditions.Delete
.FormatConditions.Add acExpression, acEqual,
"IdDipendenteAnticipazione=" & Me!IdDipendenteAnticipazione
.FormatConditions(0).FontBold = True
.FormatConditions(0).ForeColor = 16711680

end if
End With
End Select

Next ctl
End Sub


BFS
Giuseppe
2024-06-26 10:08:32 UTC
Permalink
Post by BFS
Post by Giuseppe
Buongiorno a tutti.
Nelle mie sottomaschere su evento corrente utilizzo il seguente codice
Private Sub Form_Current()
Dim ctl As control
     For Each ctl In Me.Controls
         Select Case ctl.ControlType
             Case acTextBox, acComboBox, acListBox
             With ctl
                 .FormatConditions.Delete
                 .FormatConditions.Add acExpression, acEqual,
"IdDipendenteAnticipazione=" & Me!IdDipendenteAnticipazione
                 .FormatConditions(0).FontBold = True
                 .FormatConditions(0).ForeColor = 16711680
             End With
         End Select
     Next ctl
End Sub
Tutto ok.
1) totale dei valori del controllo txtDare della sottomaschera;
2) totale dei valori del controllo txtAvere della sottomaschera;
3) differenza tra TotaleDare e TotaleAvere.
Il controllo txtAvere e il controllo txtSaldo, se negativo, devono
avere il font di colore rosso.
Ho provato sia con la formattazione condizionale che aggiungendo alla
routine dopo Next ctl il seguente codice
     If Me.txtTotaleAvere > 0 Then
         Me.txtTotaleAvere.ForeColor = vbRed
     End If
     If Me.txtSaldo < 0 Then
         Me.txtSaldo.ForeColor = vbRed
     End If
I due controlli restano sempre blu, ho notato che se mi sposto su
un'altro record con il click del mouse, diventano rossi fino a quando
non lo rilascio; se lo rilascio immediatamente quasi non mi accorgo
del cambio del colore.
Come faccio a staccare dal codice la formattazione dei controlli del
piè di pagina?
Grazie
Giuseppe
prova a impostare sui tre controlli la proprieta TAG
metti esempio "piede" e sfruttala per escludere i tre controlli da quel
for each ctl
Private Sub Form_Current()
Dim ctl As control
    For Each ctl In Me.Controls
        Select Case ctl.ControlType
            Case acTextBox, acComboBox, acListBox
            With ctl
        if .tag="piede" then
    'applica qui la formattazione che vuoi usare per quei tre campi
else
                .FormatConditions.Delete
                .FormatConditions.Add acExpression, acEqual,
"IdDipendenteAnticipazione=" & Me!IdDipendenteAnticipazione
                .FormatConditions(0).FontBold = True
                .FormatConditions(0).ForeColor = 16711680
        end if
            End With
        End Select
    Next ctl
End Sub
BFS
Grazie Fabio.
Ho applicato il tuo suggerimento ma come avviene con la mia prima
soluzione, se procedo passo a passo con il debug il colore del testo
resta rosso, senza torna blu.

Giuseppe
--
Questa email è stata esaminata alla ricerca di virus dal software antivirus AVG.
www.avg.com
Giuseppe
2024-06-26 10:09:15 UTC
Permalink
Post by BFS
Post by Giuseppe
Buongiorno a tutti.
Nelle mie sottomaschere su evento corrente utilizzo il seguente codice
Private Sub Form_Current()
Dim ctl As control
     For Each ctl In Me.Controls
         Select Case ctl.ControlType
             Case acTextBox, acComboBox, acListBox
             With ctl
                 .FormatConditions.Delete
                 .FormatConditions.Add acExpression, acEqual,
"IdDipendenteAnticipazione=" & Me!IdDipendenteAnticipazione
                 .FormatConditions(0).FontBold = True
                 .FormatConditions(0).ForeColor = 16711680
             End With
         End Select
     Next ctl
End Sub
Tutto ok.
1) totale dei valori del controllo txtDare della sottomaschera;
2) totale dei valori del controllo txtAvere della sottomaschera;
3) differenza tra TotaleDare e TotaleAvere.
Il controllo txtAvere e il controllo txtSaldo, se negativo, devono
avere il font di colore rosso.
Ho provato sia con la formattazione condizionale che aggiungendo alla
routine dopo Next ctl il seguente codice
     If Me.txtTotaleAvere > 0 Then
         Me.txtTotaleAvere.ForeColor = vbRed
     End If
     If Me.txtSaldo < 0 Then
         Me.txtSaldo.ForeColor = vbRed
     End If
I due controlli restano sempre blu, ho notato che se mi sposto su
un'altro record con il click del mouse, diventano rossi fino a quando
non lo rilascio; se lo rilascio immediatamente quasi non mi accorgo
del cambio del colore.
Come faccio a staccare dal codice la formattazione dei controlli del
piè di pagina?
Grazie
Giuseppe
prova a impostare sui tre controlli la proprieta TAG
metti esempio "piede" e sfruttala per escludere i tre controlli da quel
for each ctl
Private Sub Form_Current()
Dim ctl As control
    For Each ctl In Me.Controls
        Select Case ctl.ControlType
            Case acTextBox, acComboBox, acListBox
            With ctl
        if .tag="piede" then
    'applica qui la formattazione che vuoi usare per quei tre campi
else
                .FormatConditions.Delete
                .FormatConditions.Add acExpression, acEqual,
"IdDipendenteAnticipazione=" & Me!IdDipendenteAnticipazione
                .FormatConditions(0).FontBold = True
                .FormatConditions(0).ForeColor = 16711680
        end if
            End With
        End Select
    Next ctl
End Sub
BFS
Grazie Fabio.
Ho applicato il tuo suggerimento ma come avviene con la mia prima
soluzione, se procedo passo a passo con il debug il colore del testo
resta rosso, senza torna blu.

Giuseppe
--
Questa email è stata esaminata alla ricerca di virus dal software antivirus AVG.
www.avg.com
Continua a leggere su narkive:
Loading...