Autore Topic: [RISOLTO]SetFocus di un TextBox che non và  (Letto 1744 volte)

Offline vigiot

  • Gambero
  • **
  • Post: 75
    • Mostra profilo
[RISOLTO]SetFocus di un TextBox che non và
« il: 31 Gennaio 2018, 21:51:10 »
Salve altro discorso.
Dovendo controllare che siano stati inseriti i dati richiesti nelle singole TextBox ho provato:
Codice: [Seleziona]
' 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:
« Ultima modifica: 02 Febbraio 2018, 20:03:27 da vigiot »
Siamo tutti ignoranti, ma fortunatamente non della stessa cosa. Albert Einstein

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.244
  • Tonno verde
    • Mostra profilo
Re:SetFocus di un TextBox che non và
« Risposta #1 il: 31 Gennaio 2018, 22:34:38 »
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):
Codice: [Seleziona]
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:
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline vigiot

  • Gambero
  • **
  • Post: 75
    • Mostra profilo
Re:SetFocus di un TextBox che non và
« Risposta #2 il: 01 Febbraio 2018, 09:45:07 »
Grazie per il tuo tempo Gianluigi  :-*
Nel frattempo ho provato con:
Codice: [Seleziona]
my_win_admin.SetFocus()
Niente !  :rolleyes:
Poi con :
Codice: [Seleziona]
my_win_admin.Activate()
ancora no ... >:(
Probabilmente, poiché il balloon ha un effetto "Top Level" una volta disattivato la finestra in cui appare rimane inattiva,
infatti se tu ci clicki sopra i textbox riceve il setfocus.
Quindi bisogna trovare il giusto comando per farlo da codice, visto che ".Ativate()" non funziona.

P.S. l'apparire a capocchia è un mio errore, la chiamata giusta è ".Warning("Campo vuoto !!", xx)", senza indicazioni X e Y

Sorry ... :-[
A presto  :ciao: :ciao:
Siamo tutti ignoranti, ma fortunatamente non della stessa cosa. Albert Einstein

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.244
  • Tonno verde
    • Mostra profilo
Re:SetFocus di un TextBox che non và
« Risposta #3 il: 01 Febbraio 2018, 10:34:23 »
Grazie per il tuo tempo Gianluigi  :-*
Nel frattempo ho provato con:
Codice: [Seleziona]
my_win_admin.SetFocus()
Niente !  :rolleyes:
Poi con :
Codice: [Seleziona]
my_win_admin.Activate()
ancora no ... >:(
Probabilmente, poiché il balloon ha un effetto "Top Level" una volta disattivato la finestra in cui appare rimane inattiva,
infatti se tu ci clicki sopra i textbox riceve il setfocus.
Quindi bisogna trovare il giusto comando per farlo da codice, visto che ".Ativate()" non funziona.
A presto  :ciao: :ciao:
???
Citazione da: Gianluigi
Se tu fai la semplice prova tipo textbox2.setfocus funziona? Altrimenti è un problema di tema.

Non stavamo parlando del Focus alle TextBox  ???
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline vigiot

  • Gambero
  • **
  • Post: 75
    • Mostra profilo
Re:SetFocus di un TextBox che non và
« Risposta #4 il: 01 Febbraio 2018, 10:46:35 »
Si e no ... ;)
il SetFocus funziona nelle condizioni "normali", il problema sorge durante il ciclo di controllo...
Cerco di spiegarmi meglio ( almeno ci provo )
window in showModal
tutti i textbox in un pannello
un "bottone" con "Applica" ed uno con "Cancella"
Se selezioni "Applica" deve partire un ciclo con For Each .....
se tutti i campi sono completi Ok, diversamente Balloon e poi SetFocus sul controllo "orfano" ...
e qui ....

I miss the "know how" necessary to solve it  :-\ :-\
 :ciao: :ciao:
Siamo tutti ignoranti, ma fortunatamente non della stessa cosa. Albert Einstein

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.244
  • Tonno verde
    • Mostra profilo
Re:SetFocus di un TextBox che non và
« Risposta #5 il: 01 Febbraio 2018, 11:05:11 »
Scusa ma per capirsi non è meglio fare un piccolo esempio pratico?  >:(
Ad esempio questo a me funziona e a te?
Altrimenti spiegati meglio.

 :ciao:
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline vigiot

  • Gambero
  • **
  • Post: 75
    • Mostra profilo
Re:SetFocus di un TextBox che non và
« Risposta #6 il: 01 Febbraio 2018, 13:16:27 »
No.
Si comporta esattamente come il mio ...
il SetFocus al TextBox "Empty" lo riceve solo se attivi tu la finestra, non in automatico come vorrei che facesse.
Quello che intendo, dopo che è stato intercettato il "campo" nullo:
1) Balloon di avviso
2)Attivazione della finestra
3) SetFocus
Senza che sia necessario cliccare sulla finestra per attivarla ...  8)

Ciao  :ciao: :ciao:
Siamo tutti ignoranti, ma fortunatamente non della stessa cosa. Albert Einstein

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.244
  • Tonno verde
    • Mostra profilo
Re:SetFocus di un TextBox che non và
« Risposta #7 il: 01 Febbraio 2018, 13:39:12 »
Per cambiare il tema, potresti installare qt4-qtconfig (QT Configuration), poi lo imposti su Cleanlooks facendo attenzione al font che sia normale (di default lo mette su Mediun Italic) e vedere se poi ti funziona.

 :ciao:
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline vigiot

  • Gambero
  • **
  • Post: 75
    • Mostra profilo
Re:SetFocus di un TextBox che non và
« Risposta #8 il: 01 Febbraio 2018, 15:56:08 »
Il problema è proprio il Balloon !  :evil:
Se al posto del balloon usi un Message.Warning il resto funge !!
Quindi è sulla gestione del balloon che bisogna interrogarsi.  ??? ???
Prova anche nel tuo esempio ...

Grazie  :ciao: :ciao:
Siamo tutti ignoranti, ma fortunatamente non della stessa cosa. Albert Einstein

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.705
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:SetFocus di un TextBox che non và
« Risposta #9 il: 01 Febbraio 2018, 20:23:09 »
A me così funziona:

Codice: [Seleziona]
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
« Ultima modifica: 01 Febbraio 2018, 23:12:20 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline vigiot

  • Gambero
  • **
  • Post: 75
    • Mostra profilo
Re:SetFocus di un TextBox che non và
« Risposta #10 il: 01 Febbraio 2018, 21:06:24 »
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 :
Codice: [Seleziona]
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:

Siamo tutti ignoranti, ma fortunatamente non della stessa cosa. Albert Einstein

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.244
  • Tonno verde
    • Mostra profilo
Re:SetFocus di un TextBox che non và
« Risposta #11 il: 01 Febbraio 2018, 22:10:50 »
Scusa tanto ma il progetto esemplificativo da me postato solo a te non funziona.
Lo hai capito o no che a noi funziona?
Hai provato a installare QT Configuration e a cambiare il tema?
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline vigiot

  • Gambero
  • **
  • Post: 75
    • Mostra profilo
Re:SetFocus di un TextBox che non và
« Risposta #12 il: 01 Febbraio 2018, 23:06:05 »
 ???
Citazione
Hai provato a installare QT Configuration e a cambiare il tema?
Scusa, ma perché il tema ?
Sono ignorate, a cosa serve cambiarlo ?
C'entra qualcosa con il comportamento del balloon ?
E poi sapete spiegarmi perché se invece di richiamare un Balloon richiamo un MessageBox il tutto funziona come voglio io ?
Fatemi sapere ...
 :ciao:
Siamo tutti ignoranti, ma fortunatamente non della stessa cosa. Albert Einstein

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.705
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:SetFocus di un TextBox che non và
« Risposta #13 il: 01 Febbraio 2018, 23:17:59 »
Ricapitoliamo, passo, passo
1)Creo una finestra .....
:hard:
No, guardate.... come metodo: quando i codici sono sufficientemente complessi, dovete abituarvi a postare brevi e semplici progetti esemplificativi, che riproducano il problema riscontrato, sui quali gli altri membri del forum possano effettuare le prove.
Non si può pretendere anche che gli altri debbano interpretare e riscrivere la struttura di un progetto !
« Ultima modifica: 01 Febbraio 2018, 23:21:47 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline vigiot

  • Gambero
  • **
  • Post: 75
    • Mostra profilo
Re:SetFocus di un TextBox che non và
« Risposta #14 il: 02 Febbraio 2018, 14:16:05 »
Vuott sei MITICO !  ;D
Hai sempre il modo giusto di dire le cose ...


Ecco il "provino"  ;)
Fatemi sapere grazie
 :ciao: :ciao:
Siamo tutti ignoranti, ma fortunatamente non della stessa cosa. Albert Einstein