Scrittura consentita su parte dei controlli di una maschera

di il
7 risposte

Scrittura consentita su parte dei controlli di una maschera

Buonasera a tutti.

Nel mio database è presente una maschera che contiene diverse caselle di testo e una casella combinata che utilizzo per filtrare i dati.

Ho la necessità, all'apertura della maschera in questione, di impedire la scrittura su tutte le caselle di testo, ma di poter utilizzare la casella combinata. Inoltre vorrei utilizzare un interruttore all'interno della maschera per rimuovere o reinserire il blocco.

Le caselle di testo in questione sono molte, quindi mi chiedevo se esistesse una soluzione che mi eviti di utilizzare la proprietà locked singolarmente su tutti i controlli.

Ho provato ad aprire la maschera in modalità lettura e utilizzare la propritetà AllowEdits per abilitare/disabilitare la scrittura, ma questa soluzione mi impedisce di utilizzare la casella combinata.

Spero di essermi spiegato al meglio e di non aver posto un quesito banale

Grazie in anticipo 

7 Risposte

  • Re: Scrittura consentita su parte dei controlli di una maschera

    Devi Usare un ciclo sui controlli e attivare la proprieta Locked sul singolo controllo ma sono 4 righe di codice.

    Seleziona tutti i controlli che devono essere bloccati/sbloccati e con i controlli selezionati vai nella proprietà TAG ed inserisci un testo riconoscibile ad esempio XX

    Ora fai un ciclo nella collection controls di Maschera se il controllo ha TAG="XX" Blocchi o Sblocchi… 4 righe.

    Function fLocked(value as Boolean)
       Dim ctl AS Control
       For each ctl in Me.Controls
           If ctl.TAG="XX" Then ctl.Locked=value
       Next
    End Function
  • Re: Scrittura consentita su parte dei controlli di una maschera

    23/08/2024 - @Alex ha scritto:


    Devi Usare un ciclo sui controlli e attivare la proprieta Locked sul singolo controllo ma sono 4 righe di codice.

    Seleziona tutti i controlli che devono essere bloccati/sbloccati e con i controlli selezionati vai nella proprietà TAG ed inserisci un testo riconoscibile ad esempio XX

    Ora fai un ciclo nella collection controls di Maschera se il controllo ha TAG="XX" Blocchi o Sblocchi… 4 righe.

    Function fLocked(value as Boolean)
       Dim ctl AS Control
       For each ctl in Me.Controls
           If ctl.TAG="XX" Then ctl.Locked=value
       Next
    End Function

    Perfetto!! Grazie mille!!

  • Re: Scrittura consentita su parte dei controlli di una maschera

    Ovviamente se tu conoscessi l'uso di Classi e Collection il tutto ti eviterebbe di Ciclare ogni volta TUTTI i CONTROLS per cercare solo quelli con la XX… basterebbe mettere nella collection i controlli la prima volta e poi si cicla la collection… sono tecniche banali ma non usate spesso.

  • Re: Scrittura consentita su parte dei controlli di una maschera

    26/08/2024 - @Alex ha scritto:

    se tu conoscessi l'uso di Classi…

    Non c'è la faccina della tristezza?

    basterebbe mettere nella collection i controlli la prima volta e poi si cicla la collection

    E fin qui grossi ostacoli non ce ne sarebbero, cioè… per popolare la collection uso il ciclo filtrando per Tag?

    E le classi come intervengono in tutto ciò?

    Potresti spiegare il procedimento la sequenza dei “ragionamenti”? per il codice provo a fare da solo. Potrebbe venir buono per un progettino.

  • Re: Scrittura consentita su parte dei controlli di una maschera

    Ovviamente dipende da cosa si vuole fare…! Certo che hai abboccato come un “Pes gat” ;-)

    La classe è un oggetto dotabile di Proprietà/Eventi/Metodi, se crei una Collection e ci metti dentro i Controlli, poi devi ciclare la collection…

    Se devi creare 2 Blocchi per “XX” e “YY” devi creare 2 collection, se la proprietà da gestire è solo Locked direi si ragiona in un modo se le proprietà da usare sono N, si deve ragionare diversamente… per non dover riscrivere N volte lo stesso codice di ciclo…!

    Scrivere sempre lo stesso codice allunga le righe, per nulla, perchè alla fine fa sempre la stessa cosa su oggetti diversi… tanto vale creare un oggetto dedicato che fa tutto.

    Quindi si crea una Classe(Cn) alla quale si associa un Controllo e si definiscono le Proprietà/Medoti/Eventi Public, si crea una Classe(CMaster) che si occupa di Istanziare/Gestire la Collection ed ii Metodi/Proprietà per gli eventi serve un rilancio dalle classi Controllo.

    A questo punto ogni istanza CMaster può gestire un TAG, quindi se hai 2 TAG ovvero “XX” e “YY” avrai 2 Istanze CMaster, ogni istanza CMaster esporrà la proprietù Locked e ti basta modificarla per renderla applicata alle Classi che associano i controlli di conseguenza ai controlli stessi.

    Se le proprietà su cui interagire sono varie… per te dalla Maschera il codice  sarà molto Pulito perchè avrai CMaster1.Loaked=False e CMaster2.ForeColor=vbRed ecc…

    La classe Master si occupa di gestire Add/Remove/Exists/Move degli elementi della Collection.

    Se poi si vuole dare Gerarchia agli Oggetti allora la cosa si complica un po ma è come il Domino, se le costruisci bene… il codice diventa pulito funzionale, ottimizzato nel senso che scrivi codic “specializzato”…

  • Re: Scrittura consentita su parte dei controlli di una maschera

    26/08/2024 - @Alex ha scritto:


    Ovviamente dipende da cosa si vuole fare…! 

    Questo:

    26/08/2024 - @Alex ha scritto:

    … l'uso di Classi e Collection il tutto ti eviterebbe di Ciclare ogni volta TUTTI i CONTROLS per cercare solo quelli con la XX… basterebbe mettere nella collection i controlli la prima volta e poi si cicla la collection…

    ===

    26/08/2024 - @Alex ha scritto:

    Certo che hai abboccato come un “Pes gat”

    Eh, vabbè, almeno le classi c'entrano davvero, anche se non ho capito come, non le hai usate solo per farmi abboccare.

    Per il resto… boh, magari ci capirò qualcosa che vada oltre l'uso della collection e oltre le scarse nozioni teoriche terra terra che già so sulle classi.

  • Re: Scrittura consentita su parte dei controlli di una maschera

    Non comprendo la difficoltà… una TextBox è un'oggetto, comprensivo di una ClasseOggetto ed un'interfaccia Grafica… sostanzialmente un Activex…

    Creato l'oggetto lo riusi N volte, invece che gestire codice per crearne N.

    Dai studia che poi ic giochi…

Devi accedere o registrarti per scrivere nel forum
7 risposte