Gambas-it

Gambas3 => Programmazione => Topic aperto da: luigitessitore - 31 Luglio 2012, 02:07:11

Titolo: BANALE: Evento KeyPress
Inserito da: luigitessitore - 31 Luglio 2012, 02:07:11
Salve a tutti,
una domanda banale ma che non sono riuscito a chiarire con le varie ricerche tramile BigG.
Ho bisogno di realizzare una applicazione "cieca".. che modifichi dei valori su alcune label alla pressione di determinati tasti.
Ora, l'evento KeyPress si applica *per forza* ad un oggetto (es textbox) oppure posso catturare la pressione di un tasto solo caricando il form?
Come faccio?

Grazie. :-[
Titolo: Re: BANALE: Evento KeyPress
Inserito da: Picavbg - 31 Luglio 2012, 15:58:05
Non hai specificato se i tasti siano tasti carattere o altro, nè quale sia l'oggetto attivo al momento della pressione dei tasti, tuttavia trattandosi di una rilevazione, credo di capire, di tipo generico, penso che tu voglia catturare l'evento, qualunque sia l'ioggetto grafico attivo in quel momento nella Form.
Per ovviare a ciò, G3 lo permette, puoi scrivere una procedura evento _KeyPress nella Form di tuo interesse, Essa viene schedulata per qualsiasi pressione di tasto che avvenga dentro la Form o dentro un qualsiasi oggetto interno alla Form stessa. Faccio un esempio di procedura _KeyPress:
Codice: gambas [Seleziona]
Public Sub Form1_KeyPress()
  Select Case Key.Code
              Case Key.Enter, Key.Return      'testa la pressione del tasto "INVIO" del tastierino numerico ovvero della tastiera alfanumerica
                   Label1.text = "INVIO"
              Case Key.F1
                   Label2.text = "Tasto F1"
              Case "0" To "9"
                   Label2.text = "crt numerico"
  End Select
End

Spero di avere capito la domanda.   :)  :ciao:
Titolo: Re: BANALE: Evento KeyPress
Inserito da: luigitessitore - 31 Luglio 2012, 21:54:05
Perfetto.
Hai compreso esattamente la situazione.
Premessa: non ho le idee ben chiare su cosa voglio realizzare; diciamo che sto sperimentando un pò Gambas.

In sostanza vorrei analizzare la possibilità di realizzare una specie di "eliminacode", un qualcosa che, opportunamente connesso ad un monitor medio/grande, mi tenga sotto controllo il numero che è attualmente interessato dal commesso.

Pensavo, a grandi linee, di creare una applicazione che non prevedesse altro input che i tasti di una keypad usb.
Immaginavo di poter includere nel form due/tre label con visualizzato un progressivo. Premendo, per esempio, il Key7 aumento di una unità il numero nella label1, il Key 4 diminuisco di una unità e con il Key1 porto a zero il counter. Idem per le altre label.

Grazie al tuo contributo ho una base da cui partitre.
Facciamo così: se questa specie di "analisi" interessa qualcun altro possiamo continuare a confrontarci, altrimenti chiudiamo il thread con un bel RISOLTO.
Ok?

:)
Titolo: Re: BANALE: Evento KeyPress
Inserito da: Picavbg - 31 Luglio 2012, 23:01:09
Quindi alludi a qualcosa simile all'allegato?  :)

É solo un'idea che naturalmente puoi giostrare a tuo piacimento. La nota riportata in calce alla Form è un esempio, ma che potrebbe anche non essere mostrata. Il tastierino potrebbe essere sostituito da un semplice mouse o simile ai cui tasti Dx e Sx potrebbero essere associati i valori "+" e "-", mentre l'azzeramento potrebbe essere comandato dalla pressione della rotella. Sono tutte e semplicemente idee.
Una curiosità: la postazione  operativa è ad uso esclusivo del commesso o, grazie al programmino, oltre ad eliminare le code, elimineresti ...  anche il commesso?  :o
Chiedo scusa per lo scherzo ... pesante, ma la colpa è sempre della cosiddetta tecnologia. Infatti sono sempre più convinto che per il bene di tutti occorrerebbe  :hatecomputer:
 :ciao:


