Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Visual Basic 6 - TextBox
Forum - Visual Basic 6 - TextBox

Pagine: [ 1 2 3 ] Precedente | Prossimo
Avatar
j7-na (Normal User)
Rookie


Messaggi: 45
Iscritto: 20/10/2011

Segnala al moderatore
Postato alle 11:12
Sabato, 05/11/2011
Salve,
ho un problema abbastanza semplice, però mi sto perdendo. In pratica ho 4 TextBox, nella prima grazie ad un command button viene visualizzato un valore.

Ecco:

Codice sorgente - presumibilmente VB.NET

  1. Option Explicit
  2. Dim i, N As Integer
  3. Dim Valore(1 To 25) As Double
  4. Dim totale As Double
  5.  
  6. Private Sub Command1_Click()
  7.  
  8. totale = Val(Text1.Text)
  9. totale = 0
  10. Label1.Caption = ""
  11.  
  12. Do
  13. N = InputBox("Quanti valori vuoi caricare?" & vbCrLf & _
  14. "(Inserire un valore minore di 10)", "richiesta numero dati")
  15. Loop While N > 10
  16.  
  17. For i = 1 To N
  18. Valore(i) = InputBox("Inserisci Valore", "Inserimento Dati")
  19. Next i
  20.  
  21.  
  22. For i = 1 To N
  23. totale = totale + Valore(i)
  24. Next i
  25.  
  26. Text1.Text = totale
  27.  
  28. End Sub




Poi dopo sono andato ad inserire negli atri 3 TextBox il resto di codice:

Codice sorgente - presumibilmente VB.NET

  1. Private Sub Text2_Change()
  2. Dim c As Double
  3. Dim eccedenza As Double
  4.  
  5. eccedenza = Val(Text2.Text)
  6.  
  7. c = totale + eccedenza
  8. Text1.Text = c
  9. End Sub
  10.  
  11. Private Sub Text3_Change()
  12. Dim c1 As Double
  13. Dim eccedenza1 As Double
  14.  
  15. eccedenza1 = Val(Text3.Text)
  16.  
  17. c1 = totale - eccedenza1
  18. Text1.Text = c1
  19. End Sub




Quando vado ad inserire un valore nella Text2...il programma automaticamente mi somma quello che ho aggiunto, se inserisco un valore nella Text3, mi sottrae il valore che ho aggiunto, ma non alla somma che ho ottenuto pochi secondi prima...ma al totale che ho ottenuto grazie al CommandButton.

Ad esempio...se ho inserito 3 valori:

1)1000
2)3000
3)1000

Facendo la somma ottengo 5000...poi inserendo nella Text2 il valore 1000, ottengo 6000, ma se nella Text3 inserisco 1000, non visualizzo 5000, ma visualizzo 4000, cioè il risultato errato. Dove sbaglio? ;)

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6402
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 11:17
Sabato, 05/11/2011
Perché utilizzi la variabile totale che non è il valore presente nella textbox2


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
j7-na (Normal User)
Rookie


Messaggi: 45
Iscritto: 20/10/2011

Segnala al moderatore
Postato alle 12:09
Sabato, 05/11/2011
E cosa devo usare?

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6402
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 13:25
Sabato, 05/11/2011
Utilizza sempre il valore prendendolo direttamente dal textbox. Ad esempio

   Text1.Text = CStr(CDbl(Text1.Text)+CDbl(Text2.Text))

o

   Text1.Text = CStr(CDbl(Text1.Text)-CDbl(Text3.Text))

ma non usare l'evento change ...

Ultima modifica effettuata da nessuno il 05/11/2011 alle 13:32


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
j7-na (Normal User)
Rookie


Messaggi: 45
Iscritto: 20/10/2011

Segnala al moderatore
Postato alle 13:51
Sabato, 05/11/2011
Ho bisogno che subito mi calcoli quello che voglio...perchè non devo usare l'evento change? Cosa dovrei usare?

In effetti se uso l'evento change...mi visualizza valori sbagliati.

Se ad esempio il totale è 2000...inserendo 1000 nella Text2...il totale che visualizzo è 3111...se poi inserisco 1000 nella Text3...il totale che visualizzo è 2000.

Ultima modifica effettuata da j7-na il 05/11/2011 alle 13:55
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6402
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 14:14
Sabato, 05/11/2011
E' ovvio perché il change viene chiamato ogni volta che il valore cambia

Se scrivi 2000 verrà chiamato quando scrivi 2 quando scrivi 20 quando scrivi 200 e quando scrivi 2000.

Quindi avrai sommato i valori 2+20+200+2000

E se sbagli e cancelli un carattere, verrà chiamato ancora finché non termini di inserire il valore.

Devi trovare un modo per indicare che il valore che hai scritto è quello che vuoi usare. O usi il tasto Invio (e usi l'evento KeyPress) o usi dei Command (dei pulsanti) sul form per indicare la somma e la differenza.


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
j7-na (Normal User)
Rookie


Messaggi: 45
Iscritto: 20/10/2011

Segnala al moderatore
Postato alle 14:19
Sabato, 05/11/2011
Un esempio???

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6402
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 14:28
Sabato, 05/11/2011
Ma vuoi un esempio per tutto?

Intanto prova a seguire i suggerimenti che ti ho dato!

Prova a fare da solo ... poi, se il codice che scrivi ha problemi, ce lo mostri ...


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
j7-na (Normal User)
Rookie


Messaggi: 45
Iscritto: 20/10/2011

Segnala al moderatore
Postato alle 18:53
Sabato, 05/11/2011
No, anzi ora provo a scrivere del codice con i tuoi consigli. Appena finisco ti faccio sapere. Per il momento grazie. :k:

PM Quote
Pagine: [ 1 2 3 ] Precedente | Prossimo