Author | Message | Time |
---|---|---|
BaDDBLooD | I have a Procedure in a module called Functions The function is: [code] Public Sub AddChat(ByRef RichTextBox As System.Windows.Forms.RichTextBox, ByVal ParamArray Text() As Object) With RichTextBox .SelectionStart = 99999999 .SelectionLength = 0 .SelectionColor = Color.White .SelectedText = "[" & TimeOfDay & "] " .SelectionLength = 0 End With For I As Byte = LBound(Text) To UBound(Text) Step 2 With RichTextBox .SelectionStart = 99999999 .SelectionLength = 0 .SelectionColor = Text(I) .SelectedText = Text(I + 1) & Microsoft.VisualBasic.Left(vbCrLf, -2 * CLng((I + 1) = UBound(Text))) .SelectionStart = 99999999 End With Next End Function [/code] When i try and use this procedure, i can't reference my Rich Text Box This is where i call it: [code] Public Function Connect(ByVal server As String, ByVal port As Integer) As Boolean Dim hostEntry As IPHostEntry = Nothing hostEntry = Dns.Resolve(server) Dim address As IPAddress For Each address In hostEntry.AddressList Dim endPoint As New IPEndPoint(address, port) Dim tempSocket As New Socket(endPoint.AddressFamily, SocketType.Stream, ProtocolType.Tcp) Try tempSocket.Connect(endPoint) Catch Err As SocketException AddChat(rtbChat, Color.Red, "Error #: " & Err.ErrorCode & ", " & Err.Message) End Try If tempSocket.Connected Then Socket = tempSocket MsgBox("Connected") Exit For End If Next address Return True End Function [/code] RichTextBox is underlined in blue, with the error "Name 'rtbChat' is not declared. Why do i get this? Any help would be GREATLY apreciated EDIT: Are there better ways to do these functions, if so please leave opinions. | January 16, 2005, 9:10 PM |
dRAgoN | 999999999??[code] .SelectionStart = .Text.Length[/code] My guess is your problem is from how you referanced the richtextbox. [code] Public Sub RTBAdd(ByVal rtb As RichTextBox, ByVal ParamArray saElements() As Object) Dim i As Integer 'If Client.GUI.Switches.TimestampsOn Then 'End If For i = LBound(saElements) To UBound(saElements) Step 2 With rtb .SelectionStart = .Text.Length .SelectionLength = 0 .SelectionColor = saElements(i) .SelectedText = saElements(i + 1) .SelectionStart = .Text.Length End With Next i rtb.Refresh() End Sub[/code] edit: or rtbChat is not the name of your rtb? | January 17, 2005, 9:23 AM |
Smurfling | I guess your function is not within the form your rtbChat richtextbox is on, but if you want to reference through AddChat(rtbChat,....) it has to ;) I would recommend you 2 things: first would be to create an interface through which you can write your output to the richtextbox. second (not that smooth, you will get exception errors if you try to write output in a pretty fast interval): in your module above the rtbadd sub add the line [code]Public OutputRTB As RichtTextBox[/code] then change your rtbadd to: [code]Public Sub AddChat(ByVal ParamArray Text() As Object) With OutputRTB .SelectionStart = .Text.Length .SelectionLength = 0 .SelectionColor = Color.White .SelectedText = "[" & TimeOfDay & "] " .SelectionLength = 0 End With For I As Byte = LBound(Text) To UBound(Text) Step 2 With OutputRTB .SelectionStart = .Text.Length .SelectionLength = 0 .SelectionColor = Text(I) .SelectedText = Text(I + 1) & Microsoft.VisualBasic.Left(vbCrLf, -2 * CLng((I + 1) = UBound(Text))) .SelectionStart = .Text.Length End With Next End Function[/code] Last thing you need to do is within the sub "Form_Load()" where your richtextbox resides. Add following code: [code]OutputRTB = Me.rtbChat[/code] if you want to add alot of output you will want to choose the first one. Hope that helps Edit: I am not at home so i cant give you my interface example here but one more thing to the second option: You could make it a little more better by defining a boolean which is set to true when you already writing to the rtb. if its true and the function is called write a loop or a thread to wait until the boolean is false again so it is safe to write again. But as i already said: this is not the way output should be written to the rtb, use a interface. soon as i am home ill try to give you a hint ;) | January 17, 2005, 4:15 PM |