Acquista i nostri libri consigliati su Amazon.it
+ Rispondi al messaggio
Pagina 1 di 2 12 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13

Maschera Continua : colori alternati e form. condizionale con sfondo trasparente

  1. #1
    L'avatar di Max.Riservo
    Max.Riservo non è in linea Scribacchino
    In una maschera continua vorrei poter evidenziare dei records che soddisfano dei criteri mantenendo però anche l'alternanza dei colori della sezione corpo .
    Per evidenziare i records che soddisfano dei criteri ho inserito una TextBox (unbound) che copre tutto il corpo della maschera continua. La Txt è posizionata sotto i vari controlli e tramite formattazione condizionale assume il colore di sfondo Rosso quando si avvera la condizione.

    Il meccanismo di evidenziazione dei records funziona però, sembra non sia possibile, gestire la trasparenza dello sfondo della Txt.
    Ovvero se imposto il backcolorstyle della Txt come trasparente, l'alternanza dei colori funziona ma l'evidenziazione dei records è visibile SOLO sul record corrente.
    Per contro se imposto il backcolorstyle della Txt come continuo, l'alternanza dei colori pur funzionando risulta NON visibile perché coperta dalla TxtBox (non trasparente). L'evidenziazione dei records, in questo caso diventa visibile su tutti i records interessati.

    A livello di formattazione condizionale pare NON sia possibile impostare come colore di sfondo la trasparenza quindi sembra che non ci sia una soluzione (semplice) al problema (almeno le mie ricerche non hanno portato a trovare una soluzione).

    EDIT : A2013 - 32b
    Ultima modifica di Max.Riservo; 24-05-2021 17:29 

  2. #2
    L'avatar di @Alex
    @Alex non è in linea Moderatore Globale
    Si hai detto bene... non puoi impostare la trasparenza della textbox se attivi la F.C. ed ovviamente se attivi l'alternanza ovviamente non puoi switchare il backxolor.
    Nessuna soluzione.
    ℹ️ Leggi di più su @Alex ...

  3. #3
    L'avatar di Max.Riservo
    Max.Riservo non è in linea Scribacchino
    Quote Originariamente inviato da @Alex Visualizza il messaggio
    Si hai detto bene... non puoi impostare la trasparenza della textbox se attivi la F.C. ed ovviamente se attivi l'alternanza ovviamente non puoi switchare il backxolor.
    Nessuna soluzione.
    Speravo in qualche tuo trucchetto ...

    Alla fine credo di averlo trovato, il trucchetto.
    Ho provato ad usare l'evento paint (che non conoscevo) e sembra funzionare persino senza l'ausilio del Txt con formattazione condizionale.

    
    Private Sub Corpo_Paint()
    Dim lBk         As Long
    Dim lBkAlt      As Long
        
        On Error Resume Next
        
        lBk = Forms(Me.Parent.Name).mFMR.FMBackColor
        lBkAlt = Forms(Me.Parent.Name).mFMR.FMBackColorAlt
        
        If Nz(Me.ISRT_Progress, 0) Then
            'condizione di errore
            Me.Corpo.BackColor = vbRed
            Me.Corpo.AlternateBackColor = vbRed
        Else
            Me.Corpo.BackColor = lBk
            Me.Corpo.AlternateBackColor = lBkAlt
        End If
    End Sub
    
    Il mio applicativo è discretamente complesso comunque provo a spiegare il codice.

    Ho una maschera singola che contiene una sottomaschera continua.
    Il backcolor e il backcoloralt della maschera continua sono impostati nell'evento Load della maschera singola e sono memorizzati in una classe public creata sempre nella maschera singola.
    Per evitare che scattino prima gli eventi della maschera continua rispetto a quelli della maschera singola, i recordsource delle maschere (e relativi linkedchild) vengono impostati nell'evento Load (comunque dopo l'impostazione del backcolor/backcoloralt) della maschera singola.

    Nella maschera continua, nell'evento Corpo_Paint :
    - ricavo il backcolor e il backcoloralt della maschera continua (precedentemente memorizzati nella classe instanziata dalla maschera singola)
    - se ho la condizione che deve evidenziare il record di Rosso (era la condizione usata per attivare la formattazione condizionale del Txt - ora rimosso) imposto il backcolor e il backcolor a Rosso
    - se non ho la condizione ripristino il colore memorizzato

    Alcune considerazioni :
    - devo utilizzare on error resume next in quanto alla chiusura del form singolo, probabilmente per come ho gestito io tutto il sistema, la condizione che attiva il cambio di colore che poi è un campo del record, non viene trovata. Forse indagando meglio riesco ad eliminare quest'effetto indesiderato.
    - non sono in grado di sapere su quale riga mi trovo rispetto al backcolor/backcoloralt, perciò setto/resetto entrambe le proprietà (e il sistema incredibilmente funziona)

    Devo ancora analizzare l'impatto prestazionale dell'evento Paint ma il tutto sembra molto promettente.

  4. #4
    L'avatar di Max.Riservo
    Max.Riservo non è in linea Scribacchino
    Nome:   AltBackColor.jpg
