Ciao. Quick and dirty solution (una porcheria) per non vedere lo zero all'avvio:
' Gambas class file
PUBLIC bValueboxNumber AS Boolean
PUBLIC SUB _new()
END
PUBLIC SUB Form_Open()
ValueBox1.Type = ValueBox.Time
END
PUBLIC SUB ValueBox1_KeyPress()
IF NOT bValueboxNumber THEN
ValueBox1.Type = ValueBox.Number
ELSE
RETURN
ENDIF
bValueboxNumber = TRUE
END
In pratica, all'avvio imposti Valuebox come Type Time.
La prima volta che inserisci un valore diventa Type Number.
La soluzione è sporca perché ad ogni keypress c'è una verifica,
ma usando TextBox forse è ancora più arzigogolato. Ciao
Ciao a tutti
Scusate l'intrusione, ma come ho già chiesto in un altro post non esiste la possibilità di controllare i tasti premuti all'interno di un textbox tipo:
Sub text_keypress (Index as Integer, KeyAscii as Integer)
if KeyAscii >= 48 And KeyAscii <= 57 Then exit sub
if KeyAscii = 8 Then exit sub
if Chr$(KeyAscii) = "." Then exit sub
KeyAscii = 0
End Sub
Grazie ciao
usa questo:
PUBLIC SUB TextBox1_KeyPress()
DIM keycode AS Integer
keycode = Key.Code
Label1.text = keycode
END
alla pressione di un tasto in textbox label1 visualizza il codice
se vuoi proprio il codice asci puoi fare così:
PUBLIC SUB TextBox1_Change()
Label1.text = Asc(Right(TextBox1.Text, 1)) 'codice ascii
label2.text = key.Code 'codice tasto di sistema
END
fsurfing ha scritto:
se vuoi proprio il codice asci puoi fare così:
PUBLIC SUB TextBox1_Change()
Label1.text = Asc(Right(TextBox1.Text, 1)) 'codice ascii
label2.text = key.Code 'codice tasto di sistema
END
oppure puoi creare una textybox che contiene solo una lettera alla volta e poi dai il comando.
PUBLIC SUB TextBox1_Change()
Label1.text = Asc(TextBox1.Text)
END SUB
Ciao
fsurfing ha scritto:
se vuoi proprio il codice asci puoi fare così:
PUBLIC SUB TextBox1_Change()
Label1.text = Asc(Right(TextBox1.Text, 1)) 'codice ascii
label2.text = key.Code 'codice tasto di sistema
END
Facendo così controlli solo l'ultimo carattere del testo, ma mentre scrivi non è detto che tu sia alla fine del testo, puoi esserti spostato con le frecce.
Io voglio controllare i caratteri che si possono inserire, ho provato questo:
PUBLIC SUB TextQuant_KeyPress()
IF Key.Code >= 48 AND Key.Code <= 57 THEN RETURN
IF Key.Code = 8 THEN RETURN
IF Chr$(Key.Code) = "." THEN RETURN
Key.Code = 0
END
.. ma key.Code = 0 è in sola lettura, mi basterebbe capire come annulare l'ultimo tasto premuto
L'ultimo esempio che mi viene in mente è questo. Provalo:
PUBLIC SUB TextQuant_KeyPress()
DIM codice as integer
codice = Key.Code
IF codice >= 48 AND codice <= 57 THEN RETURN
IF codice = 8 THEN RETURN
IF Chr$(codice) = "." THEN RETURN
codice = 0
END
No, in vb c'era keyascii che assomigliava a key.code, allora sempre secondo esempio se la condizione era verificata usciva dalla sub altimenti l'ultima istruzione della sub eliminava il carattere appena premuto
PUBLIC SUB TextQuant_KeyPress()
IF Key.Code >= 48 AND Key.Code <= 57 THEN RETURN
IF Key.Code = 8 THEN RETURN
IF Chr$(Key.Code) = "." THEN RETURN
Key.Code = 0
END
Allora prova a fare:
PUBLIC SUB TextQuant_KeyPress()
DIM codice as integer
DIM a as string
a = textQuant.Text
codice = Key.Code
IF codice >= 48 AND codice <= 57 AND codice = 8 AND Chr$(codice) = "." THEN RETURN
ELSE
textQuant.text = a
END
@ivosperi
Devi usare STOP EVENT.
Es.:
PUBLIC SUB TextBox1_KeyPress()
IF Key.text = "a" THEN RETURN
STOP EVENT
END
Nell'esempio la textbox accetta solo le "a". Attenzione che STOP EVENT
blocca tutto, anche tasti cursore e barra spazio et cetera, che dovrai mettere tra i tasti accettati.
FUNZIA !!!!!! grazie a tutti ecco Qui:
PUBLIC SUB TextQuant_KeyPress()
IF Key.Code >= 48 AND Key.Code <= 57 THEN RETURN
STOP EVENT
END
Allora:
in un textbox durante l'utilizzo viene premuto un tasto, se il codice ascci di quel tasto è compreso tra 48 e 57 (sono i numeri), esce dalla sub e qundi consente l'inserimento del carattere,
altrimenti con STOP EVENT annulla il carattere inserito.
Basta variare la condizione IF...THEN e cosi si può decidere che caratteri possono essere immessi nel textbox
Grazie ancora a tutti ciao ivo
Così funziona meglio:
PUBLIC SUB TextQuant_KeyPress()
Label1.Text = key.Code 'visualizza codice tasto premuto
IF Key.Code >= 48 AND Key.Code <= 57 THEN RETURN
IF Key.Code = 4099 THEN RETURN 'cancella
STOP EVENT
END
è meglio consentire anche il codice 4099 che rappresenta il cancella,
e per conoscere i codici dei tasti si può aggungere:
che visualizza in un label il codice del tasto premuto.
ciao :-D :-D :-D