Gambas-it

Gambas3 => Programmazione => Topic aperto da: naderit - 02 Aprile 2016, 22:37:22

Titolo: [RISOLTO]inputbox maxlength
Inserito da: naderit - 02 Aprile 2016, 22:37:22
Buonasera è possibile impostare il numero di caratteri digitabili in una inputbox?
Grazie
Titolo: Re:inputbox maxlength
Inserito da: vuott - 03 Aprile 2016, 00:32:48
A mio parere, non essendo possibile accedere in qualche modo all'oggetto che costituisce l'area di immissione del testo della InputBox(), quel che chiedi potrebbe essere fatto solo agendo sui sorgenti.
Una cosa facilmente fattibile è quella di tagliare con la funzione Left() dalla stringa ritornata i caratteri digitati eccedenti il numero che si è consentito.    :-\

L'unica alternativa sembrerebbe essere quella di crearsi una Classe simil-InputBox da sé.
Titolo: Re:inputbox maxlength
Inserito da: Gianluigi - 03 Aprile 2016, 11:58:29
...
L'unica alternativa sembrerebbe essere quella di crearsi una Classe simil-InputBox da sé.

Sono d'accordo, potrebbe essere una buona occasione per approfondire il tuo studio dei componenti.  :D

 :ciao:
Titolo: Re:inputbox maxlength
Inserito da: Top Fuel - 04 Aprile 2016, 15:40:08
Si potrebbe creare un oggetto simile a InvBox, ed usare l'evento Change per monitorarlo e controllare quando si arriva al limite.
InputBox non permette nessun controllo su quello che si digita.
Titolo: Re:inputbox maxlength
Inserito da: Gianluigi - 04 Aprile 2016, 16:26:11
Si potrebbe creare un oggetto simile a InvBox, ed usare l'evento Change ...

Attenzione che rischiamo di confondere le idee, il suggerimento di vuott era, credo, quello di crearsi una finestra con una textbox o valuebox ecc.
Volendo partendo da li potrebbe poi farsi un componente magari sfruttando, come hai suggerito tu, proprio l'evento  Change del padre e del figlio ma dello stesso controllo, senza scomodarne altri.
È buttata li che non ho idea se possa funzionare.
 :ciao:
Titolo: Re:inputbox maxlength
Inserito da: vuott - 04 Aprile 2016, 16:30:26
il suggerimento di vuott era, credo, quello di crearsi una finestra con una textbox o valuebox ecc.
Exactement.
Titolo: Re:inputbox maxlength
Inserito da: Gianluigi - 04 Aprile 2016, 16:44:29
Però ora che ci penso, l'idea di TopFuel di inserire nella finestra al posto della textbox un invbox è proprio carina l'approvo incondizionatamente  :D

 :ciao:
Titolo: Re:inputbox maxlength
Inserito da: Top Fuel - 04 Aprile 2016, 20:51:38
Infatti la mia idea era completamente diversa: creare un componente ex-novo similare ad InputBox ma che controlla la lunghezza di quanto digitato... ;D
Titolo: Re:inputbox maxlength
Inserito da: Gianluigi - 04 Aprile 2016, 21:09:03
Ti consiglio già che ci sei di farlo meglio di InvBox in quanto fin'ora non si era mai sentito di una simil TextBox che non supporta il testo.
Già che siamo in tema a tutti quelli, fortunatamente pochi, sventurati che fidandosi di un imbratta codice come me hanno creato InvBox farebbero bene a cambiare così il codice della Sub Change:
Codice: [Seleziona]
Public Sub Tbox_Change()
  If Trim$($hTbox.Text) = "" Then
    $hTxt.Text = $sInvito
  Else
    $hTxt.Text = ""
  Endif 
  Me.Text = $hTbox.Text
  Raise Change 
End
e cioè aggiungere fra Endif e Raise:
Codice: [Seleziona]
Me.Text = $hTbox.Text
Se hanno la pretesa anche di leggere quanto viene scritto nel controllo  ;D
 :-[ Tra parentesi non so neanche se è il procedimento corretto ma sembra funzionare.
Si lo so di essere un tonno e infatti non l'ho mai nascosto.
Meno male che fra poco su Rai uno c'è Catarella e spero di imparare qualcosa.
 :ciao:
Titolo: Re:inputbox maxlength
Inserito da: naderit - 04 Aprile 2016, 22:15:20
Grazie a Tutti, vedo cosa posso inventarmi  :D :D con i vostri suggerimenti
Titolo: Re:inputbox maxlength
Inserito da: Top Fuel - 04 Aprile 2016, 23:53:36
Ho provato ad aggiungere le 2 linee:
Codice: [Seleziona]
Me.Text = $hTbox.Text
Raise Change 

ma mi da errore dicendomi che Change non è un evento statico, senza funziona bene. Boh... :-\
Titolo: Re:inputbox maxlength
Inserito da: Gianluigi - 05 Aprile 2016, 00:13:22
Ho provato ad aggiungere le 2 linee:
Codice: [Seleziona]
Me.Text = $hTbox.Text
Raise Change 

ma mi da errore dicendomi che Change non è un evento statico, senza funziona bene. Boh... :-\

Non so cosa dire a me funziona  :-\

Ma l'errore te lo da su Raise Change non su Me.text...  ???

Accidenti non ci capisco niente  :rolleyes:

Provo ad andare a dormire, magari domani...  :sleepy:
Titolo: Re:inputbox maxlength
Inserito da: Top Fuel - 05 Aprile 2016, 21:59:54
Svelato l'arcano: stavo usando la prima versione credendo di usare la seconda. ;D
Comunque la seconda versione mi funziona benissimo con o senza le 2 linee aggiuntive.
Titolo: Re:inputbox maxlength
Inserito da: naderit - 07 Aprile 2016, 21:26:50
dunque, avrei risolto in questo modo:
Codice: [Seleziona]
Dim valore As String
  valore = InputBox("Nome Corso", "Nuova Tabella") 'inserimento dato"
If Len(valore) > 6 Then
  Message.Error("troppi caratteri", "OK")
Else
  Label1.Text = valore
Endif

non so se è molto elegante  ;D
Titolo: Re:inputbox maxlength
Inserito da: Gianluigi - 07 Aprile 2016, 23:24:05
dunque, avrei risolto in questo modo:
...
non so se è molto elegante  ;D

Mmmmmm non direi,

noi ti suggerivamo una cosa del genere (vedi allegato)
poi vedi tu

 :ciao:
Titolo: Re:inputbox maxlength
Inserito da: Gianluigi - 08 Aprile 2016, 11:58:57
Ho aggiornato l'allegato così è più corretto, spero
 :ciao:
Titolo: Re:inputbox maxlength
Inserito da: naderit - 08 Aprile 2016, 13:04:12
grazie mille... è una figata!! :2birre: