Textarea aktualisieren

Übersicht BlitzBasic BlitzPlus

Neue Antwort erstellen

 

Guillemot

Betreff: Textarea aktualisieren

BeitragMo, Nov 27, 2006 22:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo, ich bin Anfänger und hab ein Problem mit einem Textarea in meinem Chatprogramm.
Und zwar hab ich es so programmiert, das der eingehende String direkt in ein Textarea hinzugefügt wird.
Da sich aber das Textarea nicht aktualisiert, wenn eine neue Nachricht reinkommt, ist diese auch nicht zu erkennen.
Es aktualisiert sich nur wenn man auf eine Maustaste drückt.
Gibt es irgendeinen Weg um dieses Textarea zu aktualisieren ?

Falls es euch hilft, hier noch der Code :

Code: [AUSKLAPPEN]
; Ermittelt die Auflösung des Desktops
DBreite = ClientWidth (Desktop())
DHoehe  = ClientHeight (Desktop())


; Erstellt das Chat Hauptfenster
CF             = CreateWindow ("Chat"      ,DBreite/3,DHoehe/3,500,300,0,49)


; Erstellt die Buttons
IPButton        = CreateButton ("IP-Adresse"   ,  0,130,100, 20,CF,1)
Einstellungen   = CreateButton ("Mein Name"      ,  0,150,100, 20,CF,1)
NotAus          = CreateButton ("Not Aus"      ,100,130,300, 40,CF,1)
Senden          = CreateButton ("Senden"      ,400,130, 90, 40,CF,1)
Seite           = CreateButton (""            ,490,  0, 10,302,CF,1)


; Textfelder erstellen
ankommend = CreateTextArea (0,  0,490,130,CF,1)
ausgehend = CreateTextArea (0,170,490,130,CF,1)
;DisableGadget ankommend


; Variablen
Global Tiefer2x$ = Chr$(13)+Chr$(10)+Chr$(13)+Chr$(10)
Const Port = 90


; Server erstellen
Server = CreateTCPServer (Port)      ;erstellt den Server damit ich nachrichten empfangen kann
If Server = 0 Then AddTextAreaText ankommend,"Server konnte nicht erstellt werden..." Else AddTextAreaText ankommend,"Server erfolgreich erstellt..."





; Hauptschleife
Repeat

; ausgehenden Daten aus dem ausgehendem Textfeld
VersandDaten$ = TextAreaText (ausgehend)


; stellt die emfpangenen Daten dar
Antwort$ = AcceptTCPStream (Server)

If Antwort$ Then
   AddTextAreaText ankommend, ReadString$ (Antwort$)
   Antwort$ = 0         
EndIf


; zum schließen auf oben rechts X
If WaitEvent()=$803 Then
   CloseTCPServer Server
   End
EndIf


; dient der Auswahl der Buttons      
Select EventSource()         
   Case NotAus
      CloseTCPServer Server
      End
   
   Case Senden   
      If IP$ <> "" Or "0" Then   ;für Fehlermeldung, wenn keine IP adresse eingegeben wurde
      
         Client = OpenTCPStream (IP$,Port)   ;prüft ob verbindung hergestellt ist, und sendet wenn text vorhanden ist
         If Client <> 0 Then
            WriteString Client,Tiefer2x$ + MeinName$+ " --> " + VersandDaten$
            AddTextAreaText ankommend,Tiefer2x$ + MeinName$+ " --> " + VersandDaten$
            SetGadgetText ausgehend,""
            CloseTCPStream Client
         Else AddTextAreaText ankommend,Tiefer2x$ + "Nachricht konnte nicht versand werden!" +Chr$(13)+Chr$(10) + "Es konnte keine Verbindung aufgebaut werden!"
         EndIf
      Else AddTextAreaText ankommend,Tiefer2x$ + "Nachricht konnte nicht versand werden!" +Chr$(13)+Chr$(10) + "Es konnte keine Verbindung aufgebaut werden!"
      EndIf    
      
   Case Einstellungen
      MeinName$ = VersandDaten$
      SetGadgetText ausgehend,""
      AddTextAreaText ankommend,Tiefer2x$ + "Dein Name wurde zu: "+MeinName$+" geändert..."
      
   Case IPButton
      IP$ = VersandDaten$
      SetGadgetText ausgehend,""
      AddTextAreaText ankommend,Tiefer2x$ + "Neue IP-Adresse eingestellt (" + IP$ + ")"
      