Titolo: Re: BANALE: Evento KeyPress
Inserito da: luigitessitore - 31 Luglio 2012, 23:47:51
Allora.. mi spiego un pò meglio.
Volevo analizzare la possibilità di creare un sistema eliminacode leggermente diverso da quelli utilizzati dai supermercati o dalle Poste. Faccio un esempio concreto di applicazione.
Una sagra.
Alla cassa io pago per 10 salsicce, 2 bottiglie di Acqua, 3 bruschette. Mi viene associato il progressivo 33.
Il tizio prima di me paga per 3 spaghetti e ha il progressivo 32.
Può benissimo capitare che la mia comanda, 33, venga servita PRIMA della sua, solo perchè gli spaghetti non sono ancora cotti. E fino qui nulla di strano.
Ma immaginiamo cosa succede allo sportello del ritiro vassoi: non è detto che se preparo il vassoio 29 il legittimo proprietario si precipita a prenderlo. Nel frattempo possono essere pronti anche il 24, il 30 ed il 31.. Da qui nasce la necessità di realizzare un sistema che mi consenta di visualizzare I VASSOI PRONTI && I VASSOI NON RITIRATI. E' facile pensare che possano essere al massimo tre.. da qui nasce l'idea di un monitor con tre "label" comandabili da keypad USB. Perchè da keypad? Perchè l'operatore che deve consegnare i vassoi non ha "tempo da perdere" con mouse, puntamenti, doppi click e interfacce.

Eccezioni.

Che succede se ho un solo vassio? Devo mandare a NULL ,per esempio, Label1 e Label3 (le label più esterne), lasciano attiva Label2. Supponendo di dividere il tastierino in "colonne", potrei usare Key.7 per incrementare il numero, Key.4 per decrementare e Key.1 per NULL.

Ok, supponiamo che Label1 e 3 =null e Label2=35, che succede se devo reimpostare, per esempio, Label1 a 36? Mica posso premere 36 volte su Key.7? Vero. A questo punto è previsto un controllo sul numero maggiore attualmente visualizzato su una label, lo catturo in una variabile, lo incremento, e alla pressione di Key.7 (->Label1) o Key.9 (->Label2) lo sparo come Labelx.value.

Perplessità.
Devo realizzare un Form che si adatti alla dimensione max dello schermo e che mi deve garantire un buon risultato a numerose risoluzioni ( a partire da un min. di 1024*768).

Features "fighe".
Una voce sintetizzata che mi annuncia i numeri attualmente visualizzati.

Features "fighe" - Ver.2
Montare tutto su Raspberry. Uff.. :o

Note:
il software di gestione, creazione e stampa comande l'ho già fatto in PHP+MySQL (da anni.. già testato. Anche se l'ho riscritto ex-novo con CodeIgniter). Anche il sistema di gestione l'ho già realizzato con PHP+MySQL+Javascript. Pare che funzioni bene. Ma sono un fottuto masochista. Q Linux. W Gambas.
;)
Titolo: Re: BANALE: Evento KeyPress
Inserito da: vuott - 01 Agosto 2012, 02:51:21
Perplessità.
Devo realizzare un Form che si adatti alla dimensione max dello schermo e che mi deve garantire un buon risultato a numerose risoluzioni ( a partire da un min. di 1024*768).

La dimensione dello schermo dovresti ottenerlo con:
Codice: gambas [Seleziona]

Public Sub Button1_Click()

 Dim w, h As Integer  

   w = Screen.AvailableWidth
   h = Screen.AvailableHeight

   Print w, h

End
Titolo: Re: BANALE: Evento KeyPress
Inserito da: Picavbg - 01 Agosto 2012, 08:40:40
@  luigitessitore:
Ora credo di avere veramente  capito quello che vuoi fare. E siccome, come noi, sei un linux-dipendente, fai più che bene a riscrivere il programma in Gambas. Se ti occorre aiuto non devi fare altro che chiedere. Perchè, intanto, non cominci a disegnarti la tua brava Form FMain? Nella corrispondente FMain-class potresti come prima cosa scrivere le istruzioni suggerite da vuott per ottenere già subito una form che occupi tutto lo schermo, tanto penso che poi non avrai più bisogno di demassimizzarla.
Buon lavoro.  :ciao:
Titolo: Re: BANALE: Evento KeyPress
Inserito da: Picavbg - 01 Agosto 2012, 08:59:58
@ vuott:
Ho provato per curiosità le istruzioni che hai suggerito prima per la Form a tutto schermo, ma a me non ha funzionato; ha prodotto solo un Print nella console di Gambas, ma senza alcun effetto sulla dimensione grafica della Form stessa . Riconosco che non fino ad oggi non mi sono mai  preoccupato di risolvere tale problematica.
 :ciao:
