Newsgroup: it.comp.appl.access
Titolo: visualizzazione condizionata dei pulsanti

Salve a tutti.
Leggendo i vari post precedenti ho trovato qualcosa simile a quello
che mi serve ma non è proprio la soluzione ideale in quanto la
condizione è diversa.
Io bisogno di far apparire no o più pulsanti (che ho inserito nel piè
di pagina maschera) solo quando mi posiziono su una casella di testo
della maschera.
Ho provato a mettere su evento attivato della casella di controllo il
seguente codice
Me.F1.Enabled = False
e su evento disattivato
Me.F1.Enabled = True
ma non cambia niente.
Cosa bisogna cambiare?
Ciao.
Giuseppe.

Giuseppe.
Su evento GotFocus me.TuoPulsante.visible = false (lo rende invisibile ma non inattivo) su LostFocus me.TuoPulsante.visible = true. Enable per renderlo inattivo
Ciao
-- 
Questo articolo e` stato inviato dal sito web 
http://www.nonsolonews.it


Così praticamente resta sempre invisibile da quando apro la maschera e
sia che sono posizionato o meno sulla casella.
Puoi verificare?

Puoi verificare?
Impossibile!!!! Lo uso costantemente nelle mie applicazioni! Setta (sulle proprietà della maschera) i pulsanti interessati visibile=no (non usare Trasparente!!!), così all'apertura sono invisibili e poi sull'evento Attivato ( e Disattivato) scrivi le routine, visible = true su Attivato, false su disattivato. Da me funziona.....Devi ovviamente poi gestire gli eventi xchè appena tenti di premere il bottone, la maschera registra l'evento lostfocus e te lo fa sparire...Forse converrebbe ripensare all'automatismo solo su GotFocus, in modo da gestire le 'sparizioni' solo quando 'entro' su un altro campo....



Io avevo messo i due eventi sulla casella di testo. Mi pare di capire
che dovevo metterli sul pulsante. Ok. Fatto. Ma sulla casella di testo
interessata per attivare il pulsante cosa devo mettere?

 interessata per attivare il pulsante cosa devo mettere?
Sulla casella di controllo evento attivato scrivi:
Private sub CasellaControllo_gotfocus() 'evento su attivato
'rendi visibile il controllo
Me!NomeControlloDaRendereVisibile.visibile = me!CasellaControllo.visibile
end sub
Private sub CasellaControllo_lostfocus() 'evento su disattivato
'rendi visibile il controllo
Me!NomeControlloDaRendereVisibile.visibile = not 
me!CasellaControllo.visibile
end sub
-- 
Ciao
Geppo 


Allora ho adottato questo sistema.
Sulla casella di testo in cui voglio che si veda il pulsante ho messo
Me.F1.Visible = True
mentre sul campo successivo spostandomi con il tab ho messo
Me.F1.Visible = False
resta il problema che se mi sposto con il mouse su qualsiasi altra
casella di testo, il pulsante non sparisce.
Praticamente se i due eventi sono inseriti sulla stessa casella di
testo ne funziona solo uno. Come mai?
Ciao.

Ciao.
ci deve essere qualche errore nel VBA...La questione è questa: tu vuoi che quando sei sulla casella X diventino visibili i pulsanti A e B, quando sei sulla casella Y i pulsanti C e D. Allora l'approccio dovrebbe essere quello di disabilitarli (o renderli invisibili) quando sei su tutte le altre caselle tranna la X o la Y.
Facendo finta di avere 4 caselle di testo (Test0, Testo1, Testo2, Testo3) e 4 pulsanti (Comando5, Comando6, Comando7, Comando8), su GotFocus e lostFocus della casella 0 scrivi questo:
Private Sub Testo0_GotFocus()
    'rendo visibile bottone 1 e 2
    Me.Comando5.Visible = True 
    Me.Comando6.Visible = True
    Me.Comando7.Visible = False
    Me.Comando8.Visible = False
 
End Sub
Private Sub Testo0_LostFocus()
    ' nascondo tutto
    Me.Comando5.Visible = False
    Me.Comando6.Visible = False
    Me.Comando7.Visible = False
    Me.Comando8.Visible = False
 
End Sub
sugli stessi eventi del bottone 2 scirvi :
Private Sub Testo2_GotFocus()
    'rendo visibile bottone 2 e 4
    Me.Comando5.Visible = False
    Me.Comando6.Visible = True
    Me.Comando7.Visible = False
    Me.Comando9.Visible = True
 
End Sub
Private Sub Testo2_LostFocus()
    ' nascondo tutto
    Me.Comando5.Visible = False
    Me.Comando6.Visible = False
    Me.Comando7.Visible = False
    Me.Comando9.Visible = False
 
End Sub
Ora praticamente a seconda della casella dove sei si 'accendono' solo alcuni bottoni e gli altri spariscono. Si attiva solo sulla casella 0 e 2. Se sei su una casella che non scatena eventi si nasconde tutto.



Ok. Tutto a posto. Grazie.
Giuseppe.


Scusa se torno sull'argomento.
Ho messo i pulsanti nel piè di pagina maschera. Quando sono attivo
sulla casella di testo A appare il pulsante 5. Se mi sposto, scompare
e appaiono i pulsanti 6 e 7. Bene. Però quando clicco sul pulsante 5
mi deve aprire una form, ho messo su clic del pulsante docmd.openform
"miaform" e anzichè far questo si sposta sul pulsante 6.
Perchè?
Ciao.

Ciao.
Perchč prima della pressione del pulsante viene registrato l'evento uscita dalla casella....devi gestire anche quello....non č piů conveniente usare del codice sul bottone per individuare su quale casella sei e magari, con un unico tasto, cambiargli la caption e con select case scatenare l'evento giusto a seconda della casella deve 'eri' prima di premere il bottone?


 Questo articolo e` stato inviato dal sito webhttp://
