Section (0)

di il
11 risposte

Section (0)

Ciao a tutti, è la mia prima domanda e scusatemi se non sono molto pratico.
Ho questo problema. In una maschera che si apre con il corpo non visibile si apre su un controllo che cliccandoci sopra con un
corpo.visible =true
cmd.gotocontrol "nome controllo"

ottengo che il corpo diventa visibile ma il focus non va sul controllo desiderato anzi si perde.
Devo cliccare su una qualsiasi parte del corpo per ritrovarlo.

Sembra niente ma non mi piace.

Trovate la soluzione.

11 Risposte

  • Re: Section (0)

    Chiaro ha scritto:


    corpo.visible =true
    cmd.gotocontrol "nome controllo"
    Stai parlando in VBA? Io non lo so usare, ma credo che l'istruzione si chiama DoCmd e non cmd.

    Leggendo la guida in linea di Access all'argomento "Azione VaiAControllo", conferma che si deve scrivere DoCmd.GoToControl e parla di una possibile istruzione alternativa SetFocus...prova un po' tu.
  • Re: Section (0)

    Scusate, ho sbagliato a scrivere. Si, lo so. Il comando è DoCmd.GotoControl "nomecontrollo".
    Ma il problema rimane. Preciso che parlo di Access VBA. Il problema si presente dopo che ho reso visibile il corpo sia con l'istruzione
    corpo.visible = true
    sia
    section (0).visible=true
    dopo col DoCmd.GotoControl "NomeControllo"
    non trovo il focus dove vorrei ma si perde. Devo cliccare sulla maschera per farlo camparire.

    Ho provato anche con l'istruzione
    NomeControllo.setfocus

    Niente. E' la stessa cosa.
  • Re: Section (0)

    Chiaro ha scritto:


    Devo cliccare sulla maschera per farlo camparire
    Questa azione mi fa pensare che all'evento "Su clic" della maschera sia associato qualcosa che "accende la lampadina". Se tu associassi la stessa Routine evento a un evento precedente, non so "Su apertura" o qualcosaltro, non dovresti avere necessità di cliccare sulla maschera.
  • Re: Section (0)

    Ti ringrazio Osvaldo per le risposte, ma il problema rimane.
    Ho controllato. Sull'evento OnClic della maschera non ho nulla.

    Ho ricreato un'altra maschera per vedere se si ripete il disguido. Risultato: si ripete.

    Quindi precisamente ho fatto così:

    Ho creato una maschera ex novo.
    Ho messo il corpo non visibile
    e nel corpo una casella di testo chiamta T1
    nella sezione intestazione di maschera ho messo un pulsante chiamato Cmd1
    Sull'evento apertura di pagina ho inserito DoCmd.Gotocontrol "Cmd1"
    e sull'evento OnClic del pulsante Cmd1 ho scritto:
    Corpo (0).visible= true
    DoCmd.GotoControl "T1"

    Ebbene il focus all'apertura va sul pulsante Cmd1 e fin quì tutto OK.
    Quando clicco sul pulsante Cmd1 il corpo diventa visibile ma il focus non lo trovo nella casella di testo indicata cioè T1. Non so dove sia.
    Devo cliccare sulla maschera per farlo comparire.

    PS: Ho provato a mettere il corpo visibile prima di lanciare la maschera e si ottiene lo stesso effetto.
    Ti ringrazio molto se continuerai a prendere in esame il caso.
    Così come ringrazio chiunque vorrà rispondermi.
    Ciao.
  • Re: Section (0)

    Brancolando in un buio di VBA che conosco troppo poco, provo a fare le seguenti considerazioni:
    A) Le istruzioni in codice VBA sono errate sintatticamente (poco probabile)
    B) L'istruzione VaiAControllo (GoToControl) è un po' bastarda...non vorrei che tu, siccome il Cmd1 sta nella sezione IntestazioneMaschera, dovresti prima dire GoToControl--->Sezione Corpo e poi GoToControl T1
    C) Esiste in VBA una istruzione che simula il tuo Clic sulla maschera? Se sì prova a introdurla.
  • Re: Section (0)

    Prova, invece di usare quel metodo, ad usare l'altezza della sezione, se=0 l'effetto equivale.
    L'unico dubbio che non ricordo è se sia necessario agire anche sulla proprietà InsideHeight sottraendo la dimensione del corpo....
  • Re: Section (0)

    Mi fa piacere Osvaldo che hai riesaminato il mio problema.
    Sei andato vicino alle mie considerazioni. Non credo che usare il DoCmd.GotoControl nella
    sezione IntestazioneMaschera per passare ad un controllo del corpo sia bastarda. Credo
    che dovrebbe funzionare. Non so come fare per passare il focus al corpo e non conosco
    un modo per simulare un clic sulla maschera per ovviare al problema.
    Se conosci uno dei due sistemi che suggerisci potrebbe fare al mio caso.
    Per quanto riguarda la soluzione proposta da Alex non fa al mio caso dal momento che non
    nasconde i controlli del corpo che è l'effeto che voglio.
    Però devo confessarvi una cosa. Ho scoperto che riproducendo il tutto su Access 2000 e 2003
    funziona.
    Quindi è un problema di Access 2007 ?
    Per favore provate anche voi e datemi una conferma.
    Nel caso che sia così, come fare dal momento che mi trovo ad operare con Access 2007 ?
    Grazie.
  • Re: Section (0)

    Io ho Access 2003. Non conoscendo il VBA, ho ricostruito il medesimo scenario azioni con una macro e funziona la sequenza da te indicata.

    Con macro le tue istruzioni equivalgono a:
    ImpostaValore
         Elemento: [Maschere]![NomeMaschera].[Section](0).[Visible]
         Espressione: Vero
    VaiAControllo: NomeControllo (senza parentesi quadre)
    Prova a fare un test con questa macro, se funziona, trasformala in VBA e vedi eventuali differenze sul codice.
  • Re: Section (0)

    Osvaldo ti ringrazio ancora per avermi risposto.
    Purtroppo ho fatto anche come tu hai suggerito creando la macro ma il risultato è sempre
    lo stesso.
    Comunque sono certo che il problema si produce solo su Access 2007.
    Aiutami a trovare la soluzione perchè uso quello a lavoro.
    Ciao.
  • Re: Section (0)

    Chiaro ha scritto:


    Quando clicco sul pulsante Cmd1 il corpo diventa visibile ma il focus non lo trovo nella casella di testo indicata cioè T1. Non so dove sia.
    Devo cliccare sulla maschera per farlo comparire.
    Tu dici "Non so dove sia"...secondo me il focus su T1 c'è, ma tu non lo vedi perchè, non so spiegarmi bene, avresti un problema di colori di sfondo dei controlli, tale che se la maschera è attiva allora il focus lo vedi nero, altrimenti viceversa...........non so, sto andando per immaginazione.
    Per testare quello che ho appena detto, anzichè cliccare sulla maschera, prova a digitare subito un valore di modifica su T1 e vedi se tale modifica si vede. Se non si vede subito, prova a cliccare dopo sulla maschera e vedi se c'è stato un cambiamento di valore in T1.
  • Re: Section (0)

    Ciao Osvaldo,
    dopo il tuo ultimo suggerimento ho provato con l'istruzione Me.ActiveControl.Name e ho scoperto
    che il focus si trova nella campo T1.
    Allora devo fare una precisazione. Quando ho scritto "non so dov'è il focus" intendevo dire che il cursore non lo vedo e per farlo comparire devo cliccare sulla maschera e me lo ritrovo lì nel campo T1.

    Quindi ho bisogno di sapere se c'è un modo per far comparire automaticamente il cursore.
    Ripeto questo strano fenomeno accede solo in Access 2007 dopo aver usato
    corpo.visible=True
    Su Access 2000 e 2003 funziona.

    Ciao
Devi accedere o registrarti per scrivere nel forum
11 risposte