' Run-time error '91':
' Object variable or With block variable not set
'
'
'>>> HTML CONTROL <<<
'
'
'
'
'
'Whisper Control
'
'
'
'
'
'
Option Explicit
Public PvtWindows() As New frmWhisper
Public PvtWindowState() As WichPvt
Type WichPvt
name As String
deleted As Boolean
End Type
Function FreePvtIndex() As Integer
On Error GoTo Errhandler
Dim i As Integer
Dim ArrayCount As Integer
ArrayCount = UBound(PvtWindows)
For i = 1 To ArrayCount
If PvtWindowState(i).deleted Then
FreePvtIndex = i
PvtWindowState(i).deleted = False
Exit Function
End If
Next
ReDim Preserve PvtWindows(ArrayCount + 1)
ReDim Preserve PvtWindowState(ArrayCount + 1)
FreePvtIndex = UBound(PvtWindows)
Exit Function
Errhandler:
If VBA.Information.Err.Number = 9 Then
Resume Next
ElseIf VBA.Information.Err.Number > 400 Then
Resume Next
Else
MsgBox "Error: " & vbCrLf & VBA.Information.Err.Description & vbCrLf & "Source: " & VBA.Information.Err.Source & vbCrLf & "Number: " & VBA.Information.Err.Number
End If
End Function
Function GetPvtIndex(sNick As String) As Integer
Dim i As Integer
Dim ArrayCount As Integer
ArrayCount = UBound(PvtWindows)
For i = 1 To ArrayCount
If Not PvtWindowState(i).deleted Then
If PvtWindows(i).Caption = sNick Then
GetPvtIndex = i
Exit For
End If
End If
Next
End Function
Function DoesPvtExists(sNick As String) As Boolean
On Error GoTo Errhandler
Dim i As Integer
Dim ArrayCount As Integer
DoesPvtExists = False
ArrayCount = UBound(PvtWindows)
For i = 1 To ArrayCount
If Not PvtWindowState(i).deleted Then
If PvtWindows(i).Caption = sNick Then
DoesPvtExists = True
Exit For
End If
End If
Next
Exit Function
Errhandler:
If VBA.Information.Err = 9 Then
Resume Next
End If
End Function
Public Sub UserWhisper(tempNick As String, Optional sMsgs As String)
Dim PvtStart As String, PvtEnd As String, PvtIndex As Integer
If tempNick = sMyNick Then Exit Sub
If sMsgs <> "" Then
sMsgs = Mid(sMsgs, 3)
sMsgs = Mid(sMsgs, InStr(1, sMsgs, ":", 1) + 1)
sMsgs = Replace(sMsgs, vbCrLf, "")
End If
If Not DoesPvtExists(tempNick) Then
PvtIndex = FreePvtIndex
Call PvtWindows(PvtIndex).SetEventObject(frmMain)
PvtWindows(PvtIndex).Tag = PvtIndex
'test solution start
Dim sApppChanger As String
sApppChanger = "file:///" & Replace$(App.Path, "\", "/") & "/whisper.html"
'test solution end
PvtWindows(PvtIndex).IEtxtWhisper.Navigate sApppChanger
Call PvtWindows(PvtIndex).Chatter(tempNick)
If sMsgs <> "" Then
PvtStart = ""
If tempNick <> "" Then
PvtStart = "" & sMyNick & ": "
End If
PvtEnd = ""
PvtWindows(PvtIndex).IEtxtWhisper.Document.getElementById("chatwhisper").innerHTML = PvtWindows(PvtIndex).IEtxtWhisper.Document.getElementById("chatwhisper").innerHTML & PvtStart & sMsgs & PvtEnd & "
"
PvtWindows(PvtIndex).IEtxtWhisper.Document.ParentWindow.ScrollBy 0, 50
End If
PvtWindows(PvtIndex).Show 'vbModal, Me
PvtWindowState(PvtIndex).name = tempNick
PvtWindows(PvtIndex).WindowState = vbNormal
Else
PvtWindows(GetPvtIndex(tempNick)).WindowState = vbNormal
If sMsgs <> "" Then
PvtStart = ""
If tempNick <> "" Then
PvtStart = "" & sMyNick & ": "
End If
PvtEnd = ""
PvtWindows(PvtIndex).IEtxtWhisper.getElementById("chatwhisper").innerHTML = PvtWindows(PvtIndex).IEtxtWhisper.Document.getElementById("chatwhisper").innerHTML & PvtStart & sMsgs & PvtEnd & "
"
PvtWindows(PvtIndex).IEtxtWhisper.getElementById("chatwhisper").innerHTML
End If
End If
End Sub