Autore Topic: [Risolto] Come mai il campo descrizione non prende il focus???  (Letto 514 volte)

Offline Franco_da_vc

  • Grande Gambero
  • ***
  • Post: 215
  • Non è mai troppo tardi!
    • Mostra profilo
Ho scritto una porzione di codice che mi da un po' di grattacapi, il guaio è che non riesco a capire cosa non gira, perché per me dovrebbe essere quella l'esatta codifica che avrei dovuto scrivere.

Alura, il codice è il seguente
Codice: [Seleziona]
Public Sub ListLavori_Select()

  pos3 = ListLavori.Index
  If pos3 = 0
    sw_altro = True
    If FMain.tipoBll - 1 = 2
      TextPersona.SetFocus
      Endif
    TextDescr.SetFocus()
    INS_PREZZO(0)
    Else
    descr$ = lavori$[pos3]
    TextDescr.Text = descr$
    prezzoUnit = prezzoVis[pos3]
    INS_PREZZO(1)
    Endif
  ListCapi.Enabled = False
  ButtonInsert.Background = &FF0000
  ButtonInsert.Enabled = False
  ButtonCancel.Background = &FF0000
  ButtonCancel.Enabled = False
  ButtonConf.Background = &00FF00
  ButtonConf.Enabled = True

End

Mi vorrei focalizzare sul TextDescr.SetFocus() secondo quanto avevo capito, arrivato a questa istruzione, il programma avrebbe dovuto fermarsi e far partire un prompt nell'oggetto textdescr appartenente alla classe TextBox ed uscirsene tramite un carattere di enter o di tab (definiti in una seconda sub).

Questo però non avviene, o meglio non avviene più, infatti oggi ho pulito il codice da righe del precedente programma (tra l'altro tutte commentate) da cui sto traducendo questo e.... chissà cosa ho cancellato, ha smesso di funzionare come io credevo, ho provato ad arzigogolare sul listato, ma non ci ho cavato il ragno dal buco.

 :hard: :hard: :hard:

Qualcuno sa darmi una mano?

P.S.: Appena risolta questa problematica, ne ho una seconda sempre inerente al brano di codice che ho riportato, ma ora non ne menziono per non essere troppo pedante e non mettere troppa carne al fuoco.

Grazie a tutti, Ciao.
« Ultima modifica: 01 Maggio 2017, 15:09:33 da Franco_da_vc »
Bye by Afo

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.720
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Ma sarà giusto o no questo codice??? 1/2
« Risposta #1 il: 26 Aprile 2017, 00:48:10 »
Mi vorrei focalizzare sul TextDescr.SetFocus() secondo quanto avevo capito, arrivato a questa istruzione, il programma avrebbe dovuto fermarsi e far partire un prompt nell'oggetto textdescr appartenente alla classe TextBox

Quale sarebbe il comando che fa partire il prompt nell'oggetto textdescr  ? Forse la funzione INS_PREZZO( ) ? E quale è il codice da essa contenuto ?
« 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 Franco_da_vc

  • Grande Gambero
  • ***
  • Post: 215
  • Non è mai troppo tardi!
    • Mostra profilo
Re:Ma sarà giusto o no questo codice??? 1/2
« Risposta #2 il: 26 Aprile 2017, 08:48:37 »
Ciao Vuott e grazie,

la funzione INS_PREZZO() contiene un po' di codice che interagisce sul prezzo che viene inserito tramite ValuePrezzoU.SetFocus oppure che viene preso in diretta da prezzoUnit secondo come viene pilotato il programma; similmente al primo caso (ValuePrezzoU.SetFocus) pensavo che l'istruzione TextDescr.SetFocus provocasse l'input del della descrizione lavoro.

Ciao
Bye by Afo

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.244
  • Tonno verde
    • Mostra profilo
Re:Ma sarà giusto o no questo codice??? 1/2
« Risposta #3 il: 26 Aprile 2017, 12:22:21 »
Non so se ho compreso il problema ma guarda questo esempio se può aiutarti:
(Una finestra con due textbox e un pulsante)
Codice: [Seleziona]
' Gambas class file

Public Sub ListLavori_Select()
 
  ' pos3 = ListLavori.Index
  ' If pos3 = 0
  '   sw_altro = True
  '   If FMain.tipoBll - 1 = 2
  '     TextPersona.SetFocus
  '   Endif
  '   TextDescr.SetFocus()
  '   INS_PREZZO(0)
  ' Else
  '   descr$ = lavori$[pos3]
  '   TextDescr.Text = descr$
  '   prezzoUnit = prezzoVis[pos3]
  '   INS_PREZZO(1)
  ' Endif
  ' ListCapi.Enabled = False
  ' ButtonInsert.Background = &FF0000
  ' ButtonInsert.Enabled = False
  ' ButtonCancel.Background = &FF0000
  ' ButtonCancel.Enabled = False
  ' ButtonConf.Background = &00FF00
  ' ButtonConf.Enabled = True
 
  TextDescr.SetFocus()
 
End

Public Sub TextDescr_GotFocus()
 
  Message.Info("Mi hai dato fuoco")
  ' se non esco il prompt rimane bloccato!
  TextPippo.SetFocus()
 
End

Public Sub Button1_Click()

  ListLavori_Select()

End

Prova a entrare in TextDescr sia da TextPippo che dal pulsante commentando TextPippo.SetFocus()

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

Offline Franco_da_vc

  • Grande Gambero
  • ***
  • Post: 215
  • Non è mai troppo tardi!
    • Mostra profilo
Re:Ma sarà giusto o no questo codice??? 1/2
« Risposta #4 il: 27 Aprile 2017, 16:36:02 »
Grande Gianluigi e grazie,

comunque ti tedio ancora.... il mio listato differiva dal tuo per la Public Sub TextDescr_GotFocus() che hai aggiunto e per l'istruzione TextDescr.SetFocus() in fondo alla Public Sub ListLavori_Select();

Ho provato ad aggiungere in primis la Public Sub TextDescr_GotFocus() , ma non ho ottenuto miglioramenti, ho aggiunto invece l'istruzione in fondo alla alla sub originale ed anche senza la funzione aggiunta tutto e tornato (quasi magicamente) a funzionare, ma come mai?
Se in quella posizione l'istruzione agisce dovrebbe agire anche nella posizione ove l'ho inserita io.... in effetti la sequenza degli input che si susseguono mi fa pensare che sia la prima l'istruzione che interagisce, ma allora perché ho dovuto inserire la seconda istruzione simile?

In ogni caso inserisco il risolto ed entro breve inserirò la seconda problematica.

Ciao.
Bye by Afo

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.244
  • Tonno verde
    • Mostra profilo
Re:[Risolto] Ma sarà giusto o no questo codice??? 1/2
« Risposta #5 il: 27 Aprile 2017, 17:13:31 »
Bene, sono contento che tu abbia risolto anche se non ho capito come.   :D

Sei stato tu nel primo post che ci chiedevi di focalizzarci proprio su TextDesc.SetFocus() istruzione che faceva partire un prompt.
Ora se tu dai il focus a qualcosa e ti aspetti una risposta mi sembra logico che la risposta ti arrivi da GotFocus oppure mi sono perso qualcosa del ragionamento, cosa peraltro molto facile.  ;D

Forse nei post converrebbe evitare parole che possono essere interpretate in modi differenti (es. prompt) che io in un programma grafico associo a finestre di input o comunque di dialogo in generale.

Per concludere normalmente il focus ad altro controllo si da sempre alla fine del codice.

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

Offline Franco_da_vc

  • Grande Gambero
  • ***
  • Post: 215
  • Non è mai troppo tardi!
    • Mostra profilo
Re:[Risolto] Ma sarà giusto o no questo codice??? 1/2
« Risposta #6 il: 27 Aprile 2017, 21:41:37 »
Per concludere normalmente il focus ad altro controllo si da sempre alla fine del codice.

Mmmh! forse ho capito, al momento della partenza della Public Sub ListLavori_Select() il programma è in effetti focalizzato sulla lista dei lavori da scegliere e quindi ciò verifica a pieno la tua ultima frase.

In ogni caso ti ringrazio ancora.

Caio
Bye by Afo