Autore Topic: [Risolto] come spostare il focus  (Letto 803 volte)

Offline Picavbg

  • Senatore Gambero
  • ******
  • Post: 1.620
    • Mostra profilo
[Risolto] come spostare il focus
« il: 01 Ottobre 2015, 23:52:51 »
Con Gambas ho imparato a non fidarmi dell'istruzione SetFocus che in VB funzionava perfettamente.
A causa di errori operativi riscontrati all'interno di una FormXX.class, mi sono deciso a rivedere il codice scritto a suo tempo e modificarlo radicalmente, nella speranza di ottenere un funzionamento sempre corretto.
La Form in questione gestisce alcune ComboBox che sono viste come Groups. Ciò determina l'impossibilità di sapere quale delle diverse ComboBox abbia il Focus. In determinate condizioni raggiunte durante la digitazione, la sequenza naturale  delle istruzioni dovrebbe interrompersi per riprendere dal GotFocus della ComboBox appena lascita. Infatti la necessità di tornare alla ComboBox precedente può essere intercettata solamente all'interno dell'evento LostFocus della stessa, cioè soltanto dopo che la ComboBox precedente non è più attiva.. Non potendo a tal punto utilizzare in maniera semplice il SetFocus, l'unica strada percorribile diventerebbe, a mio avviso, quella di simulare la pressione della combinazione di tasti [shift+ backtab]. Ho dato una rapida lettura qui, ma non ho capito come ottenere il CHR corrispondente alla Key.BackTab. Ho tentato allora di provare la seguente istruzione:
Codice: [Seleziona]
 Desktop.SendKeys(Key.BackTab)
L'istruzione è stata eseguita apparentemente bene, però il Focus non è tornato alla ComboBox precdente, contrariamente  a quanto sperato. Infatti si è spostato comunque alla ComboBox immediatamente successiva.
Sono, pertanto. ahimè, costretto a vestire i panni del principiante per ottenere eventuali suggerimenti in merito al mio imprevedibile problema.
 :(
« Ultima modifica: 02 Ottobre 2015, 12:13:29 da Picavbg »
:ciao:

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.724
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:come spostare il focus
« Risposta #1 il: 02 Ottobre 2015, 01:07:37 »
...simulare la pressione della combinazione di tasti [shift+ backtab].
L'istruzione è stata eseguita apparentemente bene, però il Focus non è tornato alla ComboBox precdente, contrariamente  a quanto sperato. Infatti si è spostato comunque alla ComboBox immediatamente successiva.

Dovresti usare:

Codice: [Seleziona]
Desktop.SendKeys("{[Shift_L] [Tab]}") 
« 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 Picavbg

  • Senatore Gambero
  • ******
  • Post: 1.620
    • Mostra profilo
Re:come spostare il focus
« Risposta #2 il: 02 Ottobre 2015, 12:12:36 »
Dovresti usare:
Codice: [Seleziona]
Desktop.SendKeys("{[Shift_L] [Tab]}") 

No, non funziona.
Comunque, non ti crucciare più di tanto, ho risolto con:
Codice: [Seleziona]
Private $SetFocus As String
--- bla --- bla --- bla ---
Public Sub CmbVociCont_LostFocus()
'-------------------------------------
  CmbVoCoLostFocus_mio(Last.Name)
End

Private Sub CodVoxManLostFocus_mio()
--- bla --- bla --- bla ---
 VoContCas.SetFocus       
$SetFocus = "VoContCas"   
--- bla --- bla --- bla ---
End

Public Sub CmbVociCont_GotFocus()
  CmbVociCont_Entry()
End

Private Sub CmbVociCont_Entry()
 If $SetFocus = Null Then
--- bla --- bla --- bla ---
endif
$SetFocus = Null
End

Procedendo col comando SetFocus e la successiva memorizzazione della ComboBox.Name richiamata, posso capire nella procedura comune di GotFocus se esiste un richiamo diverso dalla sequenza naturale di Gambas ed abbandonare la procedura. Poi Gambas riesce a puntare il Focus sulla ComboBox voluta da me.
Quindi non farò altre prove. Grazie per la collaborazione. Mi dispiace di avere impegnato la comunità per niente.
Chiedo umilmente scusa.


:ciao:

Offline kicco

  • Senatore Gambero
  • ******
  • Post: 1.728
  • So dove andare, seguitemi, ci perderemo insieme!
    • Mostra profilo
Re:[Risolto] come spostare il focus
« Risposta #3 il: 02 Ottobre 2015, 12:25:17 »
Citazione
Mi dispiace di avere impegnato la comunità per niente.
..mi sto ancora asciugando il sudore!  ;D ;D ;D

Intanto se avremo un problema analogo, qua troveremo un modo per risolverlo. :)
 :ciao:
Chi ha paura muore ogni giorno, chi non ha paura muore una volta sola. (Paolo Borsellino)

Offline sotema

  • Maestro Gambero
  • ****
  • Post: 467
    • Mostra profilo
Re:[Risolto] come spostare il focus
« Risposta #4 il: 02 Ottobre 2015, 13:22:34 »
non so sefanno al caso tuo le seguenti proprietà:

Application.ActiveControl
Application.PreviousControl

per ripristinare il focus all'oggetto precedente puoi usare: Application.PreviousControl.SetFocus



L'uomo ha inventato la bomba atomica, ma nessun topo al mondo costruirebbe una trappola per topi.
Albert Einstein

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.724
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:come spostare il focus
« Risposta #5 il: 02 Ottobre 2015, 14:08:17 »
Codice: [Seleziona]
Desktop.SendKeys("{[Shift_L] [Tab]}") 

No, non funziona.

E' davvero alquanto strano, poiché quello è il protocollo previsto per ottenere l'effetto Shift+Tab.
A me infatti funziona benissimo. L'ho provato facendo spostare indietro con un ciclo il focus su 5 ComboBox e un Button.



non so sefanno al caso tuo le seguenti proprietà:

Application.ActiveControl
Application.PreviousControl

per ripristinare il focus all'oggetto precedente puoi usare: Application.PreviousControl.SetFocus
Ieri anche io volevo proporgli questa identica soluzione, che ritengo la migliore; ma lui ha detto che non si fida ??? del metodo .Setfocus   :-\
« Ultima modifica: 02 Ottobre 2015, 14:42:01 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 Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.244
  • Tonno verde
    • Mostra profilo
Re:[Risolto] come spostare il focus
« Risposta #6 il: 02 Ottobre 2015, 14:20:17 »
Caro Picavbg,
come al solito sono pienamente d'accordo con quanto scritto da kicco, rafforzato dall'ulteriore suggerimento appena posto da sotema e nuovamente da vuott.
Le tue domande non sono mai per niente, tutt'altro, posso testimoniare pubblicamente che gran parte di quello che so su Gambas l'ho appreso dalle risposte alle tue curiose domande e dalle soluzioni che non ti sei mai risparmiato di condividere con questo forum da molto prima che io arrivassi.
Lo so potresti obiettare che io di Gambas so poco e pertanto il mio non è un complimento  ;D in fiduciosa attesa di rileggerti ti porgo il mio:
GRAZIE  :-*
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro