Winsock aus anderem Form heraus ansprechen.

fiction

Mitglied
Hallo Leute,

mal wieder ich mit einem Problem. Undzwar habe ich ein MDI-Parent und mehrere Childs dazu. In dem MDI-Child, welches bei mir als erstes gestartet wird (Login-Formular) verbindet sich mein Winsock-Control nach eingabe von Nickname/Passwort erfolgreich zu einem Chatserver. Das Login-Formular in dem sich das Winsock-Control befindet lasse ich nach erfolgreichem Connect ausblenden mit "login.visible = false". Klappt auch bisher, denn die Verbindung zum Chat besteht weiterhin über das Winsock-Element. Nun habe ich ein weiteres MDI-Child, welche die Channelliste eines Servers anzeigen soll. Mit (login.w.SendData "l" & vbCrLf) kann ich "l" an den Server senden, so dass er mir auch erfolgreich die Channelliste zurücksendet. Mein Problem ist, wie spreche ich das vorher im Loginform deklarierte "message_in" in meinem Channelform an?

Hoffe einer weiß rat, hab schon mehreres ausprobiert aber nichts klappte bisher! :)

Gruß fiction
 
Was ist das/diese message_in, ist das eine Function oder eine Variable? Wenn es eine Variable ist und du sie über mehrere Forms nutzen willst, empfehle ich dass du sie in einem Modul als Public/Global dimensionierst, dann kannst du vom gesamten Projekt aus darauf zugreifen.


Der Doc!
 
Code:
Public Sub w_DataArrival(ByVal allebytes As Long)
Dim message_in As String
w.GetData message_in
End Sub

So hab ich das im Login-Form.
Falls es da eine andere Lösung gibt die Variable Projektweit zu benutzen, bin ich für jegliche Änderungen offen. :-)
 
Wenn du die Variable direkt in der Sub deklarierst, kannst du sie nur dort nutzen. Wie gesagt, füge deinem Projekt ein Modul hinzu und schreib dort
Visual Basic:
Public message_in As String
rein (du kannst das auch in schon vorhandenen Modulen tun, aber immer vor allen Prozeduren). Die Dimensionierung in der w_DataArrival-Prozedur kannst du dann weglassen.


Der Doc!
 
Hab es hinbekommen. Danke :)

Nun nochmal schnell ne andere Frage: Wie schaffe ich es, die Variable message_in zu leeren, sobald diese neuen Input (wie unten als beispiel) bekommt.

Beispiel:

Variable bekommt beim erfolgreichen Connecten "ausername#id" übergeben. Beim Abruf der Channelliste bekommt sie "channel1#channel2#....". Beim ausgeben dieser Channelliste in eine Listbox befindet sich jedoch nun noch der Teil, den die Variable beim Connect übergeben bekommen hat. Diese möchte ich nicht mit anzeigen.

Gruß fiction
 
Zurück