Aktive Alarme in einer benutzerdefinierten Listenansicht
Das folgende Beispiel zeigt, wie man eine benutzerdefinierte Listenansicht, die aktive Alarme in Visual Basic anzeigt, für den TcEventLogger erstellt.
Die folgenden Schritte müssen ausgeführt werden, um das Beispiel zu erstellen.
- Erstellen Sie ein Standard EXE Projekt mit einem Formular.
- Fügen Sie die Microsoft Standardsteuerelemente 6 in die Liste der Steuerelemente ein.
- Fügen Sie die Beckhoff TcEventLogger Bibliothek zu der Referenzliste hinzu.
- Fügen Sie ein Listenansicht ActiveX Steuerelement in das Formular ein.
- Benennen Sie die Listenansicht in lvwAlarm um.
- Kopieren Sie den folgenden Code in das Formular.
Option Explicit
Dim WithEvents objEventLogger As TcEventLog
'------------------------------------------------------
' this method is called when the form is loaded
'
Private Sub Form_Load()
Set objEventLogger = New TcEventLog
Call initListView
Call DisplayActiveAlarms
End Sub
'------------------------------------------------------
' this method is called when a new alarm is issued
'
Private Sub objEventLogger_OnNewEvent(ByVal evtObj As Object)
' cast to TcEvent interface
Dim objEvent As TcEvent
Set objEvent = evtObj
' get the key
Dim newKey As String
newKey = GetKeyFromIDs(objEvent.SrcId, objEvent.Id)
'get the Event Message Text
Dim strMessage As String
strMessage = objEvent.GetMsgString(1033)
'add the Message to the listview
Dim objListItem As ListItem
Set objListItem = lvwAlarm.ListItems.Add(, newKey, strMessage & objEvent.Date)
End Sub
'------------------------------------------------------
' this method is called when a alarm is reset
'
Private Sub objEventLogger_OnResetEvent(ByVal evtObj As Object)
' cast to TcEvent interface
Dim objEvent As TcEvent
Set objEvent = evtObj
' get the key
Dim newKey As String
newKey = GetKeyFromIDs(objEvent.SrcId, objEvent.Id)
'remove the event from the listview
Call lvwAlarm.ListItems.Remove(newKey)
End Sub
'------------------------------------------------------
' initalize the list view
'
Sub initListView()
lvwAlarm.View = lvwReport
lvwAlarm.GridLines = True
'init the Header
Dim objColHdr As ColumnHeaders
Set objColHdr = lvwAlarm.ColumnHeaders
Debug.Assert Not objColHdr Is Nothing
Call objColHdr.Clear
Call objColHdr.Add(1, "Message", "Message", 5000)
End Sub
'------------------------------------------------------
' display all active alarms
'
Private Sub DisplayActiveAlarms()
'clear the listview
Call lvwAlarm.ListItems.Clear
Debug.Assert Not objEventLogger Is Nothing
Dim objEvent As TcEvent
'get the number of active Events
For Each objEvent In objEventLogger.EnumActiveEventsEx
If (Not objEvent Is Nothing) Then
'here we get one Event from the collection
Dim strMessage As String
'get the Event Message Text
strMessage = objEvent.GetMsgString(1033)
'get the key
Dim newKey As String
newKey = GetKeyFromIDs(objEvent.SrcId, objEvent.Id)
'add the Message to the listview
Dim objListItem As ListItem
Set objListItem = lvwAlarm.ListItems.Add(, newKey, strMessage & objEvent.Date)
End If
Next
End Sub
'------------------------------------------------------
' create unique key from event group and event id
'
Public Function GetKeyFromIDs(ByVal SourceId As Long, ByVal EventId As Long) As String
GetKeyFromIDs = SourceId & "-" & EventId
End Function
Beim Aufruf des Formulars wird eine Referenz zu dem einzigen EventLogger erzeugt, selbst dann wenn wir einen neuen Operator verwenden. Dann wird die Listenansicht initialisiert. Die Listenansicht enthält eine Spalte in der die Ereignismeldung in Englisch angezeigt wird. Die Methode DisplayActiveAlarms holt die Liste der aktiven Alarme vom EventLogger und zeigt sie anschließend an. Wenn ein neuer Alarm ausgegeben wird oder bestehende Alarme zurückgesetzt werden, fügt die Ereignisfunktion OnNewEvent Ereignisse in die Listenansicht ein und die Ereignisfunktion OnResetEvent entfernt Ereignisse aus der Listenansicht. Die Methode GetKeyFromIDs erzeugt einen einmaligen Schlüssel von der Ereignisgruppe und der Ereignis-ID.
Die benutzerdefinierte Ereignisansicht unterstützt nur Ereignisse, die nicht quittiert werden müssen. Um die benutzerdefinierte Ereignisansicht für quittierungspflichtige Alarme verwenden zu können, müssen die Ereignisse ITcEventLogEvents::OnSignalEvent und ITcEventLogEvents::OnConfirmEvent angelegt werden.
Sprache / IDE | Beispielprogram auspacken |
---|---|
Visual Basic 6.0 |