Sempre a proposito di folder

Moderator: Enrico Maria Giordano

Post Reply
User avatar
Marco Turco
Posts: 858
Joined: Fri Oct 07, 2005 12:00 pm
Location: London
Contact:

Sempre a proposito di folder

Post by Marco Turco »

Grazie anzitutto ad EMG per la dritta precedente.

Dopo arduo lavoro con i folder mi sono accorto - arghhh - che utilizzando il tasto Enter all'interno del folder il focus non viene passato al campo successivo.

Per esempio se ho il focus su una combobox e premo Enter, il focus non si muove sul campo successivo ma rimane sulla combobox.
Il problema non si verifica invece se i campi sono in una dialog anziché in un folder.

Ecco un self-contained che mostra il problema
www.softwarexp.co.uk/beta/test.zip

In pratica nell'esempio se premo invio il focus non si sposta.

Qualche idea ?
Sono abbastanza disperato in quanto trattandosi di un programma di contabilità è essenziale poter utilizzare la tastiera per tutta la sequenza di inserimento.

Marco
User avatar
Enrico Maria Giordano
Posts: 7355
Joined: Thu Oct 06, 2005 8:17 pm
Location: Roma - Italia
Contact:

Re: Sempre a proposito di folder

Post by Enrico Maria Giordano »

Basta premere TAB, che è il tasto standard di Windows per muoversi tra un controllo e l'altro e l'unico che funziona sempre (mentre l'Invio non può funzionare in vari casi come GET multiline, presenza di pulsante di default, etc.).

Comunque è inutile che io provi l'esempio in quanto se non funziona c'è poco da fare: o si modifica in qualche modo la classe TGet o TFolder (non saprei quale delle due) oppure si agisce a forza di SetFocus(), soluzioni entrambi inaccettabili.

EMG
User avatar
Marco Turco
Posts: 858
Joined: Fri Oct 07, 2005 12:00 pm
Location: London
Contact:

Post by Marco Turco »

Il mio problema riguarda solo i combobox,
la cosa strana è che un combobox in una dialog passa al campo successivo premendo invio mentre in un folder non si muove.

Putroppo la maggior parte dei clienti è ormai abituata ad utilizzare il tasto invio dato che la schermata di inserimento era precedentemente in una dialog e questo era consentito.

Provo a sentire se Antonio ha qualche idea.

Grazie in ogni caso.

Saluti

Marco
User avatar
Marco Turco
Posts: 858
Joined: Fri Oct 07, 2005 12:00 pm
Location: London
Contact:

Post by Marco Turco »

Antonio ha risolto il problema.

Approfitto per un piccolo quesito:

se ho il focus su una get e voglio che premendo invio (quindi il dato inserito viene accettato e si perde il focus) come faccio a trasferire il focus su un altro oggetto ?

Ho provato inserendo dopo l'oggetto GET oGet1

oGet1:bLostFocus={||oBtn:SetFocus()}

in modo da trasferire il focus al BUTTON oBtn

Però non funziona, ossia, l'operazion oBtn:SetFocus() viene eseguita ma il focus non viene trasferito.

Ho provato anche con oGet1:oJump=oBtn ma senza successo

Qualche suggerimento ?

Marco
User avatar
Enrico Maria Giordano
Posts: 7355
Joined: Thu Oct 06, 2005 8:17 pm
Location: Roma - Italia
Contact:

Post by Enrico Maria Giordano »

Ho provato anche con oGet1:oJump=oBtn ma senza successo
Eppure così dovrebbe funzionare. Al solito, un esempietto può far capire se e dove sbagli.

EMG
User avatar
Marco Turco
Posts: 858
Joined: Fri Oct 07, 2005 12:00 pm
Location: London
Contact:

Post by Marco Turco »

Eccolo su
www.softwarexp.co.uk/beta/testget.zip

In pratica quando parte il programma il focus è sulla prima Get (oGet1),
vorrei che premendo invio vada poi sul pulsante oBtnEnd.

Marco
User avatar
Enrico Maria Giordano
Posts: 7355
Joined: Thu Oct 06, 2005 8:17 pm
Location: Roma - Italia
Contact:

Post by Enrico Maria Giordano »

Aggiungi la clausola ON INIT al comando ACTIVATE DIALOG:

ON INIT oGet1:oJump := oBtnEnd

Però non capisco a cosa ti serva mettere il focus sul pulsante. Rendilo di default oppure metti una clausola WHEN ai (o disattiva i) controlli da saltare.

EMG
User avatar
Marco Turco
Posts: 858
Joined: Fri Oct 07, 2005 12:00 pm
Location: London
Contact:

Post by Marco Turco »

Ok. Funziona, grazie 1000.

L'esempio che ti inviato era una semplificazione del problema in realtà la mia schermata di inserimento è costituita in sequenza da:

<oggetti nella dialog1 del folder>
combobox
get
get
combobox
get
browse

<oggetti nel folder ma fuori della dialog>

button
button

Il problema era che dall'ultima get il focus mi andava sul browse anziché sul button questo perché il browse è incluso nella dialog1 ed ha quindi una "priorità" rispetto al primo button esterno alla dialog.

Mi era rimasto solo questo problema per poter gestire l'inserimento dei dati anche senza dover necessariamente utilizzare il mouse, semplicemente premento invio.

Guardando la cosa da un punto di vista da programmatore il fatto di passare da un campo all'altro con invio è in effetti poco ortodossa ma dal punto di vista commerciale è veramente importante per un programma di contabilità che prevede un inserimento ripetuto di dati.

Ciao e grazie.

Marco
User avatar
Enrico Maria Giordano
Posts: 7355
Joined: Thu Oct 06, 2005 8:17 pm
Location: Roma - Italia
Contact:

Post by Enrico Maria Giordano »

Continuo a non essere d'accordo. Che differenza c'è tra premere Invio o Tab? Io credo che la maggior parte degli utenti di Windows siano abituati ad utilizzare Tab.

EMG
User avatar
Marco Turco
Posts: 858
Joined: Fri Oct 07, 2005 12:00 pm
Location: London
Contact:

Post by Marco Turco »

Il supporto del tasto di invio è stata nel mio caso una scelta originariamente dettata dalla necessità di mantenere le medesime operazioni che l'utente faceva con la versione DOS del mio applicativo per effettuare così una immediata migrazione al sistema Windows e non dover mantenere 2 piattaforme per un periodo transitorio.

Diverse società concorrenti hanno inoltre ancora pacchetti in DOS o (più frequente) DOS in finestra Windows (tipo quella modalità di migrazione ibrida presente nella prima versione di VO) ed ancora, ci sono software che operano in modalità terminale in remoto.

Vero che utilizzando il TAB si potrebbe passare da un campo al successivo mantenendo lo "standard" Windows, tuttavia il mio cliente tipico (o meglio il personale del mio cliente) inserisce centinaia di documenti al giorno e un conto è poterli inserire semplimente premendo invio, un altro è dover premere alla fine OK con il mouse o dover comunque utilizzare l'invio per confermare la registrazione dei dati.

Marco
Post Reply