Titolo: Re: BANALE: Evento KeyPress
Inserito da: vuott - 01 Agosto 2012, 16:57:14
@ vuott:
Ho provato per curiosità le istruzioni che hai suggerito prima per la Form a tutto schermo, ma a me non ha funzionato; ha prodotto solo un Print nella console di Gambas, ma senza alcun effetto sulla dimensione grafica della Form stessa . Riconosco che non fino ad oggi non mi sono mai  preoccupato di risolvere tale problematica.
...il Print ovviamente era solo per mostrare  :violent: in modo esemplificativo e didattico cosa restituivano quelle funzioni ! Resta ovvio che sarà il programmatore a servirsi nel modo più opportuno e consono al suo progetto dei valori contenuti in quelle variabili !
Al riguardo ricordo e sottolineo che quelle istruzioni ritornano semplicemente e non impostano i valori del rettangolo del desktop utilizzabile visualizzato sul video. Dunque quei valori, ovviamente, possono essere utilizzati per impostare le dimensioni di un Form (o di quant'altro).


@ vuott:
Ho provato per curiosità le istruzioni che hai suggerito prima per la Form a tutto schermo, ma a me non ha funzionato; ha prodotto solo un Print nella console di Gambas...
 :ciao:
......quindi a te ha funzionato !  :D
   :ciao:
Titolo: Re: BANALE: Evento KeyPress
Inserito da: Picavbg - 01 Agosto 2012, 23:02:32
sottolineo che quelle istruzioni ritornano semplicemente e non impostano i valori del rettangolo del desktop utilizzabile visualizzato sul video. Dunque quei valori, ovviamente, possono essere utilizzati per impostare le dimensioni di un Form (o di quant'altro).

......quindi a te ha funzionato !  :D
   :ciao:
Se volevi convincermi con la spiegazione ultima, mi dispiace, ma non ci sei proprio riuscito. Infatti, qualora si voglia rendere automatico il dimensionamento a tutto schermo di una Form, a prescindere dalla caratteristiche tecniche del monitor, sicuramente l'istruzione che hai riportato come esempio non va bene. Allora, siccome non capisco per limiti miei che cosa intendi con la frase
Citazione
sarà il programmatore a servirsi nel modo più opportuno e consono al suo progetto dei valori contenuti in quelle variabili !
conviene riprendere l'esempio e scriverci valori ed istruzioni, magari riguardanti anche le proprietà della Form, che permettano di capire chiaramente il comportamento consono del programmatore.
Che ne dici?   ;)  ;D
Titolo: Re: BANALE: Evento KeyPress
Inserito da: vuott - 02 Agosto 2012, 00:34:50
conviene riprendere l'esempio e scriverci valori ed istruzioni, magari riguardanti anche le proprietà della Form, che permettano di capire chiaramente il comportamento consono del programmatore.
Che ne dici?   ;)  ;D

....se lo viene a sapere md9327, la ceskhonite ce la fa passare a tutti e due a botte di.....!  :death:

