+ Rispondi al Thread
Visualizzazione dei risultati da 1 a 6 su 6

Discussione: Passaggio da tastiera tra maschera e sottomaschera a schede

  1. #1
    mailman_1969 non è in linea Scolaretto
    Luogo
    Forli'
    Post
    67

    Passaggio da tastiera tra maschera e sottomaschera a schede

    Buongiorno,
    ho la seguente situazione: in un database Access ho una maschera (Commessa) a cui ho associato una sottomaschera (Dettagli) con una configurazione a schede.
    Volevo sapere se esiste un modo per selezionare, direttamente da tastiera, il passaggio da un campo della maschera principale ad un campo della sottomaschera. Attualmente devo spostarmi utilizzando il mouse e selezionando la label della sottomaschera per spostarmi. Volevo evitare di utilizzare il mouse.
    Ho cercato anche come selezionare la label via codice ma non ho trovato nulla.
    Attendo Vostre indicazioni
    Grazie in anticipo

  2. #2
    OsvaldoLaviosa non è in linea Topo di biblioteca
    Luogo
    Conversano
    Post
    2,932
    Potresti sfruttare l'evento "Su uscita" del CampoMascheraPrincipale con
    codice:
    Me!NomeSottomaschera.SetFocus
    Me!NomeSottomaschera!NomeCampoSottomaschera.SetFocus
    Può darsi che la prima istruzione sia superflua: fai delle prove.
    Ditemi i campi di tutte le vostre tabelle.

  3. #3
    L'avatar di @Alex
    @Alex non è in linea Very Important Person
    Post
    16,110
    Premesso che una Sottomaschera in configurazione a schede non esiste... la struttura a schede è un OGGETTO indipendente dalle Sottomaschere, ed addirittura funziona da Container, tant'è che interrogando una SubForm sul PARENT restituisce il controllo a schede...!

    Detto questo, se quello che chiedi è FISSO, puoi provare ad utilizzare gli strumenti NATIVI.

    La prima cosa da fare è impostare il TABCOntrolo in modo da non rispondere allo spostamento, [Seleziona Con Tabulazione]=NO
    Ora devi Ridefinire l'[Ordine di Spostamento] della SubForm, accessibile dalla TAB "Altro" della Form Principale, andando a riposizionare la SUBFORM subito dopo il controllo di cui parli.

    Potresti avere un problema, di cui però non hai parlato... che verrebbe evidenziato anche con il suggerimento di OSVALDO, ovvero se il TabControl non ha attiva la PAGINA della tua Form, il risultato sarebbe inutile...

    In questo caso serve prima Attivare la pagina giusta, passando all'oggetto TabControl(Struttura Schede) il Valore della Pagina, questo corrisponde ad attivare la PAGINA giusta, poi attivi il Focus sulla SubForm e poi sul Controllo della SubForm.
    @Alex
    Il CROSSPOST è VIETATO
    Mirror al vecchio sito WEB(salvare i Demo riassegnando l'estensione (.Zip/.Rar/.Exe in base all'icona...):
    http://mirror.masterdrive.it/alessandrobaraldi/
    Leggi il
    Regolamento del Forum e nel comprenderne la filosofia rispettalo.

  4. #4
    mailman_1969 non è in linea Scolaretto
    Luogo
    Forli'
    Post
    67
    Premetto di non aver descritto bene la configurazione: come da indicato da Alex, ho in effetti l'oggetto "struttura a schede" in cui ho inserito due maschere distinte collegate con campo univoco ( e non una maschera+ sottomaschera).
    Ho risolto in maniera differente, nel seguente modo:
    Nella maschera Principale ho creato la Public Sub:
    codice:
    Public Sub Apri_Form_DDT()
    On Error GoTo Err_Apri_Form_DDT
    
    Me![Dettagli importo e DDT].SetFocus
    
    Exit_Apri_Form_DDT:
        Exit Sub
    
    Err_Apri_Form_DDT:
        MsgBox Err.Description
        Resume Exit_Apri_Form_DDT
    
    End Sub
    Poi ho creato un nuovo Modulo in cui ho inserito la Function per richiamare la Sub:
    codice:
    Public Function Sposta_Focus()
    On Error GoTo Err_Sposta_Focus
    
    Call Form_Tabella_principale.Apri_Form_DDT
    
    Exit_Sposta_Focus:
        Exit Function
    
    Err_Sposta_Focus:
        MsgBox Err.Description
        Resume Exit_Sposta_Focus
    
    End Function
    ed ho associato al tasto funzione F5 la suddetta function con una sottomacro Eseguicodice.

    Di fatto funziona ma accetto eventuali consigli.

  5. #5
    L'avatar di @Alex
    @Alex non è in linea Very Important Person
    Post
    16,110
    Mamma quante ridondanze inutili... e che Nomi di Oggetti spaventosi...!

    codice:
    Public Function Sposta_Focus()
    On Error GoTo Err_Sposta_Focus
    
       If CurrentProject.AllForms("Form_Tabella_principale").IsLoaded then
             Forms!Form_Tabella_principale![Dettagli importo e DDT].SetFocus
       End if
    
    Exit_Sposta_Focus:
        Exit Function
    
    Err_Sposta_Focus:
        MsgBox Err.Description
        Resume Exit_Sposta_Focus
    
    End Function
    @Alex
    Il CROSSPOST è VIETATO
    Mirror al vecchio sito WEB(salvare i Demo riassegnando l'estensione (.Zip/.Rar/.Exe in base all'icona...):
    http://mirror.masterdrive.it/alessandrobaraldi/
    Leggi il
    Regolamento del Forum e nel comprenderne la filosofia rispettalo.

  6. #6
    mailman_1969 non è in linea Scolaretto
    Luogo
    Forli'
    Post
    67
    Quote Originariamente inviato da @Alex Visualizza il messaggio
    Mamma quante ridondanze inutili... e che Nomi di Oggetti spaventosi...!

    codice:
    Public Function Sposta_Focus()
    On Error GoTo Err_Sposta_Focus
    
       If CurrentProject.AllForms("Form_Tabella_principale").IsLoaded then
             Forms!Form_Tabella_principale![Dettagli importo e DDT].SetFocus
       End if
    
    Exit_Sposta_Focus:
        Exit Function
    
    Err_Sposta_Focus:
        MsgBox Err.Description
        Resume Exit_Sposta_Focus
    
    End Function
    Grazie Alex, ho apportato le seguenti modifiche perche' non funzionava:
    codice:
    Public Function Sposta_Focus()
    On Error GoTo Err_Sposta_Focus
    
       If CurrentProject.AllForms("Tabella_principale").IsLoaded then
             Forms!Tabella_principale![Dettagli importo e DDT].SetFocus
       End if
    
    Exit_Sposta_Focus:
        Exit Function
    
    Err_Sposta_Focus:
        MsgBox Err.Description
        Resume Exit_Sposta_Focus
    
    End Function
    Chiedo ulteriore consiglio: al comando F5 la scheda si attiva in modo corretto ma il focus e' sull'ultimo controllo utilizzato; come faccio ad indirizzare il focus su un controllo specifico di quella scheda? Ho rinominato la scheda di cui sopra in [Dettagli_importo], ho provato con:
    codice:
    Forms!Tabella_principale![Dettagli_importo]![Commessa_1].SetFocus
    inserito subito sotto alla prima chiamata ma restituisce errore: Proprieta' o metodo non supportati dall'oggetto.
    Ultima modifica di mailman_1969; 14-10-2019 16:09 

+ Rispondi al Thread

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi