Impostare la proprietà .Width sull'evento "Su rigenerazione" nel corpo di una form

di il
10 risposte

Impostare la proprietà .Width sull'evento "Su rigenerazione" nel corpo di una form

E' possibile modificare da vba la proprietà .Width di un'etichetta dall'evento "Su rigenerazione" nel corpo di una Maschera di MsAccess?

Ho visto che si può modificare la proprietà .BackColor che in ogni riga può essere diverso, ma non la lunghezza di un campo.
Ho verificato in un Report e funziona.
Non ho trovato documentazione ne sul fatto che si possa fare, tanto meno del contrario.

Lo scopo è generare una barra che si colori e che adatti la sua lunghezza, così da illustrare anche graficamente i dati contenuti nei record.

Grazie in anticipo per l'aiuto.

10 Risposte

  • Re: Impostare la proprietà .Width sull'evento "Su rigenerazione" nel corpo di una form

    Shaul ha scritto:


    E' possibile modificare da vba la proprietà .Width di un'etichetta dall'evento "Su rigenerazione" nel corpo di una Maschera di MsAccess?

    Ho visto che si può modificare la proprietà .BackColor che in ogni riga può essere diverso, ma non la lunghezza di un campo.
    Ho verificato in un Report e funziona.
    Non ho trovato documentazione ne sul fatto che si possa fare, tanto meno del contrario.

    Lo scopo è generare una barra che si colori e che adatti la sua lunghezza, così da illustrare anche graficamente i dati contenuti nei record.

    Grazie in anticipo per l'aiuto.
    Parli di Maschere continue o Singole...?
    Nel primo caso non si può fare NULLA che non impatti su tutto il VISUALIZZATO, non puoi nemmeno modificare il BackColor... quindi direi di no, le maschere continue hanno un forte limite grafico, parzialmente gestibile con la Formattazione Condizionale, che però è tutt'altro di quello che dici.

    Nel secondo caso puoi fare quello che vuoi, infatti si usa proprio una LABEL per Emulare la ProgressBar e nel web ci sono milioni di esempi.

    Una soluzione potrebbe essere una TextBox associata con FONT "Windings", si crea un Campo Calcolato nella Query di origine che restituisca Tanti Caratteri "n" proporzionati a campo 0÷10 che poi è il tuo 100%...
    La cosa è semplice da fare...
  • Re: Impostare la proprietà .Width sull'evento "Su rigenerazione" nel corpo di una form

    @Alex ha scritto:


    Parli di Maschere continue o Singole...?
    Maschere continue, scusami.

    @Alex ha scritto:


    Nel primo caso non si può fare NULLA che non impatti su tutto il VISUALIZZATO, non puoi nemmeno modificare il BackColor... quindi direi di no, le maschere continue hanno un forte limite grafico, parzialmente gestibile con la Formattazione Condizionale, che però è tutt'altro di quello che dici.
    In realtà il colore degli oggetti li posso modificare. A me funziona... o forse non stiamo parlando della stessa cosa?
    Ad ogni riga riesco ad assegnare un colore diverso.
    Formattazione Condizionale...? Mi daresti qualche link?

    @Alex ha scritto:


    Nel secondo caso puoi fare quello che vuoi, infatti si usa proprio una LABEL per Emulare la ProgressBar e nel web ci sono milioni di esempi.
    Non ho capito però cosa intendi perdonami... intendi in un Report?

    @Alex ha scritto:


    Una soluzione potrebbe essere una TextBox associata con FONT "Windings", si crea un Campo Calcolato nella Query di origine che restituisca Tanti Caratteri "n" proporzionati a campo 0÷10 che poi è il tuo 100%...
    La cosa è semplice da fare...
    Fantastico, grazie!
    Non ci avevo pensato
  • Re: Impostare la proprietà .Width sull'evento "Su rigenerazione" nel corpo di una form

    @Alex ha scritto:


    ...Formattazione Condizionale...
    Ah ho capito. Grazie!
  • Re: Impostare la proprietà .Width sull'evento "Su rigenerazione" nel corpo di una form

    Shaul ha scritto:


    In realtà il colore degli oggetti li posso modificare. A me funziona... o forse non stiamo parlando della stessa cosa?
    Ad ogni riga riesco ad assegnare un colore diverso.
    Formattazione Condizionale...? Mi daresti qualche link?
    Facciamo attenzione quando diciamo si o no e diamo indicazioni.
    In maschere continue NON PUOI MODIFICARE le proprietà specifiche grafiche di controlli.
    In maschere continue l'unico, è dico UNICO, modo per poter modificare alcuni vincolate proprietà del controllo, è esclusivamente la Formattazione Condizionale, per la quale ti rimando a Google e ti basta digitare la ricerca.... come farei io.

    Se invece sostieni di essere in grado di modificare la proprietà BackColor di un controllo da VBA in maschere continue NON usando la F.C. ti invito a proporre un esempio in modo che possiamo capire cosa dici.(ovviamente non parliamo di cambiare colore al controllo ATTIVO... altrimenti stiamo scherzando)

    Questo è quanto intendevo:
    **
  • Re: Impostare la proprietà .Width sull'evento "Su rigenerazione" nel corpo di una form

    @Alex ha scritto:


    Shaul ha scritto:


    In realtà il colore degli oggetti li posso modificare. A me funziona... o forse non stiamo parlando della stessa cosa?
    Ad ogni riga riesco ad assegnare un colore diverso.
    Formattazione Condizionale...? Mi daresti qualche link?
    Facciamo attenzione quando diciamo si o no e diamo indicazioni.
    In maschere continue NON PUOI MODIFICARE le proprietà specifiche grafiche di controlli.
    In maschere continue l'unico, è dico UNICO, modo per poter modificare alcuni vincolate proprietà del controllo, è esclusivamente la Formattazione Condizionale, per la quale ti rimando a Google e ti basta digitare la ricerca.... come farei io.

    Se invece sostieni di essere in grado di modificare la proprietà BackColor di un controllo da VBA in maschere continue NON usando la F.C. ti invito a proporre un esempio in modo che possiamo capire cosa dici.(ovviamente non parliamo di cambiare colore al controllo ATTIVO... altrimenti stiamo scherzando)

    Questo è quanto intendevo:
    **
    Grazie Alex per l'esempio.
    Ho aggiunto alla tua maschera il seguente codice:
    Private Sub Corpo_Paint()
        If Me.Avanzamento < 4 Then
            Me.BarraColorata.BackColor = vbBlack
        ElseIf Me.Avanzamento < 8 Then
            Me.BarraColorata.BackColor = vbRed
        ElseIf Me.Avanzamento < 10 Then
            Me.BarraColorata.BackColor = vbYellow
        ElseIf Me.Avanzamento = 10 Then
            Me.BarraColorata.BackColor = vbGreen
        End If
    End Sub
    Nella maschera ho aggiunto un'etichetta che ho chiamato BarraColorata.
  • Re: Impostare la proprietà .Width sull'evento "Su rigenerazione" nel corpo di una form

    Ottimo, effettivamente funziona, ovviamente è alternativo alla Formattazione condizionale però...
    Non so se sia meglio usare l'evento Paint in termini di scocciatore con lo scroll veloce dei Records rispetto alla F.C. ma sicuramente è un'ottima possibilità.

    Fai attenzione a cosa accade quando sposti il Focus sui vari RECORDS...

    P.S. non ricordo da quale versione sia disponibile questo Evento, ma mi pare recente.
  • Re: Impostare la proprietà .Width sull'evento "Su rigenerazione" nel corpo di una form

    @Alex ha scritto:


    Fai attenzione a cosa accade quando sposti il Focus sui vari RECORDS...
    In effetti quando ci sei sopra non si comporta molto bene.
    Mi piace di più la tua soluzione. Per caso sai se c'è un carattere che non lasci spazi, così da rendere la barra continua?
    Sui Report invece si può sia modificare la proprietà .BackColor che .Width quindi si può disegnare la barra che hai fatto tu.

    @Alex ha scritto:


    P.S. non ricordo da quale versione sia disponibile questo Evento, ma mi pare recente.
    Io uso Access 2013.
  • Re: Impostare la proprietà .Width sull'evento "Su rigenerazione" nel corpo di una form

    Shaul ha scritto:


    @Alex ha scritto:


    Fai attenzione a cosa accade quando sposti il Focus sui vari RECORDS...
    In effetti quando ci sei sopra non si comporta molto bene.
    Mi piace di più la tua soluzione. Per caso sai se c'è un carattere che non lasci spazi, così da rendere la barra continua?
    Ti suggerisco infatti questa soluzione per esperienza mia.
    Per il Carattere da usare... così a memoria no tra i Caratteri standard, ma tu potresti avere a disposizione anche tutti gli UNICODE, accessibili con CHRW(...), io mi ero fatto un Tool per visualizzare i Caratteri UNICODE che potevano essere utili come aspetto grafico...
    Fai qualche tentativo.

    Shaul ha scritto:


    Sui Report invece si può sia modificare la proprietà .BackColor che .Width quindi si può disegnare la barra che hai fatto tu.
    Assolutamente, sui Report su Evento Format puoi fare di tutto anche Grafici su riga continua.

    @Alex ha scritto:


    P.S. non ricordo da quale versione sia disponibile questo Evento, ma mi pare recente.
    Io uso Access 2013.[/quote]
    Dal 2010 è implementato, io però tendo a mantenere la RetroCompatibilità.
  • Re: Impostare la proprietà .Width sull'evento "Su rigenerazione" nel corpo di una form

    @Alex ha scritto:


    Ti suggerisco infatti questa soluzione per esperienza mia.
    Per il Carattere da usare... così a memoria no tra i Caratteri standard, ma tu potresti avere a disposizione anche tutti gli UNICODE, accessibili con CHRW(...), io mi ero fatto un Tool per visualizzare i Caratteri UNICODE che potevano essere utili come aspetto grafico...
    Fai qualche tentativo.
    Se dovesse servire, ho trovato il carattere per creare una barra grafica. Eccolo:
    =String$(10;ChrW(9608))
    Grazie Alex!
  • Re: Impostare la proprietà .Width sull'evento "Su rigenerazione" nel corpo di una form

    Molto bene ottimo spunto.
    Grazie anche a te.
Devi accedere o registrarti per scrivere nel forum
10 risposte