PDA

View Full Version : [vb6] Numerosi TextBox howto!!


RaouL_BennetH
15-12-2004, 19:46
Ragazzi, quando in un form ho una quindicina di textbox, per fare quanto segue, qual'è la strada migliore?

1) anzichè scrivere un ciclo For in questo modo:



for i = 0 to 1

if text1.text = "" then errore = true
if text2.text = "" then errore = true
..................................
....................................
....................................

'fino ad arrivare a

if text25.text = "" then errore = true



C'è modo di dirgli: guarda che se dalla text1.text, fino alla text25.text c'è un campo vuoto, non accettare il salvataggio dei dati!!

Questo discorso poi, lo dovrei portare anche alla scrittura su un file di testo, nel senso che:



Open App.Path & "\testo.txt" For Append As #1
write #1, (mica ci devo mettere uno ad uno tutti i valori delle textbox??)
close #1



Se non c'è altro modo, allora, prestatemi una COLT, che mi compilo un proiettile dritto dritto in fronte :D

Thx.

RaouL.

Fenomeno85
15-12-2004, 19:53
crei la matrice ;) fai copia incolla dell'oggetto poi ti muovi con un for nei text ;)

~§~ Sempre E Solo Lei ~§~

RaouL_BennetH
15-12-2004, 19:56
Originariamente inviato da Fenomeno85
crei la matrice ;) fai copia incolla dell'oggetto poi ti muovi con un for nei text ;)

~§~ Sempre E Solo Lei ~§~

wow, che velocità :D thx!

ma purtroppo non ho capito bene :(

allora, se io faccio copia e incolla, lui mi chiede se voglio creare una matrice di controlli, alchè io devo rispondere si.

Bene, mi crea quindi tutte textbox di nome Text1.Text, e qui quindi mi chiedo:

il ciclo for quindi mi diventerebbe semplicemente:



for i = 0 to 1
if text1.text = "" then errore = true
next i
end if


e poi, potrei applicarlo anche se il contenuto delle textbox deve contenere variabili diverse? (string, integer, double) ?

Fenomeno85
15-12-2004, 19:59
Private Sub Command1_Click()
Dim f As Boolean
Dim i As Integer
'f è un flag che è a true se i campi sono riempiti
f = True
For i = 0 To 1
If (Text1(i).Text = "") Then
MsgBox "ue inserisci i dati :)"
f = False
End If
Next i
If (f = True) Then
MsgBox "Metti nel file :D"
End If
' Buon Natale e buone Feste by Matteo
End Sub

~§~ Sempre E Solo Lei ~§~

RaouL_BennetH
15-12-2004, 20:00
Originariamente inviato da Fenomeno85

Private Sub Command1_Click()
Dim f As Boolean
Dim i As Integer
'f è un flag che è a true se i campi sono riempiti
f = True
For i = 0 To 1
If (Text1(i).Text = "") Then
MsgBox "ue inserisci i dati :)"
f = False
End If
Next i
If (f = True) Then
MsgBox "Metti nel file :D"
End If
' Buon Natale e buone Feste by Matteo
End Sub

~§~ Sempre E Solo Lei ~§~

Fantasticoooooooo!!

Grazie diecimille volte :D

P.S: Buone feste anche a teee !

Fenomeno85
15-12-2004, 20:03
Originariamente inviato da RaouL_BennetH
Fantasticoooooooo!!

Grazie diecimille volte :D

P.S: Buone feste anche a teee !

di niente :D il bello di VB6 è la creazione appunto delle matrici di controllo :)
Se hai altri problemi chiedi :)

~§~ Sempre E Solo Lei ~§~

RaouL_BennetH
15-12-2004, 22:36
Indubbiamente, le matrici sono una comodità (ma credo di aver capito che si tratti degli array) ma.....

Dato che ho una trentina di textbox, e ciascuna dovrebbe avere una lunghezza prefissata, ad esempio text1(i + 0).text di 8 cifre, text1(i + 1).text di 11 cifre, devo farmi il singolo controllo per ogni text per controllare che l'utente non inserisca più delle cifre possibili?

Fenomeno85
16-12-2004, 13:44
no non complicarti la vita fai in questo modo alquanto semplice ma efficace.


Private Sub Form_Load()
'n è la variabile che contiene il numero di text
Dim i As Integer, n As Integer
n = 2
For i = 0 To n
Text1(i).MaxLength = i + 1
Next i
'Buone Feste by Matteo
End Sub


~§~ Sempre E Solo Lei ~§~

matpez
16-12-2004, 20:13
Per ottimizzare si può fare così:


For i = 0 To Text1.count
Text1(i).MaxLength = i + 1
Next i



E cmq se hai tutte le textbox con il limite uguale basta che metti la proprietà maxlenght a quello che vuoi tu, così dopo n cifre la text boc nn ti fa più inserire nulla!