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 - Eventi TextBox
Forum - Visual Basic 6 - Eventi TextBox

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
Roberto VB (Member)
Expert


Messaggi: 419
Iscritto: 29/01/2007

Segnala al moderatore
Postato alle 11:22
Domenica, 03/06/2007
Salve, sto lavorando alla mia chat da un po' di tempo, ora però ho trovato un problema :D

Codice sorgente - presumibilmente Delphi

  1. 'Se txtInvia contiene almeno un carattere allora invia il messaggio
  2. If txtInvia.SelStart > 0 Then
  3. Data = "Client sta scrivendo un messaggio"
  4. TCP.SendData Data
  5. 'Altrimenti non invia nulla
  6. Else
  7. Data = " "
  8. TCP.SendData Data
  9. End If



Con questo codice ogni volta che scrivo un messaggio, l'altro utente riceve in una textbox un messaggio avvisandolo che sto scrivendo.
Il problema sta nel fatto che il codice si trova nell'evento change della textbox e quindi si verifica ogni volta che digito un carattere, di conseguenza se scrivo velocemente Data non è più "Client sta scrivendo un messaggio", ma "Client sta scrivendo un messaggio""Client sta scrivendo un messaggio""Client sta scrivendo un messaggio""Client sta scrivendo un messaggio" . per cui quando si verifica DataArrival non esegue:
Codice sorgente - presumibilmente VB.NET

  1. If Data = " " Then txtStato.Text = "": Exit Sub
  2. If Data = "Client sta scrivendo un messaggio" Then
  3. txtStato.Text = "Client sta scrivendo un messaggio"
  4. Exit Sub
  5. End If


visto che Data non è più "Client sta scrivendo un messaggio"

Codice sorgente - presumibilmente VB.NET

  1. Dim Data As String
  2. TCP.GetData Data
  3. If Data = " " Then txtStato.Text = "": Exit Sub
  4. If Data = "Client sta scrivendo un messaggio" Then
  5. txtStato.Text = "Client sta scrivendo un messaggio"
  6. Exit Sub
  7. End If
  8. If Data = "Hai ricevuto un trillo!" Then Beep
  9. lblStato.Caption = "In arrivo " & bytesTotal & "Bytes"
  10. txtChat.Text = txtChat.Text & " Remoto> " & Data & vbCrLf
  11. txtChat.SelStart = Len(txtChat.Text)
  12. txtStato.Text = ""



E' un pochino complicato da spiegare spero che  abbiate capito!! ;) In caso contrario ditemelo!!

PM Quote
Avatar
P4p3r0g4 (Member)
Guru


Messaggi: 1319
Iscritto: 29/12/2006

Segnala al moderatore
Postato alle 14:52
Domenica, 03/06/2007
non basterebbe mettere una variabile booleana a  true quando la tua textbox non è vuota e a false quando lo è e inviare a ogni cambiamento di testo il valore della variabile?

PM Quote
Avatar
Roberto VB (Member)
Expert


Messaggi: 419
Iscritto: 29/01/2007

Segnala al moderatore
Postato alle 16:01
Domenica, 03/06/2007
Però non so su che evento inserire il codice. In change non penso che può funzionare, perchè l'evento si verifica ogni volta che inserisco un carattere

PM Quote
Avatar
SuperTiz (Ex-Member)
Pro


Messaggi: 97
Iscritto: 25/05/2007

Segnala al moderatore
Postato alle 20:00
Domenica, 03/06/2007
Proviamo con il suggerimento di Paperoga, che mi sembra molto valido




sto per dare una risposta affrettata, cmq prova cosi

scrivi

Dim X as Boolean
If txtInvia.SelStart > 0 then
X = true
else
X = false
end if
If X = true then
Data = "Client sta scrivendo un messaggio"
TCP.SendData Data
Else
Data = " "
TCP.SendData Data
End If


dovrebbe andare, se x è vero allora visualizza il messaggio, se è falso no..
prova e facci sapere!

Ultima modifica effettuata da SuperTiz il 03/06/2007 alle 20:01
PM Quote
Avatar
Roberto VB (Member)
Expert


Messaggi: 419
Iscritto: 29/01/2007

Segnala al moderatore
Postato alle 21:25
Domenica, 03/06/2007
Avevo già provato in questo modo, comunque ho inserito il codice che mi hai suggerito e il problema persiste. Appena comincio a scrivere velocemente compare:

Remoto> Client sta scrivendo un messaggioClient sta scrivendo un messaggioClient sta scrivendo un messaggioClient sta scrivendo un messaggioClient sta scrivendo un messaggioClient sta scrivendo un messaggioClient sta scrivendo un messaggioClient sta scrivendo un messaggioClient sta scrivendo un messaggioClient sta scrivendo un messaggioClient sta scrivendo un messaggioClient sta scrivendo un messaggioClient sta scrivendo un messaggioClient sta scrivendo un messaggioClient sta scrivendo un messaggioClient sta scrivendo un messaggioClient sta scrivendo un messaggioClient sta scrivendo un messaggioClient sta scrivendo un messaggioClient sta scrivendo un messaggio

PM Quote
Avatar
Roberto VB (Member)
Expert


Messaggi: 419
Iscritto: 29/01/2007

Segnala al moderatore
Postato alle 21:25
Domenica, 03/06/2007
  

Ultima modifica effettuata da Roberto VB il 03/06/2007 alle 21:29
PM Quote
Avatar
Roberto VB (Member)
Expert


Messaggi: 419
Iscritto: 29/01/2007

Segnala al moderatore
Postato alle 21:26
Domenica, 03/06/2007
  

Ultima modifica effettuata da Roberto VB il 03/06/2007 alle 21:29
PM Quote
Avatar
P4p3r0g4 (Member)
Guru


Messaggi: 1319
Iscritto: 29/12/2006

Segnala al moderatore
Postato alle 14:20
Lunedì, 04/06/2007
Codice sorgente - presumibilmente VB.NET

  1. Private sub txtinvia_change()
  2. Dim X as Boolean
  3. If txtInvia = "" then
  4. X = false
  5. else
  6. X = true
  7. end if
  8. if x = true
  9. TCP.SendData "true"
  10. else
  11. TCP.SendData "false"
  12. end if
  13. end sub



nel dataarrival

Codice sorgente - presumibilmente VB.NET

  1. if datiricevuti = true
  2. text1.text = "il clinet sta scrivendo un messaggio"
  3. elseif datiricevuti = false
  4. text1.text = ""
  5. end if


Ultima modifica effettuata da P4p3r0g4 il 04/06/2007 alle 14:21
PM Quote
Avatar
Roberto VB (Member)
Expert


Messaggi: 419
Iscritto: 29/01/2007

Segnala al moderatore
Postato alle 15:37
Martedì, 05/06/2007
Continua a darmi lo stesso problema 8-|

PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo