Gambas-it

Gambas3 => Programmazione => Topic aperto da: Gilby - 29 Maggio 2018, 15:39:03

Titolo: [RISOLTO] Eliminare l'ultimo carattere inserito in una TextBox
Inserito da: Gilby - 29 Maggio 2018, 15:39:03
Un'altra domanda, ho creato un tasto cancel che dovrebbe eliminare l'ultimo carattere inserito nella textbox del form della tastiera, hai qualche consiglio anche per quello?
Ho provato a fare in questo modo:

Codice: [Seleziona]
Public Sub Button_Click()

  textbox1.Select(textbox1.pos - 1, 1)
 
End

Così facendo seleziono l'ultimo l'elemento o quello a sinistra del puntatore, adesso, una volta selezionato dovrei eliminarlo, consigli?

Titolo: Re:Eliminare l'ultimo carattere inserito in una TextBox
Inserito da: vuott - 29 Maggio 2018, 15:54:45
Per "ultimo" carattere cosa intendi ?
Quello più a sinistra o quello più a destra ? 

Poi un'altra domanda: è necessario proprio evidenziarlo ?
Titolo: Re:Eliminare l'ultimo carattere inserito in una TextBox
Inserito da: Gianluigi - 29 Maggio 2018, 16:00:46
Lui evidenzia l'ultima a destra, quindi credo voglia fare qualcosa di simile:
Codice: [Seleziona]
  Dim s As String

  s = TextBox1.Text
  If Not IsNull(s) Then
    s = Left(s, Len(s) - 1)
    TextBox1.text = s
  Endif

Sono però d'accordo con te nel ritenere Gilby un po avaro di informazioni  ;D

 :ciao:
Titolo: Re:Eliminare l'ultimo carattere inserito in una TextBox
Inserito da: vuott - 29 Maggio 2018, 16:11:36
...e se la stringa possiede caratteri composti con ASCII esteso
Titolo: Re:Eliminare l'ultimo carattere inserito in una TextBox
Inserito da: Gianluigi - 29 Maggio 2018, 16:22:35
...e se la stringa possiede caratteri composti con ASCII esteso ?

Il mio codice non andrebbe bene  ;D
Titolo: Re:Eliminare l'ultimo carattere inserito in una TextBox
Inserito da: Gilby - 29 Maggio 2018, 16:33:51
Per "ultimo" carattere cosa intendi ?
Quello più a sinistra o quello più a destra ? 

Poi un'altra domanda: è necessario proprio evidenziarlo ?

Intendo ultimo carattere inserito a destra, non è necessario evidenziarlo, ho cercato di trovare una soluzione dalla selezione perché non sapevo come fare.

Lui evidenzia l'ultima a destra, quindi credo voglia fare qualcosa di simile:
Codice: [Seleziona]
  Dim s As String

  s = TextBox1.Text
  If Not IsNull(s) Then
    s = Left(s, Len(s) - 1)
    TextBox1.text = s
  Endif

Sono però d'accordo con te nel ritenere Gilby un po avaro di informazioni  ;D

 :ciao:

Così credo vada bene, anche se come avete detto successivamente non è la soluzione ideale per tutti i casi, chiedo scusa se sono abbastanza criptico anche se hai colto in pieno tutti i miei dubbi, ancora grazie.
Titolo: Re:Eliminare l'ultimo carattere inserito in una TextBox
Inserito da: vuott - 29 Maggio 2018, 16:40:53
Ecco allora una simpatica soluzione esaustiva (puoi far terminare la stringa con un carattere accentato (à,ò,è,é,ù):    :)

Codice: [Seleziona]
Public Sub Button1_Click()
 
  TextBox1.Select(TextBox1.Pos - 1, 1)

  Wait 0.5

  If Not IsAscii(Right(TextBox1.Text, 1)) Then
    TextBox1.Text = Left(TextBox1.Text, Len(TextBox1.Text) - 2)
  Else
    TextBox1.Text = Left(TextBox1.Text, Len(TextBox1.Text) - 1)
  Endif

End
Titolo: Re:Eliminare l'ultimo carattere inserito in una TextBox
Inserito da: Gianluigi - 29 Maggio 2018, 17:33:52
Inserisco questa variazione alla mia prima risposta:
Codice: [Seleziona]
  Dim s As String

  s = TextBox1.Text
  If Not IsNull(s) Then
    s = Left(s, String.Len(s) - 1)
    TextBox1.text = s
  Endif

 :ciao:
Titolo: Re:Eliminare l'ultimo carattere inserito in una TextBox
Inserito da: vuott - 29 Maggio 2018, 17:48:47
... questa variazione alla mia prima risposta
Il codice è efficace e molto breve.
La mia soluzione, per ora, consente - in più - di ottenere quanto richiesto da Gilby anche con una stringa terminante con due o più caratteri accentati.
Titolo: Re:Eliminare l'ultimo carattere inserito in una TextBox
Inserito da: Gilby - 29 Maggio 2018, 17:53:54
Inserisco questa variazione alla mia prima risposta:
Codice: [Seleziona]
  Dim s As String

  s = TextBox1.Text
  If Not IsNull(s) Then
    s = Left(s, String.Len(s) - 1)
    TextBox1.text = s
  Endif

 :ciao:

... questa variazione alla mia prima risposta
Il codice è efficace e molto breve.
La mia soluzione, per ora, consente - in più - di ottenere quanto richiesto da Gilby anche con una stringa terminante con due o più caratteri accentati.

Il top, grazie mille!!