KeyboardEvent.ToString Property (Visio)
Returns a string that represents the properties of a KeyboardEvent or MouseEvent object. Read-only.
expression A variable that represents a KeyboardEvent object.
ToString is the default property of both KeyboardEvent and MouseEvent objects.
When a KeyDown , KeyPress , or KeyUp event fires, the ToString property returns a string that represents the properties of the KeyboardEvent object that gets passed to VisEventProc . The string has the following form:
event code ; KeyCode property value; KeyButtonState property value; KeyAscii property value; Window.Caption
where event code returns the code of the event that fired and Window.Caption returns the caption of the window that sourced the event. For example, if a user pressed the "L" key while holding down the SHIFT key, in response to the KeyPress event, ToString might return
When a MouseDown , MouseMove , or MouseUp event fires, the ToString property returns a string that represents the properties of the MouseEvent object that gets passed to VisEventProc . The string has the following form:
event code ; Button property value; KeyButtonState property value; x property value; y property value; Window.Caption
where event code returns the code of the event that fired and Window.Caption returns the caption of the window that sourced the event. For example, if a user clicked the left mouse button near the middle of the drawing page while holding down the SHIFT key, in response to the MouseDown event, ToString might return
For more information about the possible values returned by each of the individual properties represented by the string returned by ToString , see the respective property topics in this Automation Reference.
The following Microsoft Visual Basic for Applications (VBA) example shows how to use the AddAdvise method to create a Event object that will sink a MouseDown event. It uses the ToString property of the MouseEvent object to report the details of the event that fired.
The example contains a class module and two public procedures that are inserted into the ThisDocument project of the active Visio document:
The CreateEventObject procedure creates an instance of a sink-object (event-handling) class named clsEventSink that gets passed to the AddAdvise method, and that receives notifications of events. In addition, the procedure creates an Event object to send notifications of firings of the MouseDown event sourced by the Application object to the sink object.
The DeleteEventObject procedure deletes this Event object when your program is finished using it.
The clsEventSink class implements the IVisEventProc interface. The class module creates a class to handle events fired by the Visio Application object. The module consists of the function VisEventProc , which uses a Select Case block to check for the MouseDown event. When a MouseDown event fires, Visio passes a MouseEvent object to VisEventProc as pSubjectObj. The function then constructs a message that displays the string returned by the ToString property of the MouseEvent object passed to the function.
Other events fall under the default case (Case Else). The Case Else block constructs a string ( strMessage ) that contains the name and event code of the event that fired. Finally, the function displays the string in the Immediate window.
The example assumes that there is an active document in the Visio application window. Copy the following code into the ThisDocument project in the Visual Basic Editor:
Option Explicit Private mEventSink As clsEventSink 'Declare visEvtAdd as a 2-byte value 'to avoid a run-time overflow error Private Const visEvtAdd% = &H8000 Public Sub CreateMouseDownEventObject() Dim vsoApplicationEvents As Visio.EventList Dim vsoMouseDownEvent As Visio.Event 'Create an instance of the clsEventSink class 'to pass to the AddAdvise method. Set mEventSink = New clsEventSink 'Get the EventList collection of the application Set vsoApplicationEvents = Application.EventList 'Add an Event object for the MouseDown event 'that will send notifications. Set vsoMouseDownEvent= vsoApplicationEvents.AddAdvise( _ visEvtCodeMouseDown, mEventSink, "", "Mouse down...") End Sub Public Sub DeleteMouseDownEventObject() 'Delete the Event object for the MouseDown event vsoMouseDownEvent.Delete Set vsoMouseDownEvent = Nothing End Sub
Copy the following code into a new class module in VBA, naming the module clsEventSink.
Implements Visio.IVisEventProc Private Function IVisEventProc_VisEventProc( _ ByVal nEventCode As Integer, _ ByVal pSourceObj As Object, _ ByVal nEventID As Long, _ ByVal nEventSeqNum As Long, _ ByVal pSubjectObj As Object, _ ByVal vMoreInfo As Variant) As Variant Dim strMessage As String Dim vsoMouseDownEvent As Visio.MouseEvent 'Find out which event fired Select Case nEventCode Case visEvtCodeMouseDown Set vsoMouseEvent = pSubjectObj strMessage = "ToString is: " & vsoMouseEvent.ToString Case Else strMessage = "Other (" & nEventCode & ")" End Select 'Display the event name and the event code Debug.Print strMessage End Function