Newsgroup: it.comp.lang.visual-basic
Titolo: uscire da un setfocus

Salve, programmo in VB5 e per impedire che un campo sia vuoto utilizzo
questo codice :
If Len(LTrim(RTrim(Text1.Text))) = 0 Then
        Beep
        Text1.SetFocus
End If
Il mio problema e' che cosi' pero' non esco neppure volendo : se per esempio
clicco su command1 (tasto ABBANDONA) e il cursore e' su text1 che e' vuoto,
non ottengo risultati.
Potete aiutarmi ?
Grazie

 End If
ammesso che tu abbia un comando per uscire e uno per salvare....la routine
che hai scritto mettila sul controllo clik del tasto per salvare...
e non sul controllo text1lostfocus come credo che tu abbia fatto
Private Sub salva_cmd_Click()
 If Len(LTrim(RTrim(Text1.Text))) = 0 Then
        Beep
        Text1.SetFocus
        else
        quello che devi fare per salvare
 End If
End Sub
Babau


si ma cosi', su una maschera che prevede 6 campi "obbligatori",
l'obbligatorieta' si evidenzia alla fine (nel momento di salvare)  e non
durante la digitazione ..... come vorrei fare io.
Grazie

 wrote in message
news:7NAA8.1891$5k4....@twister2.libero.it...


 Salve, programmo in VB5 e per impedire che un campo sia vuoto utilizzo

Vado a braccio, non l'ho provato ma dovrebbe funzionare:
- sull'evento mousemove di command1 setti a True una variabile (diciamo
bAbbandona) dichiarata pubblica a livello di form
- sul mousemove del pulsante di conferma la setti a False
- sull'evento lostfocus di text1 controlli il valore di bAbbandona che,
se è True, ti consente di uscire senza verificare se text1 è piena o
vuota
If Len(Trim$(Text1)) = 0 And Not bAbbandona Then
  Beep
  Text1.SetFocus
End If
Fammi sapere
Nando
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG


Ciao Nando. Posso dirti che tutto funziona se ad essere campi obbligatori
non sono due campi consecutivi. Nel caso in cui invece siano consecutivi il
prg entra in un loop infinito da cui non si esce piu' ....

 durante la digitazione ..... come vorrei fare io.
allora crea una variabile true false da far leggere al lost focus prima
della tua routine
per esempio il clic del comando per uscire pone a true una variabile...
Private Sub esci_cmd_Click()
controllo= true
exit sub
tuo text_lostfocus()
if controllo = true then
quello che devi fare per uscire
controllo= false
exit sub
endif
 If Len(LTrim(RTrim(Text1.Text))) = 0 Then
        Beep
        Text1.SetFocus
 End If
end sub

Private Sub Text1_KeyPress(KeyAscii As Integer)
tasto = KeyAscii
End Sub
Private Sub Text1_LostFocus()
If tasto = 27 Then 'tasto esc premuto
tasto = 0
' quello che devi fare........oppure
Exit Sub
End If
If Trim(Text1.Text) = "" Then
Beep
Text1.SetFocus
End If
End Sub

 ha scritto nel messaggio
news:oKSA8.5997$5k4.1...@twister2.libero.it...

dimenticavo di dire che con queste routines basta clikkare su esc per uscire
dalll'eventuale form.....

 e non durante la digitazione ..... come vorrei fare io.
Non č buona norma costringere l'utente a fare le cose esattamente in un
certo ordine.
Il consiglio di Babau (brrr...) č buono. Io di solito uso 2 funzioni che si
chiamano SalvaDati e IfCiSonoProblemi, e la prima chiama la seconda:
Private Function SalvaDati as boolean
    If Not IfCiSonoProblemi Then
        ' esegui il salvataggio
        SalvaDati = True
    Else
         SalvaDati = False
    Endif
End function
Private Function IfCiSonoProblemi as boolean
    ' ritorna True se qualche campo obbligatorio non č compilato
   ' (ovviamente avvisa anche con un msgbox)
   ' ritorna false se va tutto bene
End function
Questo sistema ti consente poi di avere una funzione standard di controllo
salvataggio in fase di Unload:
Private Sub Form_Unload(Cancel As Integer)
   Dim IRisposta As Integer
   If GMbModificheEffettuate Then
      IRisposta = MsgBox("Sono state effettuate delle modifiche. Si desidera
salvare prima di uscire?", vbQuestion + vbYesNoCancel)
      If IRisposta = vbYes Then
         Cancel = Not SalvaDati
      ElseIf IRisposta = vbCancel Then
         Cancel = True
      End If
   End If
End Sub
Se proprio vuoi avvisare l'utente che un campo č stato compilato male
durante l'editing, coloralo di rosso quando perde il focus. Un altra buona
norma sarebbe avere una statusbar all'interno della tua form, che mostri dei
messaggi di aiuto per ciascun controllo con il focus. Se quando prende il
fucus il controllo ha lo sfondo rosso puoi avvisare sulla statusbar il tuo
utente di quale problema si tratti. Il caso classico č: l'utente esce dal
campo obbligatorio senza compilarlo, vede che si colora di rosso, ci clicca
sopra, e magicamente sulla statusbar compare il motivo della colorazione.
;-)
Ciao
*Roby*

 utente di quale problema si tratti. Il caso classico è: l'utente esce dal