End Select

Forever

Lunatix

BeitragMo, Nov 27, 2006 22:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
...WaitEvent hält das prorgam solange an, bis ein neues Event zur verfügung steht...


mache am anfang
Code: [AUSKLAPPEN]

tm = CreateTimer(60)
;...
If PeekEvent() > 0
  Event = WaitEvent()
  ;...
EndIf

;am ende (vor Until)
WaitTimer tm



Peekevent gibt True zurück, ob ein Event vorhanden ist, ansonsten False.
Damit hält man das program nicht an...

[/quote]
[size=9]Pro|gram|mier|er: Ein Organismus, der Koffein in Software umwandelt.
Geben Sie eine beliebige 11-stellige Primzahl ein, um fortzusetzen...
 

Guillemot

BeitragMo, Nov 27, 2006 23:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke für die schnelle Antwort.
Deine Lösung ist durchaus logisch, aber dadurch funktionieren aus irgendeinem Grund meine Buttons nicht mehr.
Hast du dafür auch eine Lösung ?

Lunatix

BeitragDi, Nov 28, 2006 19:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Hast du auch das WAITEVENT noch drinne ?

PeekEvent gibt _NUR_ true oder False zurück.- kein Event!
[size=9]Pro|gram|mier|er: Ein Organismus, der Koffein in Software umwandelt.
Geben Sie eine beliebige 11-stellige Primzahl ein, um fortzusetzen...

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragDi, Nov 28, 2006 19:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Waitevent() wartet immer auf ein Event, hält das Programm dann auch solange an!
Waitevent(0) wartet nie!
Waitevent (50) wartet max. 50 Millisekunden und lastet das System nicht 100% aus!
[BB2D | BB3D | BB+]

Lunatix

BeitragDi, Nov 28, 2006 20:02
Antworten mit Zitat
Benutzer-Profile anzeigen
trotzdem geht es auch mit timer und PeekEvent...
[size=9]Pro|gram|mier|er: Ein Organismus, der Koffein in Software umwandelt.
Geben Sie eine beliebige 11-stellige Primzahl ein, um fortzusetzen...
 

Guillemot

BeitragDi, Nov 28, 2006 20:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Also ich hab es mit beidem mal probiert.
Mit WaitEvent(50) hat es dann funktioniert.
Bei PeekEvent hatte ich das Problem das die Buttons dann nicht mehr wollten oder das Programm sehr instabil lief.

Ich habe das mit PeekEvent so verstanden:

Code: [AUSKLAPPEN]
If PeekEvent() > 0 Then
   If WaitEvent()=$803 Then
       CloseTCPServer Server
       End
   EndIf
EndIf


Bitte korrigiert mich, wenn ich falsch liege.
AMD Athlon XP 2800+
Asrock K7S8X R3.0
1GB Corsair RAM
NVIDIA 5900ZT
Windows Vista RC1 Build 5728
BB+ und BB3D

Lunatix

BeitragDi, Nov 28, 2006 21:03
Antworten mit Zitat
Benutzer-Profile anzeigen
-.-'

Deine buttons können nich richtig gehn....

Event = WaitEvent()

Select Event
case $803
CloseTcpserver...

!!

nicht WaitEvent = xyz
[size=9]Pro|gram|mier|er: Ein Organismus, der Koffein in Software umwandelt.
Geben Sie eine beliebige 11-stellige Primzahl ein, um fortzusetzen...
 

Guillemot

BeitragDi, Nov 28, 2006 21:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Ohh...ok, Danke.
Diese kombination hatte ich nicht probiert.

Neue Antwort erstellen


Übersicht BlitzBasic BlitzPlus

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group