Barra di avanzamento e setstatus

di il
2 risposte

Barra di avanzamento e setstatus

Non è facile da spiegare, vedo se riesco.
Se faccio un docmd.setstatus creo un testo nella barra di stato.
Molto comodo se per esempio voglio mostrare un processo in corso, il programma prosegue ma finché con lo cambio resta lì.
Peccato che se parte una query mostra la barra di avanzamento e lo cancella.
Potrei ovviare facendo una cella di testo e scrivendo lo stato lì con dei doevents, ma mi piacerebbe qualcosa di slegato dalla finestra.
Magari una funzione che apra un popup trasparente in una posizione specifica dello schermo col testo del setstatus, lasciando il controllo alla finestra principale e lo status alla barra.
In ogni caso vorrei imbrattare il codice meno possibile quindi fare un 

MostraStato("pincopalla") 

che finisce con un 

MostraStato("") 

che lo chiude.
Mi piacerebbe che il setstatus mostrasse entrambe (magari a sinistra lo stato da me inserito a destra la barra).
Sarebbe una cosa davvero comoda ma mi sa che dovrebbe farla Microsoft.

Qualche idea alternativa?

2 Risposte

  • Re: Barra di avanzamento e setstatus

    Una volta avevamo la StatusBar, un OCX del pacchetto VB6, nella quale si poteva mettere una Progressbar... ora serve un po di fantasia, ma c'è un ma...

    Quello che riguarda la visualizzazione dei testi direi che si può appunto usare la StatusBar di Access...

    ' Initialize the progress meter. 
      SysCmd acSysCmdInitMeter, "Reading Data...", Count 
        
    ' Upgrade ProgressBar   
      SysCmd acSysCmdUpdateMeter, Progress_Amount 
     
    ' Remove the progress meter. 
      SysCmd acSysCmdRemoveMeter 

    Detto questo, come sai, questo è fattibile solo su processi SINCRONI, ma ad esempio l'esecuzione di una ActionQuery è Asincrona... quindi non discriminabile.

    Quindi a questa stregua una qualsivoglia forma di visualizzazione è gestibile, apri una Form popup, con una TextBox ed una ProgressBar e gli scrivi quello che vuoi passando le cose da scrivere...

    Se invece devi interagire con un processo Asincrono non hai modo, nel caso tuttavia di esecuzione di Statement SQL tramite RS, invece di usare DAO potresti usare ADO, che consente l'apertura Asyncrona con CallBack... processo interessante...

    https://stackoverflow.com/questions/21933099/running-multiple-async-queries-with-adodb-callbacks-not-always-firing

    Saluti

  • Re: Barra di avanzamento e setstatus

    04/12/2024 - @Alex ha scritto:

    Una volta avevamo la StatusBar, un OCX del pacchetto VB6, nella quale si poteva mettere una Progressbar... ora serve un po di fantasia, ma c'è un ma...

    Se posso non uso componenti esterni per non trovarmi nei casini in caso di cambi versione e non complicare l'installazione.

    ... Quindi a questa stregua una qualsivoglia forma di visualizzazione è gestibile, apri una Form popup, con una TextBox ed una ProgressBar e gli scrivi quello che vuoi passando le cose da scrivere...

    E' quello che sto facendo, in pratica la casella dello status la lascio alle query e il testo lo metto in una form.

    Se invece devi interagire con un processo Asincrono non hai modo, nel caso tuttavia di esecuzione di Statement SQL tramite RS, invece di usare DAO potresti usare ADO, che consente l'apertura Asyncrona con CallBack... processo interessante...

    Molto interessante, ma certo non passo ad ADO per una cosa del genere.

    Grazie comunque per la risposta sempre estremamente interessante.

Devi accedere o registrarti per scrivere nel forum
2 risposte