PDA

Visualizza la versione completa : TextBox ed Array


fungo
18-07-2002, 10:49
Ciao a buona giornata a tutto il fourm, ripropongo ancora lo stesso codice perchè non ho trovato ancora una soluzione.


Private Sub txtFrmCerca_KeyPress(KeyAscii As Integer)
ReDim Preserve A(conta)
A(conta) = Chr$(KeyAscii)
conta = conta + 1
txtFrmCerca.Text = ""
For i = 0 To UBound(A)
txtFrmCerca.Text = txtFrmCerca & A(i)
Next i
intercetto la pressione del tasto cancella
per eliminare l'ultimo tasto premuto
If KeyAscii = 8 Then
MsgBox "eliminazione indice array"
End If
End Sub


Allora il problema è che quando scrivo all'interno della textBox vedo sempre il primo carattere che digito.

Se digito la parola ciao nel mia textbox vedo alla prima pressione del tasto cc poi ici -> acia -> ociao spero di essermi spiegato bene.

Quello che vorrei ottenere e eliminare il primo carattere di ogni pressione dei tasti.

Ciao

Gigi84
18-07-2002, 11:10
prova a mettere alla fine della sub Keiascii = 0

:ciauz: :ciauz:

vonkranz
18-07-2002, 11:28
Originariamente inviato da Gigi84
prova a mettere alla fine della sub Keiascii = 0

:ciauz: :ciauz:
GULP!....:master: :D

E considerare un approccio diverso?
Ti crei una variabile Boolean visibile a livello di modulo che imposti a falso quando il textbox riceve il focus;
nell'evento keypress del Textbox, se la var Booleana e' false, la imposti a vera e automaticamente cancelli il carattere digitato, poi lasci tutto come', salvo impostare a false nell'evento validate del textbox il valore della var booleana

La', qst e' il codice, forse rende meglio l'idea:
Apri un progetto e metti un textbox all'interno.



Option Explicit
Dim blnSaltaCar As Boolean

Private Sub Text1_GotFocus()
blnSaltaCar = False
End Sub

Private Sub Form_Load()
Text1.Text = ""
End Sub

Private Sub Text1_KeyPress(KeyAscii As Integer)
If Not blnSaltaCar Then
blnSaltaCar = True
KeyAscii = 0
End If
End Sub

Private Sub Text1_Validate(Cancel As Boolean)
blnSaltaCar = False
End Sub


...pulito e liscio come il sedere di un bimbo...:D

fungo
18-07-2002, 11:38
Il primo metodo funziona, grazie.

Mi puoi spiegare esattamente cosa fa keyAscii=0 ?


Grazie

Gigi84
18-07-2002, 11:42
KeyAscii e codice ASCII corrispondente al carattere che hai èremuto per scatenare l'evento Keypress, se lo metti = 0 il carattere da te premuto diventa quello che ha ASCII 0 (Null)

Ma spiegami una cosa.. non ho letto bene la funzione, ma lo scopo quale sarebbe ??

:ciauz: :ciauz:

fungo
18-07-2002, 11:46
Niente di utile solo prove.

Ti faccio un'altra domanda.

Su un frame ho una matrice di controlli textBox, circa una 20.

Adesso vorrei validare le textbox in base al loro contenuto, come posso fare per avere un concide compatto?


Grazie

verodami
18-07-2002, 11:48
... Infatti la soluzione di Gigi funziona perfettamente ....
ma una domanda .... per fungo ... il tuo scopo è quello di cancellare automaticamente ogni parola che scrivi ..lasciano visualizzata solo l'ultima?!?!?! come mai??se è possibile saperlo:confused: :eek:
Grazie ciao
:ciauz: :ciauz: :ciauz:

vonkranz
18-07-2002, 11:50
Originariamente inviato da fungo
Il primo metodo funziona, grazie.


In questo modo, se viene inserito molto testo, ad ogni carattere che aggiungi nel TextBox, tu riscrivi TUTTO il contenuto, per di + un carattere alla volta.

Fai finta di avere 200 caratteri, quando aggiungi il 201° riscrivi tutto dal 1° al 201°, ne metti un altro e riscrivi tutto dal 1° al 202° e via dicendo, senza contare che ridimensioni un'array in modo dinamico e che impegni la memoria con un'array che ti serve solo a quello.

(e' solo un punto di vista diverso)


Originariamente inviato da fungo
Mi puoi spiegare esattamente cosa fa keyAscii=0 ?
Grazie

"annulla" il valore del tasto premuto (non e' proprio cosi' xke' mette il carattere chr(0) che, anche se non viene visualizzato c'e').
Ciao.

JamesD
18-07-2002, 12:03
Originariamente inviato da fungo
Niente di utile solo prove.

Ti faccio un'altra domanda.

Su un frame ho una matrice di controlli textBox, circa una 20.

Adesso vorrei validare le textbox in base al loro contenuto, come posso fare per avere un concide compatto?


Grazie



for i = 0 to 19
if txt(i).text = ... then
txt(i).enable = false
else
txt(i).enabled = false
next i

Gigi84
18-07-2002, 12:06
io sarò stupido ma non ho capito a che cosa serve la Routine!!!!

Loading