Domanda: esiste una proprietà "Key.qualcosa" che mi permetta di capire se sta arrivando, per esempio, dalla tasiera un comando di selezione? E poi, come faccio a capire quanti crt verranno o sono stati selezionati?Mi serve saperlo perché nel mio Textbox, dopo avere inserito un importo comprensivo dei due crt decimali, se seleziono tutto il testo digitato e tento di sostiuirlo con una nuova digitazione, i controlli che ho inserito per impedire di aggiungere altri decimali dopo i primi due, mi inibiscono la reimpostazione del testo selezionato, se prima non premo "Canc". :-(
leo72 ha scritto:
Qui (http://gambasdoc.org/help/comp/gb.qt/key?view) hai guardato?
"Shift" & "Home", oppure "Shift" & "Freccia a sinistra"
md9327 ha scritto:
L'oggetto static "Key", quando interrogato all'interno di uno dei metodi evento associati, contiene anche lo stato dei tasti di controllo (shift, ctrl, ecc.).
Per quando riguarda il mouse, diventa un pò più compliato, se devi analizzare lo stato dei pulsanti in contemporanea allo stato della tastiera; purtroppo in ogni si può analizzare solo l'oggetto che lo ha scatenato (quindiKey=tastiera, Mouse=mouse). Però, con qualche accorgimento, puoi riuscire a risolvere il problema, come ad esempio salvarti in apposite variabili lo stato del mouse tramite i propri eventi, ed interrogandole quando analizzi i tasti premuti.
Nell'evento KeyRelease, ho scritto:Codice: [Seleziona]Dim b_Sw AS Boolean
b_Sw = ImpMovDig.Selected 'pone TRUE se c'é testo selezionato e FALSE se non esiste selezione
Poi, con la pressione del crt successivo, nellì'evento KeyPress, interrogo lo stato di b_Sw e,nel mio caso,:Codice: [Seleziona]IF b_Sw = FALSE
STOP EVENT
Inoltre per intercettare l'eventuale selezione tramite mouse ho scritto:Codice: [Seleziona]PUBLIC SUB ImpMovDig_MouseUp()
b_Sw = ImpMovDig.Selected 'prepara il test sull'esistenza di crt selezionati
END
PUBLIC SUB TextBox1_MouseDown()
IF Mouse.Shift THEN
PRINT "Hai cliccato tenendo premuto Shift"
ENDIF
END
...
IF (Key.Home AND Key.Shift AND Key.Text = "A") THEN
END IF
...
md9327 ha scritto:Codice: [Seleziona]
IF (Key.Home AND Key.Shift AND Key.Text = "A") THEN
END IF
Nell'esempio, il controllo viene fatto sulla pressione contemporanea dei tasti Home+Shift+A; anche se un pò anomala, penso renda l'idea...