Alarm

Tags:    visual-basic

<< < 12 > >>
Hey jeg er ved at lave et alarm program hvor man kan sende en alarm beskrd til en admin.

jeg bruger listview til at vise mine informationer men hvordan sætter jeg de modtaget data ind?
fx. Username=Frederik Prioity=Medium Note=Hejsa
så skal den indsætt i lw:
TIME Username Prioity Note
----------------------------------------
now() Frederik Medium Hejsa
----------------------------------------

server code:
<code>
Dim text As String
Private Sub Form_Load()
Winsock1.Close
Winsock1.Listen
End Sub

Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
If Winsock1.State <> sckClosed Then Winsock1.Close
Winsock1.Accept requestID
End Sub

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Winsock1.GetData text
Set lItem = ListView1.ListItems.Add(, , Now())
lItem.ListSubItems.Add , , text
End Sub


</code>
client code
<code>
Private Sub Command1_Click()
If txtUser.Text = "" Or cboPrio.Text = "" Or txtNote.Text = "" Then
MsgBox "ERROR: All field is not feld!", vbCritical
Else
Winsock1.SendData (txtUser.Text & ":" & cboPrio.Text & ":" & txtNote.Text)
End If
End Sub

Private Sub Form_Load()
Do Until Winsock1.State <> sckClosed
DoEvents
Winsock1.Close
Winsock1.Connect "194.255.58.10", 3537
Loop
End Sub

Private Sub Winsock1_Close()
Winsock1.Close
End Sub


</code>



12 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 2 karma
Sorter efter stemmer Sorter efter dato
Her er din kode testet og det virker. Du har en Global Text variabel det er aldrig godt, deklarer altid lokalt. Winsock1.GetData Text har du flyttet til AddLW routinen. Husk også at din listview komponent skal hedde lw. (Altså Name propertien skal ændres fra default navnet: ListView1) Tag og copy/paste client og server koden til dit projekt, så burde det virke


Client kode:
Fold kodeboks ind/udKode 



Server kode:
Fold kodeboks ind/udKode 




Normalt har jeg en Sub til at initialisere et ListView med de kolonner man ønsker:

Private Sub CreateView()
With lw
.LabelEdit = lvwManual
.View = lvwReport
.ColumnHeaders.Clear
.ColumnHeaders.Add , , "Time", 1000
.ColumnHeaders.Add , , "Username ", 2000
.ColumnHeaders.Add , , "Prioity ", 2000
.ColumnHeaders.Add , , "Note", 2000
End With
End Sub
----------------------------------------------

For at indsætte data gøres således:

Private Sub AddLW()
Dim Item As ListItem

Set Item = lw.ListItems.Add(, , now)
Item.SubItems(1) = "Frederik"
Item.SubItems(2) = "Medium"
Item.SubItems(3) = "Hejsa"
End Sub




Det var ikke helt det jeg mente men jeg har nok ikke sagt det klart nok jeg bruger WINSOCK til min forbindelse fra client til server.



Ok så se her.
CreateView skal du kalde een gang i Form_Load

De data du modtager fra Winsock er formateret således: "Frederik:Medium:Hejsa"
Jeg har udvidet Sub AddLW således du kan kalde den med din text og din seperator karakter:

Private Sub AddLW(Text As String, Delimiter As String)
Dim Item As ListItem
Dim Tmp As String
Dim X1 As Integer

Set Item = lw.ListItems.Add(, , Now)
Tmp = Split(Text, Delimiter)
For X1 = 0 To UBound(Tmp)
Item.SubItems(X1 + 1) = Tmp(X1)
Next X1
End Sub

Herefter ser din Winsock1_DataArrival sådan ud:

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Winsock1.GetData text
AddLW text, ":"
End Sub




Sorry. Dim Tmp As String skal være: Dim Tmp As Variant i Sub Addlw



Tak.. Er ikke lige ved min vb pc lige nu men tjekker det senere..:D







Det virker ikke



Det er godt som du gør dig umage med at forklare hvad det er som ikke virker. Hvad hedder din ListView komponent, og hvordan ser den streng ud du modtager i Winsock1_DataArrival? Godt gået knægt, klap dig selv på skulderen.



componenten er vist 6.0 og min kode.
Fold kodeboks ind/udKode 




<< < 12 > >>
t