Visite:  43
Grandezza:  81.0 KB
    Questo è il risultato ... al momento non riscontro anomalie.

  5. #5
    L'avatar di @Alex
    @Alex non è in linea Moderatore Globale
    La tecnica è chiarissuma, non ci ho mai pensato... e la trovo un'idea notevole.
    Riflettendoci... è come subclassare il messaggio di WMPaint che si faceva con A97 per emulare la F.C. che allora non esisteva...
    Vorrei fare un'esperimento di velocità, quindi di verifica flickering con più condizioni scrollando la ScrollBar...
    Endress+Hauser mi pare di capire
    ℹ️ Leggi di più su @Alex ...

  6. #6
    L'avatar di Max.Riservo
    Max.Riservo non è in linea Scribacchino
    Quote Originariamente inviato da @Alex Visualizza il messaggio
    La tecnica è chiarissuma, non ci ho mai pensato... e la trovo un'idea notevole.
    Riflettendoci... è come subclassare il messaggio di WMPaint che si faceva con A97 per emulare la F.C. che allora non esisteva...
    Confesso che prima di postare ho cercato in molti forum senza trovare alcunché di significativamente diverso da quello che già facevo. Avevo anche valutato di subclassare qualcosa (non sapendo esattamente cosa) ma senza grande convizione. La tua risposta mi aveva quasi convinto a desistere se non che ho trovato un tizio che nominava l'evento paint ... la curiosità ha fatto il resto.

    Quote Originariamente inviato da @Alex Visualizza il messaggio
    Vorrei fare un'esperimento di velocità, quindi di verifica flickering con più condizioni scrollando la ScrollBar...
    Le mie prove sono soddisfacenti con 7-8 records (indicativamente tutti quelli visualizzabili nella maschera). Anche aumentando il numero di records non credo che ci sarebbe un degrado delle significativo delle prestazioni.

    Quote Originariamente inviato da @Alex Visualizza il messaggio
    Endress+Hauser mi pare di capire
    Colpito !
    Probabilmente, in questo forum, sei uno dei pochi che può conoscere la sigla E+H

  7. #7
    L'avatar di @Alex
    @Alex non è in linea Moderatore Globale
    Ho fatto un piccolo test... e funziona veramente molto bene, ma non solo sul Corpo... ma anche sui singoli controlli, ed a mi avviso, almeno per quello che ho potuto testare, l'effetto che genera la F.C. ovvero che non viene gestita fino al Rilascio della ScrollBar non esiste... quindi è meglio.

    Aggiungo, che forse non serve andare a definire la proprietà [Me.Corpo.AlternateBackColor]... in quanto su Paint gestisci sempre il BackColor del disegnato... quindi il tuo codice potrebbe essere semplificato così
       If Nz(Me.ISRT_Progress, 0) Then
            'condizione di errore
            Me.Corpo.BackColor = vbRed
        Else
            Me.Corpo.BackColor = lBk
        End If
    
    ℹ️ Leggi di più su @Alex ...

  8. #8
    L'avatar di Max.Riservo
    Max.Riservo non è in linea Scribacchino
    Quote Originariamente inviato da @Alex Visualizza il messaggio
    Aggiungo, che forse non serve andare a definire la proprietà [Me.Corpo.AlternateBackColor]... in quanto su Paint gestisci sempre il BackColor del disegnato... quindi il tuo codice potrebbe essere semplificato così
    In realtà serve perché se il record da evidenziare si trova nell'AlternateBackColor e la proprietà non viene cambiata l'evidenziazione non si attiva.
    Comunque mi ha stupito positivamente il fatto che agendo contemporaneamente sulle due proprietà il tutto funzioni. Di primo acchito avrei detto che sarebbe stato necessario identificare se agire sul backcolor o sull'alternatebackcolor in funzione del colore di sfondo della riga (riferita al record) su cui agire e se cosi fosse stato sarebbe stato un delirio far funzionare il meccanismo ...

  9. #9
    L'avatar di @Alex
    @Alex non è in linea Moderatore Globale
    Scusa Max... ma la If che controlla NZ(...) o è verificata oppure no... quindi ha 2 opzioni.
    In una colora rosso nell'altra blu... quale sarebbe la condizione in cui non applica un colore all'attuale backcolor...?
    Io ho provato e nel mio esempio non ha alcun effetto... però siccome ti conosco, mi deve scappare qualche cosa.

    Non serve controllare nulla perché funziona come l'evento Current, ovvero quando viene generato è relativo al record attuale... ed è per questo che insisto sulla questione alternatebckColor... ;-)
    ℹ️ Leggi di più su @Alex ...

  10. #10
    L'avatar di Max.Riservo
    Max.Riservo non è in linea Scribacchino
    Quote Originariamente inviato da @Alex Visualizza il messaggio
    Scusa Max... ma la If che controlla NZ(...) o è verificata oppure no... quindi ha 2 opzioni.
    In una colora rosso nell'altra blu... quale sarebbe la condizione in cui non applica un colore all'attuale backcolor...?
    Io ho provato e nel mio esempio non ha alcun effetto... però siccome ti conosco, mi deve scappare qualche cosa.
    Probabilmente nello screen che ho allegato non si nota bene ma io uso il blu e l'azzurro (backcolor e alternatebackcolor) e poi voglio evidenziare di rosso i record incriminati ...

+ Rispondi al messaggio
Pagina 1 di 2 12 ultimoultimo

Potrebbero interessarti anche ...

  1. Colorare Righe con Colori Alternati usando il VBA
    Da A.Maurizio nel forum Microsoft Excel
    Risposte: 7
    Ultimo Post: 24-01-2018, 20:28
  2. [ACCESS] Formattazione Colori Maschera Continua
    Da gecko nel forum Microsoft Access
    Risposte: 1
    Ultimo Post: 07-12-2012, 07:50
  3. VB 2010 - Sfondo Form trasparente
    Da imbranato nel forum Visual Basic .Net
    Risposte: 2
    Ultimo Post: 04-12-2012, 10:22
  4. Colore Sfondo maschera trasparente
    Da albeggio nel forum Microsoft Access
    Risposte: 5
    Ultimo Post: 23-04-2012, 19:24
  5. VB6 - Grid con colori alternati
    Da gaprisco nel forum Visual Basic 6
    Risposte: 8
    Ultimo Post: 07-02-2008, 18:15