www.nonsolonews.it
Allora mettendo su evento su uscita della casella di controllo
docmd.gotocontrol "miopulsante" funziona il pulsante ma non va più
via. Vorrei seguire il tuo consiglio però non saprei farlo. Mi dai
qualche dritta per favore?
Grazie.

Grazie.
Mi sa che ci stiamo perdendo....forse bisognerebbe ripensare alla struttura della routine. Cmq prova cosě che forse č piů semplice:togli il codice 'su uscita a tutte le caselle. Per fare sparire i bottoni basta quello in entrata (poni tutti quelli che ti interessano invisibili). Quando perde il focus, non succede nulla, ma il pulsante rimane visibile (xchč non si č scatenato un'altro evento su entrata, ma solo su uscita). Poni magari che quando esce da una casella, invia un valore (memorizzato in una variabile Public ValoreInviato as integer). Tipo: esco da casella1, invio valore 1, da casella2, invio valore = 2. Ora sul bottone che ti interessa scrivi sull'evento click:
if ValoreInviato = 1 then
     tua azione
else
     exit sub
end if
cosě per il giusto valore viene eseguita la giusta azione, se no nulla. Puoi implementare questo metodo mettendo 1 solo tasto, sempre visibile e a seconda del valore, gli fai fare ciň che ti serve
Su click del tasto
select case ValoreInviato
    case 1
        Azione1
    case 2
        Azione2
    case 3
        ......
    .....
    case else
end select
Non ho provato ma a naso dovrebbe funzionare....
-- 
Questo articolo e` stato inviato dal sito web 
http://www.nonsolonews.it

 end select
per tasto cosa intendi?
Scusami se non ti seguo abbastanza velocemente, ma mi è più facile
quando vedo dei file di esempio. Se c'è qualcuno me lo indichi per
favore?
Comunqe sul pulstante Ricerca (attivo solo quando sono su
CodAnagrafica) vorrei che si aprisse la form "frmAnagrafica".
Ti prego fammi risolvere questo problema.
Ciao.

Ciao.
Ciao Giuseppe, ora devo volare....ti prometto che questa sera (meglio notte) faccio qualche prova e poi ti mando il codice
Buona serata e non disperare!!
-- 
Questo articolo e` stato inviato dal sito web 
http://www.nonsolonews.it