Autore Topic: [RISOLTO] Impedire caratteri speciali nella textbox  (Letto 5327 volte)

vaillant86

  • Visitatore
[RISOLTO] Impedire caratteri speciali nella textbox
« il: 06 Settembre 2011, 19:03:07 »
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
Codice: [Seleziona]
(?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 :)
« Ultima modifica: 08 Settembre 2011, 19:18:54 da vaillant »

Offline Ceskho

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 3.778
  • Vi Veri Veniversum Vivus Vici
    • Mostra profilo
    • Pagina Personale
Re: Impedire caratteri speciali nella textbox
« Risposta #1 il: 06 Settembre 2011, 19:45:33 »
Potresti creare nell'evento change un'algoritmo che ti elimina quei caratteri. Ora vado a memoria che non ho gambas sotto mano

Codice: gambas [Seleziona]
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
« Ultima modifica: 06 Settembre 2011, 19:48:30 da Ceskho »

vaillant86

  • Visitatore
Re: Impedire caratteri speciali nella textbox
« Risposta #2 il: 06 Settembre 2011, 21:26:50 »
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ì
Codice: gambas [Seleziona]

  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

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.723
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: Impedire caratteri speciali nella textbox
« Risposta #3 il: 07 Settembre 2011, 00:30:25 »
ma immagino ci sia un modo più pulito

...forse con qualche ciclo FOR ed utilizzando i codici chr(nn),  dato che molti di quei caratteri che non ti servono sono uniti in 3 - 4 gruppi, infatti - per esempio:

58   :
59   ;
60   <
61   =
62   >
63   ?
64   @
« 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 Ceskho

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 3.778
  • Vi Veri Veniversum Vivus Vici
    • Mostra profilo
    • Pagina Personale
Re: Impedire caratteri speciali nella textbox
« Risposta #4 il: 07 Settembre 2011, 09:44:47 »
Forse è meglio se usi l'evento keyPress intercettando i valori del tasto premuto. Credevo fossero di meno i caratteri. Prova con:

Codice: gambas [Seleziona]
PUBLIC SUB TextBox_Name_KeyPress()

  SELECT Key.text
    CASE "@","#","!","~","(",")","{","}","[","]",
      STOP EVENT
  END SELECT
 
END

vaillant86

  • Visitatore
Re: Impedire caratteri speciali nella textbox
« Risposta #5 il: 08 Settembre 2011, 19:18:37 »
Perfetto, così funziona. Mille grazie ;)

Offline Ceskho

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 3.778
  • Vi Veri Veniversum Vivus Vici
    • Mostra profilo
    • Pagina Personale
Re: Impedire caratteri speciali nella textbox
« Risposta #6 il: 09 Settembre 2011, 09:36:25 »
Perfetto, così funziona. Mille grazie ;)

Mille euro  :rotfl:

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.723
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: Impedire caratteri speciali nella textbox
« Risposta #7 il: 19 Novembre 2013, 23:25:05 »
Forse è meglio se usi l'evento keyPress intercettando i valori del tasto premuto. Credevo fossero di meno i caratteri. Prova con:

Codice: gambas [Seleziona]
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:
Codice: gambas [Seleziona]

Public Sub TextBox_Name_KeyPress()

  If (IsLetter(Key.text) = False) And (IsDigit(Key.text) = False) Then Stop Event

End
« 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. »