Salve altro discorso.
Dovendo controllare che siano stati inseriti i dati richiesti nelle singole TextBox ho provato:
' chiusura
Public Sub btn_admin_insert_Click()
Dim xx As TextBox
Dim rr As Boolean
For Each xx In my_panel_1.Children
If (IsNull(xx.Text) = True) Then
With Balloon
.Warning("Campo vuoto !!", xx, (xx.W / 2), xx.Y)
End With
rr = False
Break
Endif
rr = True
Next
If rr Then
my_win_admin.Close(2)
Else
xx.SetFocus
Endif
End
Facendo prove il balloon appare dove dovrebbe apparire (nel TextBox "saltato")
però ... il SetFocus non funge ! >:(
chi sà il perché ?
cosa ho sbagliato ?
Grazie :ciao: :ciao:
A me invece non funzionava il baloon, nel senso che si mostrava a capocchia tranne che nel posto giusto.
Così funziona tutto (scusa se ho variato i nomi per renderlo più comprensibile ora che ti sei lanciato con l'inglese ;D):
Public Sub Button1_Click()
Dim hText As TextBox
Dim bEmpty As Boolean
For Each hText In Panel1.Children
If (IsNull(hText.Text) = True) Then
Print hText.Name
With Balloon
.Delay = 1500
.Warning("Campo vuoto !!", hText)
End With
bEmpty = False
Break
Endif
bEmpty = True
Next
If bEmpty Then
'my_win_admin.Close(2)'
Print "Chiudo finestra"
Else
hText.SetFocus
Endif
End
Se tu fai la semplice prova tipo textbox2.setfocus funziona? Altrimenti è un problema di tema.
:ciao:
A me così funziona:
Public Sub Button1_Click()
Dim hText As TextBox
For Each hText In Panel1.Children
If (IsNull(hText.Text) = True) Then
Print hText.Name
With Balloon
.Delay = 1500
.Warning("Campo vuoto !!", hText)
End With
hText.SetFocus ' <--------------------
Break
Endif
Next
End
Ancora No ...
Ricapitoliamo, passo, passo
1)Creo una finestra -> With my_win_admin = New Window As "win_admin"
2) aggiungo un panel -> With my_panel_1 = New Panel(my_win_admin)
(sfondo trasparente)
3) bottoni -> With admin_btn_1 = New Button(my_win_admin) As "admin_btn1"
4) TextBox -> With admin_tb1 = New TextBox(my_panel_1) As "admin_tb1"
ecc. per altri TextBox ...
5) Label -> With admin_lab1 = New Label(my_win_admin)
ecc. uno per ogni TextBox
6) lancio la finestra con: i = my_win_admin.ShowModal()
attendo il bottone "Apply" se premuto :
Public Sub btn_admin_insert_Click()
Dim xx As TextBox
Dim rr As Boolean
For Each xx In my_panel_1.Children
If (IsNull(xx.Text) = True) Then
With Balloon
.Warning("Campo \n" & xx.Tag & "\n vuoto", xx)
.Delay = 750
End With
'Message.Warning("Campo \n" & xx.Tag & "\n vuoto", "Ok")
rr = False
xx.SetFocus
Break
Endif
rr = True
Next
If rr Then
my_win_admin.Close(2)
Else
'my_win_admin.Activate()
'xx.SetFocus
Endif
End
Appare il balloon al posto giusto, ma quando "finisce" il suo ciclo, la finesta(my_win_admin) rimane inattiva
Solo cliccandoci dentro (alla finestra) quindi di fatto attivandola, il SetFocus fa il suo dovere.
Il mio desiderio era quello di veder attivata la finestra ed relativo SetFocus del TextBox incriminato, senza doverci cliccare.
Fine balloon finestra attiva.
Qualcosa non quadra, evidentemente manca qualcosa nel codice da me scritto, ma cosa ?
Se volete estrapolo il codice e lo posto in un esempio.
Grazie :ciao: :ciao:
Grazie vuott
:-*
Riguardo al tuo progetto allegato, quando passo alla seconda casella ("Professione"), è impossibile inserire i dati con la tastiera: il cursore non appare e il TextBox non è accessibile.
suppongo che tu abbia dato "return"
Public Sub admin_tb1_KeyPress()
If ((Key.Code = Key.Return) Or (Key.Code = Key.Enter) Or (Key.code = Key.Tab)) Then
tb_2.Enabled = True
tb_2.SetFocus
Endif
End
Poi il tuo sospetto ha fondamento ho provato solo con Show() e và bene.
Non dovrebbe creare interferenze, ma proverò ...
E poi dai, non è così lungo il "provino" ... :D
Scherzo, ovviamente 8)
Grazie ancora
:ciao: :ciao: