Ciao a tutto il forum, non mi collegavo da un pò di tempo ;D
Ho un problema che non sono riuscito a risolvere con google e documentazione varia. In pratica in un programma ho due textbox in cui l'utente inserisce due stringhe (nome e cognome). Vorrei evitare di far inserire i caratteri speciali come @ # ! { ecc.
Spulciando qua e la ho visto che si dovrebbe usare il componente gb.pcre e regexp, ma non ho capito la sintassi da usare. Cioè, una stringa del genere
(?i)\b[a-z0-9._%\-]+@[a-z0-9._%\-]+\.[A-Z]{2,4}\b
mi assicura un corretto indirizzo email (mi riferisco alla documentazione ufficiale dove è riportato l'esempio) ma non so come adattarlo alla mia situazione.
Attendo fiducioso :)
Potresti creare nell'evento change un'algoritmo che ti elimina quei caratteri. Ora vado a memoria che non ho gambas sotto mano
Sub TextBox1_Change()
TextBox1.Text = Replace(TextBox1.Text , '@' , '')
End Sub
Questo ad esempio elimina la chiocciola....
Oppure potresti intercettare l'evento KeyPress ed impedire che certi caratteri vengano passati alla textbox
Grazie, quindi posso fare a meno di gb.pcre. Un'altra cosa, ho visto nella documentazione di Replace che la sintassi è
Replace(textbox, "stringadasostituire", "stringasostitutiva")
Siccome i caratteri che vorrei evitare sono 10, devo fare 10 righe diverse o posso concatenare le varie "stringadasostituire"?
Attualmente ho fatto così
TextBox_Name.Text = Replace(TextBox_Name.Text, "@", "")
TextBox_Name.Text = Replace(TextBox_Name.Text, "#", "")
TextBox_Name.Text = Replace(TextBox_Name.Text, "!", "")
TextBox_Name.Text = Replace(TextBox_Name.Text, "~", "")
TextBox_Name.Text = Replace(TextBox_Name.Text, "(", "")
TextBox_Name.Text = Replace(TextBox_Name.Text, ")", "")
TextBox_Name.Text = Replace(TextBox_Name.Text, "{", "")
TextBox_Name.Text = Replace(TextBox_Name.Text, "}", "")
TextBox_Name.Text = Replace(TextBox_Name.Text, "[", "")
TextBox_Name.Text = Replace(TextBox_Name.Text, "]", "")
ma immagino ci sia un modo più pulito
Forse è meglio se usi l'evento keyPress intercettando i valori del tasto premuto. Credevo fossero di meno i caratteri. Prova con:
PUBLIC SUB TextBox_Name_KeyPress()
SELECT Key.text
CASE "@","#","!","~","(",")","{","}","[","]",
STOP EVENT
END SELECT
END
Forse è meglio se usi l'evento keyPress intercettando i valori del tasto premuto. Credevo fossero di meno i caratteri. Prova con:
PUBLIC SUB TextBox_Name_KeyPress()
SELECT Key.text
CASE "@","#","!","~","(",")","{","}","[","]",
STOP EVENT
END SELECT
END
Si può adottare anche una soluzione analoga, ma con altre fuzioni:
Public Sub TextBox_Name_KeyPress()
If (IsLetter(Key.text) = False) And (IsDigit(Key.text) = False) Then Stop Event
End