A lui piacerebbe di più  ;D se io dicessi che magari.... si potrebbe proporzionare la dimensione del Form sulla base appunto dei valori relativi al desktop disponibile passati da quelle funzioni là....  :-[
...dire e non-dire...  :devil:
Titolo: Re: BANALE: Evento KeyPress
Inserito da: md9327 - 02 Agosto 2012, 10:49:04
 :evil: APPUNTO!  :evil:

 :D
Titolo: Re: BANALE: Evento KeyPress
Inserito da: vuott - 02 Agosto 2012, 11:08:53
:evil: APPUNTO!  :evil:

 :D

Forse mi sono salvato... in corner !  ;D
Titolo: Re: BANALE: Evento KeyPress
Inserito da: md9327 - 02 Agosto 2012, 12:18:40
Ah, te ne sei accorto in tempo, eh?!?

Sai cosa succede a quelli che aiutano troppo... vengono infettati forzatamente con la "ceskhonite" BLU (quella VERDE è terminata...).

Quello che fà la ceskhonite blu è orribile...  :'(
Titolo: Re: BANALE: Evento KeyPress
Inserito da: vuott - 02 Agosto 2012, 12:33:23
Ah, te ne sei accorto in tempo, eh?!?

Sai cosa succede a quelli che aiutano troppo... vengono infettati forzatamente con la "ceskhonite" BLU (quella VERDE è terminata...).

Quello che fà la ceskhonite blu è orribile...  :'(

...cioè.... mo' c'ha pure il Bollino blu ?  :rolleyes:
Titolo: Re: BANALE: Evento KeyPress
Inserito da: md9327 - 02 Agosto 2012, 14:20:07
Eccerto!!!
E ogni due anni deve fare pure la revisione... questo perchè il virus possa mantenersi attivo e vitale...  ;D
Titolo: Re: BANALE: Evento KeyPress
Inserito da: luigitessitore - 02 Agosto 2012, 16:13:18
Ok.. ok..
Non c'è bisogno di rischiare "romazine".
Solo un'altra cosa.. Sarebbe possibile realizzare una applicazione che possa andare in full-screen REALE, cioè sopra eventuali barre/interfacce (Gnome, Unity e briscola).
Oppure, ancora meglio, essere reindirizzata su un altro monitor..??
Titolo: Re: BANALE: Evento KeyPress
Inserito da: vuott - 02 Agosto 2012, 16:42:27
Sarebbe possibile realizzare una applicazione che possa andare in full-screen REALE, cioè sopra eventuali barre/interfacce (Gnome, Unity e briscola).

Ahia !  :-X Qua mi faccio male !

full-screen REALE..... forse con: Screen.Height e Screen.Width ?


Oppure, ancora meglio, essere reindirizzata su un altro monitor..??
Eh.... qua ci vuole qualche Santo degli schermi: San Midi non mi ha concesso le conoscenze adeguate a questo riguardo così complesso !........  :-\
Titolo: Re: BANALE: Evento KeyPress
Inserito da: Picavbg - 02 Agosto 2012, 19:52:06
si potrebbe proporzionare la dimensione del Form sulla base appunto dei valori relativi al desktop disponibile passati da quelle funzioni là....  :-[
...dire e non-dire...  :devil:

 :hard:  :mad:   ;)  :ciao:
Titolo: Re: BANALE: Evento KeyPress
Inserito da: vuott - 02 Agosto 2012, 20:01:02
si potrebbe proporzionare la dimensione del Form sulla base appunto dei valori relativi al desktop disponibile passati da quelle funzioni là....  :-[
...dire e non-dire...  :devil:

 :hard:  :mad:   ;)  :ciao:

Io non ci credo che tu non sia in grado di gestire quelle variabili, Picavbg !  ???
Non sei mica uno alle prime armi !!!
Titolo: Re: BANALE: Evento KeyPress
Inserito da: Picavbg - 02 Agosto 2012, 20:11:25
É vero, ho risolto, ma mi dispiaccio però ancora  :hard:  :mad: per non avere capito quando dovevo capire ed ho fatto la fine che meritavo:  :skull:
 :ciao:
Titolo: Re: BANALE: Evento KeyPress
Inserito da: vuott - 02 Agosto 2012, 20:17:43
É vero, ho risolto, ma mi dispiaccio però ancora  :hard:  :mad: per non avere capito quando dovevo capire ed ho fatto la fine che meritavo:  :skull:
 :ciao:


Picavbg è impazzito !  :'(
Titolo: Re: BANALE: Evento KeyPress
Inserito da: sotema - 02 Agosto 2012, 23:15:35
Oppure, ancora meglio, essere reindirizzata su un altro monitor..??

http://gambasdoc.org/help/comp/gb.qt4/screens?v3
Titolo: Re: BANALE: Evento KeyPress
Inserito da: vuott - 02 Agosto 2012, 23:35:29
Oppure, ancora meglio, essere reindirizzata su un altro monitor..??

http://gambasdoc.org/help/comp/gb.qt4/screens?v3


...sì, però Screens mi offre delle mere informazioni su quanti monitor vengono usati, più ritorna informazioni sulle dimensioni dello schermo. Ma come si comanda: Fammi vedere questa cosa al monitor 1 anzicché al numero 0 ?  ???

Per ora sono riuscito a capire soltanto come fare per "spostare" le finestre dei programmi da un desktop ad un altro del medesimo monitor:
Codice: gambas [Seleziona]

Public Sub Button1_Click()

  Dim dw As DesktopWindow
  Dim ss As String[]

' Individuo l'Handle del programma che ha generato la propria finestra:
  ss = Desktop.FindWindow("nome_del_programma")

'...ne individuo la finestra, e la inserisco in una variabile di tipo "DesktopWindow":
   dw = Desktop.Windows.FromHandle(ss[0])

' sposto la finestra del programma nel desktop num. 2:
   dw.Desktop = 2

End


Se per esempio posso gestire quattro desktop, troverò il form del programma nel terzo desktop.
Titolo: Re: BANALE: Evento KeyPress
Inserito da: sotema - 03 Agosto 2012, 07:37:19
Se nn ricordo male c'era qualcosa a livello di settings:
Settings[window/geometry, x,y,h,w,s]
Dove s sta per numero del monitor.
La cosa che nn so dirti se vale solo per la MainWindow
Titolo: Re: BANALE: Evento KeyPress
Inserito da: vuott - 03 Agosto 2012, 12:26:22
Se nn ricordo male c'era qualcosa a livello di settings:
Settings[window/geometry, x,y,h,w,s]

Uhmmm.... se è così... questo mi costringerà a fare un piccolo approfondimento  :specchio: anche su Settings !
Titolo: Re: BANALE: Evento KeyPress
Inserito da: sotema - 03 Agosto 2012, 12:49:57
Buon lavoro.  ;D
Titolo: Re: BANALE: Evento KeyPress
Inserito da: vuott - 04 Agosto 2012, 12:59:56
Se nn ricordo male c'era qualcosa a livello di settings:
Settings[window/geometry, x,y,h,w,s]
Dove s sta per numero del monitor.
La cosa che nn so dirti se vale solo per la MainWindow

Da qualche ricerca fatta, ho visto che l'ultimo parametro da te indicato (quella "s") dovrebbe effettivamente riferirsi al numero del monitor disponibile.
Però, poiché - da quel mi pare d'aver capito - Settings semplicemente registra su file alcuni valori di impostazioni, che possono successivamente essere richiamati, ma null'altro, resta ancora appesa la questione di "come" e soprattutto "se" c'è un'istruzione o un combinato disposto di funzioni di Gambas con cui poter redirigere la videata da un monitor ad un altro (quando se ne ha più di uno a disposizione).
Sempre da ricerca compiuta, ho trovato dei riferimenti a questo argomento: addiritttura qualcuno che con Linux ha utilizzato su un medesimo calcolatore 2 mouse, 2 tastiere e 2 monitor del tutto indipendenti. Si suggeriva di fare una ricerca al riguardo su Google impostando le parole chiavi di ricerca: dual head.
Titolo: Re: BANALE: Evento KeyPress
Inserito da: sotema - 04 Agosto 2012, 18:43:46
Mi sembrava che l'intenzione di luigitessitore fosse quella di indirizzare l'output video su un monitor specifico all'avvio dell'aplicazione, non quello di selezionare il monitor strada facendo.
Ora tu stai sfrigolando la mia curiostà.
Titolo: Re: BANALE: Evento KeyPress
Inserito da: vuott - 05 Agosto 2012, 03:59:09
Mi sembrava che ....
Ma mi domando: anche volendo indirizzare l'output video su un monitor specifico all'avvio dell'applicazione, con quale istruzione lo si comanda ?  :-\
Titolo: Re: BANALE: Evento KeyPress
Inserito da: sotema - 05 Agosto 2012, 19:03:25
Nella classe della form:

' Gambas class file



Public Sub _new()
  ME.Screen=0 '(oppure 1,2,...)
End
Titolo: Re: BANALE: Evento KeyPress
Inserito da: vuott - 05 Agosto 2012, 19:11:22
Nella classe della form:

Public Sub _new()
  ME.Screen=0 '(oppure 1,2,...)
End


...dà errore, poiché anche in questo caso è solo di lettura !

Credo che con solo Gambas - attualmente - quel reindirizzamento non sia possibile !  :-\