Autore Topic: [Risolto] Associazione tasti funzione  (Letto 11213 volte)

Offline tornu

  • Gran Maestro dei Gamberi
  • *****
  • Post: 855
    • Mostra profilo
[Risolto] Associazione tasti funzione
« il: 10 Settembre 2015, 22:10:59 »
Buonasera a tutti,
è da un pò che ci giro intorno ma non riesco a trovare la soluzione.
Come da oggetto non riesco a trovare una soluzione che mi permetta
di associare un tasto funzione (F1, F2, F3,...ect) ad un oggetto,
per esempio un Button. Praticamente quello che voglio ottenere è una cosa simile:

If Key.F3 Then Button_Click()

Non ho capito se devo utilizzare gli eventi del Form (Form_KeyPress),
o del Desktop (Desktop_SendKeys) come ho visto su alcuni esempi del
quale non ho capito la logica di applicazione.
« Ultima modifica: 18 Settembre 2015, 22:51:30 da vuott »
Il software è come il sesso, è meglio quando è libero. (Linus Torvalds)

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.244
  • Tonno verde
    • Mostra profilo
Re:Associazione tasti funzione
« Risposta #1 il: 10 Settembre 2015, 22:49:53 »
Buonasera a tutti,
è da un pò che ci giro intorno ma non riesco a trovare la soluzione.
Come da oggetto non riesco a trovare una soluzione che mi permetta
di associare un tasto funzione (F1, F2, F3,...ect) ad un oggetto,
per esempio un Button. Praticamente quello che voglio ottenere è una cosa simile:

If Key.F3 Then Button_Click()

Non ho capito se devo utilizzare gli eventi del Form (Form_KeyPress),
o del Desktop (Desktop_SendKeys) come ho visto su alcuni esempi del
quale non ho capito la logica di applicazione.

Codice: [Seleziona]
Public Sub Form_KeyPress()
 
  If Key.Code = Key.F3 Then Print "F3"
 
End
:ciao:
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline tornu

  • Gran Maestro dei Gamberi
  • *****
  • Post: 855
    • Mostra profilo
Re:Associazione tasti funzione
« Risposta #2 il: 10 Settembre 2015, 23:16:38 »
Ciao Gianluigi,
avevo già provato il codice che mi hai postato ma non ho ottenuto nessun risultato.
Il codice che ho provato era questo:

Codice: [Seleziona]
Public Sub Form_KeyPress()
   If Key.Code = Key.F3 Then Button_Click()"
 End

Non funziona.
Il software è come il sesso, è meglio quando è libero. (Linus Torvalds)

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.244
  • Tonno verde
    • Mostra profilo
Re:Associazione tasti funzione
« Risposta #3 il: 10 Settembre 2015, 23:20:48 »
Ciao Gianluigi,
avevo già provato il codice che mi hai postato ma non ho ottenuto nessun risultato.
Il codice che ho provato era questo:

Codice: [Seleziona]
Public Sub Form_KeyPress()
   If Key.Code = Key.F3 Then Button_Click()"
 End
Non funziona.
A me funziona, prova questo in un form con 1 button_1

Codice: [Seleziona]
Public Sub Form_KeyPress()
 
  If Key.Code = Key.F3 Then Button1_Click
 
End

Public Sub Button1_Click()

  Print "Bottone 1"

End
:-X

« Ultima modifica: 10 Settembre 2015, 23:22:15 da Gianluigi »
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.724
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Associazione tasti funzione
« Risposta #4 il: 10 Settembre 2015, 23:40:36 »
Ciao Gianluigi,
avevo già provato il codice che mi hai postato ma non ho ottenuto nessun risultato.

A me il codice suggerito da Gianluigi funziona perfettamente.   :-\
« 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 vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.724
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Associazione tasti funzione
« Risposta #5 il: 10 Settembre 2015, 23:47:15 »
...potresti anche utilizzare il metodo Raise() della Classe Object:

Codice: [Seleziona]
Public Sub Form_KeyPress()
 
  If Key.Code = Key.F3 Then Object.Raise(Button1, "Click", Null)
 
End


Public Sub Button1_Click()

  Print "Bottone 1"

End
« Ultima modifica: 12 Settembre 2015, 00:52:29 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 tornu

  • Gran Maestro dei Gamberi
  • *****
  • Post: 855
    • Mostra profilo
Re:Associazione tasti funzione
« Risposta #6 il: 11 Settembre 2015, 21:22:45 »
Avete ragione, il codice da voi postato con una semplice Form ed un Button funziona.  :-[
Forse ho postato la domanda in modo troppo semplicistico, dovendo inserire questa funzione
in un progetto più complesso di una semplice Form ho creato un piccolo progetto test per farvi
capire meglio la mia esigenza.
Se date un'occhiata al codice ho inserito (può darsi in modo errato) il vostro suggerimento che
nel contesto del test allegato non funziona.
Il software è come il sesso, è meglio quando è libero. (Linus Torvalds)

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.244
  • Tonno verde
    • Mostra profilo
Re:Associazione tasti funzione
« Risposta #7 il: 11 Settembre 2015, 23:45:13 »
Ciao Tornu,
di questo intendo delle finestre incorporate ne abbiamo già parlato.
Se tu usassi il sistema da me a suo tempo indicato il tuo codice funzionerebbe.
Guarda questo cambiamento:
In FMain:
Codice: [Seleziona]
Public FrmForm1 As Form1
Public FrmForm2 As Form2

Public Sub Form_Open()
  Me.Center()
  FrmForm1 = New Form1(FMain)
End

In Form1:
Codice: [Seleziona]
Public Sub Form_KeyPress()
  If Key.Code = Key.F3 Then Button1_Click()
End

Public Sub Button2_Click()
  Me.Visible = False
  FMain.FrmForm2 = New Form2(FMain)
End

Public Sub Button1_Click()
  FMain.Close()
End

in Form2:
Codice: [Seleziona]
Public Sub Button1_Click()  
  FMain.FrmForm1.Visible = True
  Me.Close() 
End

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

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.724
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Associazione tasti funzione
« Risposta #8 il: 12 Settembre 2015, 01:08:22 »
Il suggerimento di Gianluigi funziona perfettamente.   
« 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 tornu

  • Gran Maestro dei Gamberi
  • *****
  • Post: 855
    • Mostra profilo
Re:Associazione tasti funzione
« Risposta #9 il: 12 Settembre 2015, 20:33:41 »
Ciao Tornu,
di questo intendo delle finestre incorporate ne abbiamo già parlato.......
Sì, è  vero, ma a suo tempo il problema era il passaggio di dati che avevo comunque risolto con il metodo
di apertura e chiusura dei Form adottato anche stavolta che in linea di massima utilizza i metodi del test
allegato a questa discussione, grazie proprio all'aiuto tuo e di vuott.
E grazie al vostro contributo che ho rafforzato ulteriormente la mia convinzione che un problema può percorrere
più strade per essere risolto.
Il codice da te suggerito funziona, ma ciò che chiedo (come allora per il passaggio dati tra Form) è possibile utilizzare
Form_KeyPress o altro metodo lasciando inalterato il metodo di gestione delle Form?
In attesa di eventuali suggerimenti continuo a provare.
Il software è come il sesso, è meglio quando è libero. (Linus Torvalds)

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.724
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Associazione tasti funzione
« Risposta #10 il: 12 Settembre 2015, 21:58:42 »
...ho rafforzato ulteriormente la mia convinzione che un problema può percorrere più strade per essere risolto.

" ἡ ἀνάλυσις τοῦ πρόβληματος οὐ μόνη ἐστίv, ἡ ὁδός καλλίων ζητελυτέα ἐστί ἀναλόγως πρός στάσει καί δέοντι οὖσῐν. "

(La soluzione ad un problema non è mai una sola; la strada migliore deve essere ricercata a seconda delle condizioni esistenti e delle esgenze del momento.)

iscrizione presente sul tempio di Atena Licinia ed attribuita al filosofo sotema - VII sec. a.c.
« 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 tornu

  • Gran Maestro dei Gamberi
  • *****
  • Post: 855
    • Mostra profilo
Re:Associazione tasti funzione
« Risposta #11 il: 13 Settembre 2015, 12:29:48 »
" ἡ ἀνάλυσις τοῦ πρόβληματος οὐ μόνη ἐστίv, ἡ ὁδός καλλίων ζητελυτέα ἐστί ἀναλόγως πρός στάσει καί δέοντι οὖσῐν. "

(La soluzione ad un problema non è mai una sola; la strada migliore deve essere ricercata a seconda delle condizioni esistenti e delle esgenze del momento.)

iscrizione presente sul tempio di Atena Licinia ed attribuita al filosofo sotema - VII sec. a.c.

Ciao vuott,
se continui di questo passo prima o poi avvio la tua routine in firma..... ;D ;D
Il software è come il sesso, è meglio quando è libero. (Linus Torvalds)

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.724
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Associazione tasti funzione
« Risposta #12 il: 13 Settembre 2015, 17:49:46 »
...se continui di questo passo...

....ma è una frase effettivamente scritta da sotema.   

 http://www.gambas-it.org/smf/index.php?topic=4168.msg36176#msg36176
« 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 tornu

  • Gran Maestro dei Gamberi
  • *****
  • Post: 855
    • Mostra profilo
Re:Associazione tasti funzione
« Risposta #13 il: 14 Settembre 2015, 21:09:08 »
Ciao Tornu,
di questo intendo delle finestre incorporate ne abbiamo già parlato.
Se tu usassi il sistema da me a suo tempo indicato il tuo codice funzionerebbe.
Guarda questo cambiamento:
In FMain:
Codice: [Seleziona]
Public FrmForm1 As Form1
Public FrmForm2 As Form2

Public Sub Form_Open()
  Me.Center()
  FrmForm1 = New Form1(FMain)
End

In Form1:
Codice: [Seleziona]
Public Sub Form_KeyPress()
  If Key.Code = Key.F3 Then Button1_Click()
End

Public Sub Button2_Click()
  Me.Visible = False
  FMain.FrmForm2 = New Form2(FMain)
End

Public Sub Button1_Click()
  FMain.Close()
End

in Form2:
Codice: [Seleziona]
Public Sub Button1_Click()  
  FMain.FrmForm1.Visible = True
  Me.Close() 
End

 :ciao:

Ciao Gianluigi,
continuando a cercare una soluzione, ho riprovato attentamente il tuo codice per cercare qualche spunto per
una soluzione senza rivoluzionare totalmente il codice (circa 30 Form) del mio progetto quasi terminato
e mi sono accorto che non fuziona come vorrei io, ti spiego:
se apri la Form2 e la tieni aperta senza ripassare in Form1 premendo il tasto funzione F3 il progetto si chiude.
A me serve che si chiuda solamente dalla Form1 dove si trova il pulsante Chiudi (F3)

Il software è come il sesso, è meglio quando è libero. (Linus Torvalds)

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.724
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Associazione tasti funzione
« Risposta #14 il: 14 Settembre 2015, 21:31:20 »
A me serve che si chiuda solamente dalla Form1 dove si trova il pulsante Chiudi (F3)
...ma dal Form2 cosa deve succedere, invece ?
« 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. »