Setfocus da form in popup

di il
26 risposte

Setfocus da form in popup

Da una maschera iniiziale vengono richiamate altre form per l'esecuzione di varie attività.

 Quella in cui ho problemi è una forma aperta in popup con cui si raccolgono informazioni varie di vari soggetti.

La form viene aperta con la selezione di un valore in un campo, chiamiato [scelta codice], tramite un combobox.

La form viene richiamata con: DoCmd.OpenForm "persone", , , , , acDialog, Me![scelta codice]

La form “persone” permette di aggiornare i dati della persona selezionata tramite gli argomenti passati

Alla chiusura della form in popup il focus dovrebbe tornare al campo  [scelta codice].

Il campo è il primo nella lista di tabulazione.

Dopo l'istruzione OpenForm ci sono delle istruzioni che ripuliscono il campo e dovrebbero riposizione il cursore.

      Me![scelta codice] = ""
      Me.[scelta codice].Requery
      Me![scelta codice].SetFocus

Non avviene mai.

Esiste una soluzione?

Grazie

26 Risposte

  • Re: Setfocus da form in popup

    Pubblica il codice completo che attiva la Popup… già il Requery messo così lascia perplesso, in quanto ti riposizioni sul PRIMO e non su quello aggiunto/editato… in questo caso non credo sia il massimo… quindi cosa serve fare in realtà..?

    Se hai solo editato non devi fare Requery per non spostare il Bookmark, ma se la Form la usi anche per aggiungere allora devi usare il Requery, ma a quel punto devi MEMORIZZARE la PK, prima del REQUERY e riposizionarti.

  • Re: Setfocus da form in popup

     Ciao,

    dipende da quale evento hai richiamato la form, che sia una textbox oppure una combobox non fa differenza.

    Per curiosità : Penso che tu richiami la Form dall'evento in AfterUpdate, prova ad usare l'evento Exit e vedi se ti riprende il Focus.


    P.S. Una cosa che non capisco è perchè vi ostinate ad utilizzare i nomi dei campi con gli spazi…  una cosa normale di questo tipo non mi risulta essere vietato o controindicato ;-))

    Me.sceltaCodice = vbnullstring
    Me.sceltaCodice.Requery
    Me.sceltaCodice.SetFocus
    
    
    Ma una cosa ancora migliore e rileggibile sempre e ovunque....
    
    Esempio se è una comboBox
    
    Me.cmbCodeSelect = vbnullstring
    Me.cmbCodeSelect.Requery
    Me.cmbCodeSelect.SetFocus
    
    
    Esempio se è una TextBox
    
    Me.txtCodeSelect = vbnullstring
    Me.txtCodeSelect.SetFocus
    
  • Re: Setfocus da form in popup

    Il riposizionamento è sul campo da cui, normalmente, si seleziona la persona che interessa. Alla fine della popup si dovrebbe tornare sulla stresso campo

    Questo è il codice con cui richiamo la popup

       If Not IsNull(scelta_codice) Then
          DoCmd.OpenForm "persone", , , , , acDialog, Me![scelta codice]
          BckupAtt '------------------------ attiva/disattiva tasto backup
       
          Me![scelta codice] = ""
          Me.[scelta codice].Requery
          Me![scelta codice].SetFocus
       End If
    
  • Re: Setfocus da form in popup

    17/07/2023 - By65Franco ha scritto:


    P.S. Una cosa che non capisco è perchè vi ostinate ad utilizzare i nomi dei campi con gli spazi…  una cosa normale di questo tipo non mi risulta essere vietato o controindicato ;-))

    Il db è una eredità di cui sto subendo le piacevolezze.

    La form è richiamada dall'evento Click. Così era e mi è sembrato pratico per gli utenti che lo usano senza far attivare un afterupdate

  • Re: Setfocus da form in popup

    Che versione hai di Access ?

  • Re: Setfocus da form in popup

    17/07/2023 - Pensionato ha scritto:


    La form è richiamada dall'evento Click. Così era e mi è sembrato pratico per gli utenti che lo usano senza far attivare un afterupdate

    Quindi il combo ha già il focus…

    Setfocus imposta lo stato attivo sul campo o sul controllo. Non sempre il controllo editabile si evidenzia nella text, ma ciò non significa che non abbia il focus.

    Se scrivi qualcosa il testo nella combo cambia?

  • Re: Setfocus da form in popup

    17/07/2023 - By65Franco ha scritto:


    Che versione hai di Access ?

    Gli utenti lo usano su 2019. Io su 365

  • Re: Setfocus da form in popup

    17/07/2023 - sihsandrea ha scritto:


    17/07/2023 - Pensionato ha scritto:


    La form è richiamada dall'evento Click. Così era e mi è sembrato pratico per gli utenti che lo usano senza far attivare un afterupdate

    Quindi il combo ha già il focus…

    Setfocus imposta lo stato attivo sul campo o sul controllo. Non sempre il controllo editabile si evidenzia nella text, ma ciò non significa che non abbia il focus.

    Se scrivi qualcosa il testo nella combo cambia?

    Il focus viene passato alla forma popup. Alla chiusura di questa dovrebbe tornare alla combobox originaria.

    In effetti fa un tentativo, ma immediatamente viene spostato al campo successivo in ordine di tabulazione. 

    Provato spostando altri campi nella posizione successiva a quella della combobox e il posizionamento è sul seguente in ordine di tabulazione.

  • Re: Setfocus da form in popup

    Secondo me è una questione di evento utilizzato

  • Re: Setfocus da form in popup

    In particolare, chi usa il programma dovrebbe sempre aprire la tendina della combo portandone il focus perciò che senso ha il set focus?

  • Re: Setfocus da form in popup

    17/07/2023 - By65Franco ha scritto:


    Secondo me è una questione di evento utilizzato

    Tutte le altre form, più o meno complesse, vengono sempre aperte da bottoni o combox sempre su evento Click.

    Questa “persone”, abbastanza complessa(al suo interno genera tabelle, richiama altre form per il caricamento dati, ecc.) è l'unica che dà questo problema

  • Re: Setfocus da form in popup

    17/07/2023 - Pensionato ha scritto:


    17/07/2023 - By65Franco ha scritto:


    Secondo me è una questione di evento utilizzato

    Tutte le altre form, più o meno complesse, vengono sempre aperte da bottoni o combox sempre su evento Click.

    Questa “persone”, abbastanza complessa(al suo interno genera tabelle, richiama altre form per il caricamento dati, ecc.) è l'unica che dà questo problema

    Ho replicato la tua situazione e anche senza il SetFocus la combobox rimane selezionata se si fa il Click dell'elemento selezionato
    Esempio:

    Private Sub cmbSelect_Click()
    DoCmd.OpenForm "TuaForm", , , , , acDialog
    Me.cmbSelect = vbNullString
    End Sub

    Ma se digiti nella combobox, trovando l'elemento che ti interessa e dai invio, allora il focus si sposta e anche con il SetFocus non ti ritorna sulla combobox

    Private Sub cmbSelect_Click()
    DoCmd.OpenForm "TuaForm", , , , , acDialog
    Me.cmbSelect = vbNullString
    Me.cmbSelect.SetFocus
    End Sub

    Ma la ComboBox dove si trova nella Form ? Nella Testata, Nel Corpo ….

  • Re: Setfocus da form in popup

    Hai descritto con esattamente l'uso e la sequenza delle operazioni.

    La Combobox si trova nel Corpo

  • Re: Setfocus da form in popup

    17/07/2023 - Pensionato ha scritto:


    Hai descritto con esattamente l'uso e la sequenza delle operazioni.

    La Combobox si trova nel Corpo

    In quale condizione la combo box deve riprendere il Focus ? 

    Indistintamente ogni qualvolta che chiudi la Form PopUp ? oppure se dalla Form PopUp selezioni qualcosa devi spostarti nella Form principale su altri controlli ? … oppure ?   puoi descrivere meglio lo scenario ? 

Devi accedere o registrarti per scrivere nel forum
26 risposte