Version 6.4.0.0.beta1, tag libreoffice-6.4.0.0.beta1
[LibreOffice.git] / wizards / source / access2base / Event.xba
blobeb5f23019aaf595735c4def358b00b8992fb0812
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd">
3 <script:module xmlns:script="http://openoffice.org/2000/script" script:name="Event" script:language="StarBasic">
4 REM =======================================================================================================================
5 REM === The Access2Base library is a part of the LibreOffice project. ===
6 REM === Full documentation is available on http://www.access2base.com ===
7 REM =======================================================================================================================
9 Option Compatible
10 Option ClassModule
12 Option Explicit
14 REM -----------------------------------------------------------------------------------------------------------------------
15 REM --- CLASS ROOT FIELDS ---
16 REM -----------------------------------------------------------------------------------------------------------------------
18 Private _Type As String &apos; Must be EVENT
19 Private _EventSource As Object
20 Private _EventType As String
21 Private _EventName As String
22 Private _SubComponentName As String
23 Private _SubComponentType As Long
24 Private _ContextShortcut As String
25 Private _ButtonLeft As Boolean &apos; com.sun.star.awt.MouseButton.XXX
26 Private _ButtonRight As Boolean
27 Private _ButtonMiddle As Boolean
28 Private _XPos As Variant &apos; Null or Long
29 Private _YPos As Variant &apos; Null or Long
30 Private _ClickCount As Long
31 Private _KeyCode As Integer &apos; com.sun.star.awt.Key.XXX
32 Private _KeyChar As String
33 Private _KeyFunction As Integer &apos; com.sun.star.awt.KeyFunction.XXX
34 Private _KeyAlt As Boolean
35 Private _KeyCtrl As Boolean
36 Private _KeyShift As Boolean
37 Private _FocusChangeTemporary As Boolean &apos; False if user action in same window
38 Private _RowChangeAction As Long &apos; com.sun.star.sdb.RowChangeAction.XXX
39 Private _Recommendation As String &apos; &quot;IGNORE&quot; or &quot;&quot;
41 REM -----------------------------------------------------------------------------------------------------------------------
42 REM --- CONSTRUCTORS / DESTRUCTORS ---
43 REM -----------------------------------------------------------------------------------------------------------------------
44 Private Sub Class_Initialize()
45 _Type = OBJEVENT
46 _EventSource = Nothing
47 _EventType = &quot;&quot;
48 _EventName = &quot;&quot;
49 _SubComponentName = &quot;&quot;
50 _SubComponentType = -1
51 _ContextShortcut = &quot;&quot;
52 _ButtonLeft = False &apos; See com.sun.star.awt.MouseButton.XXX
53 _ButtonRight = False
54 _ButtonMiddle = False
55 _XPos = Null
56 _YPos = Null
57 _ClickCount = 0
58 _KeyCode = 0
59 _KeyChar = &quot;&quot;
60 _KeyFunction = com.sun.star.awt.KeyFunction.DONTKNOW
61 _KeyAlt = False
62 _KeyCtrl = False
63 _KeyShift = False
64 _FocusChangeTemporary = False
65 _RowChangeAction = 0
66 _Recommendation = &quot;&quot;
67 End Sub &apos; Constructor
69 REM -----------------------------------------------------------------------------------------------------------------------
70 Private Sub Class_Terminate()
71 On Local Error Resume Next
72 Call Class_Initialize()
73 End Sub &apos; Destructor
75 REM -----------------------------------------------------------------------------------------------------------------------
76 Public Sub Dispose()
77 Call Class_Terminate()
78 End Sub &apos; Explicit destructor
80 REM -----------------------------------------------------------------------------------------------------------------------
81 REM --- CLASS GET/LET/SET PROPERTIES ---
82 REM -----------------------------------------------------------------------------------------------------------------------
83 Property Get ButtonLeft() As Variant
84 ButtonLeft = _PropertyGet(&quot;ButtonLeft&quot;)
85 End Property &apos; ButtonLeft (get)
87 REM -----------------------------------------------------------------------------------------------------------------------
88 Property Get ButtonMiddle() As Variant
89 ButtonMiddle = _PropertyGet(&quot;ButtonMiddle&quot;)
90 End Property &apos; ButtonMiddle (get)
92 REM -----------------------------------------------------------------------------------------------------------------------
93 Property Get ButtonRight() As Variant
94 ButtonRight = _PropertyGet(&quot;ButtonRight&quot;)
95 End Property &apos; ButtonRight (get)
97 REM -----------------------------------------------------------------------------------------------------------------------
98 Property Get ClickCount() As Variant
99 ClickCount = _PropertyGet(&quot;ClickCount&quot;)
100 End Property &apos; ClickCount (get)
102 REM -----------------------------------------------------------------------------------------------------------------------
103 Property Get ContextShortcut() As Variant
104 ContextShortcut = _PropertyGet(&quot;ContextShortcut&quot;)
105 End Property &apos; ContextShortcut (get)
107 REM -----------------------------------------------------------------------------------------------------------------------
108 Property Get EventName() As Variant
109 EventName = _PropertyGet(&quot;EventName&quot;)
110 End Property &apos; EventName (get)
112 REM -----------------------------------------------------------------------------------------------------------------------
113 Property Get EventSource() As Variant
114 EventSource = _PropertyGet(&quot;EventSource&quot;)
115 End Property &apos; EventSource (get)
117 REM -----------------------------------------------------------------------------------------------------------------------
118 Property Get EventType() As Variant
119 EventType = _PropertyGet(&quot;EventType&quot;)
120 End Property &apos; EventType (get)
122 REM -----------------------------------------------------------------------------------------------------------------------
123 Property Get FocusChangeTemporary() As Variant
124 FocusChangeTemporary = _PropertyGet(&quot;FocusChangeTemporary&quot;)
125 End Property &apos; FocusChangeTemporary (get)
127 REM -----------------------------------------------------------------------------------------------------------------------
128 Property Get KeyAlt() As Variant
129 KeyAlt = _PropertyGet(&quot;KeyAlt&quot;)
130 End Property &apos; KeyAlt (get)
132 REM -----------------------------------------------------------------------------------------------------------------------
133 Property Get KeyChar() As Variant
134 KeyChar = _PropertyGet(&quot;KeyChar&quot;)
135 End Property &apos; KeyChar (get)
137 REM -----------------------------------------------------------------------------------------------------------------------
138 Property Get KeyCode() As Variant
139 KeyCode = _PropertyGet(&quot;KeyCode&quot;)
140 End Property &apos; KeyCode (get)
142 REM -----------------------------------------------------------------------------------------------------------------------
143 Property Get KeyCtrl() As Variant
144 KeyCtrl = _PropertyGet(&quot;KeyCtrl&quot;)
145 End Property &apos; KeyCtrl (get)
147 REM -----------------------------------------------------------------------------------------------------------------------
148 Property Get KeyFunction() As Variant
149 KeyFunction = _PropertyGet(&quot;KeyFunction&quot;)
150 End Property &apos; KeyFunction (get)
152 REM -----------------------------------------------------------------------------------------------------------------------
153 Property Get KeyShift() As Variant
154 KeyShift = _PropertyGet(&quot;KeyShift&quot;)
155 End Property &apos; KeyShift (get)
157 REM -----------------------------------------------------------------------------------------------------------------------
158 Property Get ObjectType() As String
159 ObjectType = _PropertyGet(&quot;ObjectType&quot;)
160 End Property &apos; ObjectType (get)
162 REM -----------------------------------------------------------------------------------------------------------------------
163 Public Function Properties(ByVal Optional pvIndex As Variant) As Variant
164 &apos; Return
165 &apos; a Collection object if pvIndex absent
166 &apos; a Property object otherwise
168 Dim vProperty As Variant, vPropertiesList() As Variant, sObject As String
169 vPropertiesList = _PropertiesList()
170 sObject = Utils._PCase(_Type)
171 If IsMissing(pvIndex) Then
172 vProperty = PropertiesGet._Properties(sObject, _This, vPropertiesList)
173 Else
174 vProperty = PropertiesGet._Properties(sObject, _This, vPropertiesList, pvIndex)
175 vProperty._Value = _PropertyGet(vPropertiesList(pvIndex))
176 End If
178 Exit_Function:
179 Set Properties = vProperty
180 Exit Function
181 End Function &apos; Properties
183 REM -----------------------------------------------------------------------------------------------------------------------
184 Property Get Recommendation() As Variant
185 Recommendation = _PropertyGet(&quot;Recommendation&quot;)
186 End Property &apos; Recommendation (get)
188 REM -----------------------------------------------------------------------------------------------------------------------
189 Property Get RowChangeAction() As Variant
190 RowChangeAction = _PropertyGet(&quot;RowChangeAction&quot;)
191 End Property &apos; RowChangeAction (get)
193 REM -----------------------------------------------------------------------------------------------------------------------
194 Public Function Source() As Variant
195 &apos; Return the object having fired the event: Form, Control or SubForm
196 &apos; Else return the root Database object
197 Source = _PropertyGet(&quot;Source&quot;)
198 End Function &apos; Source (get)
200 REM -----------------------------------------------------------------------------------------------------------------------
201 Property Get SubComponentName() As String
202 SubComponentName = _PropertyGet(&quot;SubComponentName&quot;)
203 End Property &apos; SubComponentName (get)
205 REM -----------------------------------------------------------------------------------------------------------------------
206 Property Get SubComponentType() As Long
207 SubComponentType = _PropertyGet(&quot;SubComponentType&quot;)
208 End Property &apos; SubComponentType (get)
210 REM -----------------------------------------------------------------------------------------------------------------------
211 Property Get XPos() As Variant
212 XPos = _PropertyGet(&quot;XPos&quot;)
213 End Property &apos; XPos (get)
215 REM -----------------------------------------------------------------------------------------------------------------------
216 Property Get YPos() As Variant
217 YPos = _PropertyGet(&quot;YPos&quot;)
218 End Property &apos; YPos (get)
220 REM -----------------------------------------------------------------------------------------------------------------------
221 REM --- CLASS METHODS ---
222 REM -----------------------------------------------------------------------------------------------------------------------
223 Public Function getProperty(Optional ByVal pvProperty As Variant) As Variant
224 &apos; Return property value of psProperty property name
226 Utils._SetCalledSub(&quot;Form.getProperty&quot;)
227 If IsMissing(pvProperty) Then Call _TraceArguments()
228 getProperty = _PropertyGet(pvProperty)
229 Utils._ResetCalledSub(&quot;Form.getProperty&quot;)
231 End Function &apos; getProperty
233 REM -----------------------------------------------------------------------------------------------------------------------
234 Public Function hasProperty(ByVal Optional pvProperty As Variant) As Boolean
235 &apos; Return True if object has a valid property called pvProperty (case-insensitive comparison !)
237 If IsMissing(pvProperty) Then hasProperty = PropertiesGet._hasProperty(_Type, _PropertiesList()) Else hasProperty = PropertiesGet._hasProperty(_Type, _PropertiesList(), pvProperty)
238 Exit Function
240 End Function &apos; hasProperty
242 REM -----------------------------------------------------------------------------------------------------------------------
243 REM --- PRIVATE FUNCTIONS ---
244 REM -----------------------------------------------------------------------------------------------------------------------
245 Public Sub _Initialize(poEvent As Object)
247 Dim oObject As Object, i As Integer
248 Dim sShortcut As String, sAddShortcut As String, sArray() As String
249 Dim sImplementation As String, oSelection As Object
250 Dim iCurrentDoc As Integer, oDoc As Object
251 Dim vPersistent As Variant
252 Const cstDatabaseForm = &quot;com.sun.star.comp.forms.ODatabaseForm&quot;
254 If _ErrorHandler() Then On Local Error Goto Error_Function
256 Set oObject = poEvent.Source
257 _EventSource = oObject
258 sArray = Split(Utils._getUNOTypeName(poEvent), &quot;.&quot;)
259 _EventType = UCase(sArray(UBound(sArray)))
260 If Utils._hasUNOProperty(poEvent, &quot;EventName&quot;) Then _EventName = poEvent.EventName
262 Select Case _EventType
263 Case &quot;DOCUMENTEVENT&quot;
264 &apos;SubComponent processing
265 Select Case UCase(_EventName)
266 Case UCase(&quot;OnSubComponentClosed&quot;), UCase(&quot;OnSubComponentOpened&quot;)
267 Set oSelection = poEvent.ViewController.getSelection()(0)
268 _SubComponentName = oSelection.Name
269 With com.sun.star.sdb.application.DatabaseObject
270 Select Case oSelection.Type
271 Case .TABLE : _SubComponentType = acTable
272 Case .QUERY : _SubComponentType = acQuery
273 Case .FORM : _SubComponentType = acForm
274 Case .REPORT : _SubComponentType = acReport
275 Case Else
276 End Select
277 End With
278 Case Else
279 End Select
280 Case &quot;EVENTOBJECT&quot;
281 Case &quot;ACTIONEVENT&quot;
282 Case &quot;FOCUSEVENT&quot;
283 _FocusChangeTemporary = poEvent.Temporary
284 Case &quot;ITEMEVENT&quot;
285 Case &quot;INPUTEVENT&quot;, &quot;KEYEVENT&quot;
286 _KeyCode = poEvent.KeyCode
287 _KeyChar = poEvent.KeyChar
288 _KeyFunction = poEvent.KeyFunc
289 _KeyAlt = Utils._BitShift(poEvent.Modifiers, com.sun.star.awt.KeyModifier.MOD2)
290 _KeyCtrl = Utils._BitShift(poEvent.Modifiers, com.sun.star.awt.KeyModifier.MOD1)
291 _KeyShift = Utils._BitShift(poEvent.Modifiers, com.sun.star.awt.KeyModifier.SHIFT)
292 Case &quot;MOUSEEVENT&quot;
293 _ButtonLeft = Utils._BitShift(poEvent.Buttons, com.sun.star.awt.MouseButton.LEFT)
294 _ButtonRight = Utils._BitShift(poEvent.Buttons, com.sun.star.awt.MouseButton.RIGHT)
295 _ButtonMiddle = Utils._BitShift(poEvent.Buttons, com.sun.star.awt.MouseButton.MIDDLE)
296 _XPos = poEvent.X
297 _YPos = poEvent.Y
298 _ClickCount = poEvent.ClickCount
299 Case &quot;ROWCHANGEEVENT&quot;
300 _RowChangeAction = poEvent.Action
301 Case &quot;TEXTEVENT&quot;
302 Case &quot;ADJUSTMENTEVENT&quot;, &quot;DOCKINGEVENT&quot;, &quot;ENDDOCKINGEVENT&quot;, &quot;ENDPOPUPMODEEVENT&quot;, &quot;ENHANCEDMOUSEEVENT&quot; _
303 , &quot;MENUEVENT&quot;, &quot;PAINTEVENT&quot;, &quot;SPINEVENT&quot;, &quot;VCLCONTAINEREVENT&quot;, &quot;WINDOWEVENT&quot;
304 Goto Exit_Function
305 Case Else
306 Goto Exit_Function
307 End Select
309 &apos; Evaluate ContextShortcut
310 sShortcut = &quot;&quot;
311 sImplementation = Utils._ImplementationName(oObject)
313 Select Case True
314 Case sImplementation = &quot;stardiv.Toolkit.UnoDialogControl&quot; &apos; Dialog
315 _ContextShortcut = &quot;Dialogs!&quot; &amp; _EventSource.Model.Name
316 Goto Exit_Function
317 Case Left(sImplementation, 16) = &quot;stardiv.Toolkit.&quot; &apos; Control in Dialog
318 _ContextShortcut = &quot;Dialogs!&quot; &amp; _EventSource.Context.Model.Name _
319 &amp; &quot;!&quot; &amp; _EventSource.Model.Name
320 Goto Exit_Function
321 Case Else
322 End Select
324 iCurrentDoc = _A2B_.CurrentDocIndex(, False)
325 If iCurrentDoc &lt; 0 Then Goto Exit_Function
326 Set oDoc = _A2B_.CurrentDocument(iCurrentDoc)
328 &apos; To manage 2x triggers of &quot;Before record action&quot; form event
329 If _EventType = &quot;ROWCHANGEEVENT&quot; And sImplementation &lt;&gt; &quot;com.sun.star.comp.forms.ODatabaseForm&quot; Then _Recommendation = &quot;IGNORE&quot;
331 Do While sImplementation &lt;&gt; &quot;SwXTextDocument&quot;
332 sAddShortcut = &quot;&quot;
333 Select Case sImplementation
334 Case &quot;com.sun.star.comp.forms.OFormsCollection&quot; &apos; Do nothing
335 Case Else
336 If Utils._hasUNOProperty(oObject, &quot;Model&quot;) Then
337 If oObject.Model.Name &lt;&gt; &quot;MainForm&quot; And oObject.Model.Name &lt;&gt; &quot;Form&quot; Then sAddShortcut = Utils._Surround(oObject.Model.Name)
338 ElseIf Utils._hasUNOProperty(oObject, &quot;Name&quot;) Then
339 If oObject.Name &lt;&gt; &quot;MainForm&quot; And oObject.Name &lt;&gt; &quot;Form&quot; Then sAddShortcut = Utils._Surround(oObject.Name)
340 End If
341 If sAddShortcut &lt;&gt; &quot;&quot; Then
342 If sImplementation = cstDatabaseForm And oDoc.DbConnect = DBCONNECTBASE Then sAddShortcut = sAddShortcut &amp; &quot;.Form&quot;
343 sShortcut = sAddShortcut &amp; Iif(Len(sShortcut) &gt; 0, &quot;!&quot; &amp; sShortcut, &quot;&quot;)
344 End If
345 End Select
346 Select Case True
347 Case Utils._hasUNOProperty(oObject, &quot;Model&quot;)
348 Set oObject = oObject.Model.Parent
349 Case Utils._hasUNOProperty(oObject, &quot;Parent&quot;)
350 Set oObject = oObject.Parent
351 Case Else
352 Goto Exit_Function
353 End Select
354 sImplementation = Utils._ImplementationName(oObject)
355 Loop
356 &apos; Add Forms! prefix
357 Select Case oDoc.DbConnect
358 Case DBCONNECTBASE
359 vPersistent = Split(oObject.StringValue, &quot;/&quot;)
360 sAddShortcut = Utils._Surround(_GetHierarchicalName(vPersistent(UBound(vPersistent) - 1)))
361 sShortcut = &quot;Forms!&quot; &amp; sAddShortcut &amp; &quot;!&quot; &amp; sShortcut
362 Case DBCONNECTFORM
363 sShortcut = &quot;Forms!0!&quot; &amp; sShortcut
364 End Select
366 sArray = Split(sShortcut, &quot;!&quot;)
367 &apos; If presence of &quot;Forms!myform!myform.Form&quot;, eliminate 2nd element
368 &apos; Eliminate anyway blanco subcomponents (e.g. Forms!!myForm)
369 If UBound(sArray) &gt;= 2 Then
370 If UCase(sArray(1)) &amp; &quot;.FORM&quot; = UCase(sArray(2)) Then sArray(1) = &quot;&quot;
371 sArray = Utils._TrimArray(sArray)
372 End If
373 &apos; If first element ends with .Form, remove suffix
374 If UBound(sArray) &gt;= 1 Then
375 If Len(sArray(1)) &gt; 5 And Right(sArray(1), 5) = &quot;.Form&quot; Then sArray(1) = left(sArray(1), Len(sArray(1)) - 5)
376 sShortcut = Join(sArray, &quot;!&quot;)
377 End If
378 If Len(sShortcut) &gt;= 2 Then
379 If Right(sShortcut, 1) = &quot;!&quot; Then
380 _ContextShortcut = Left(sShortcut, Len(sShortcut) - 1)
381 Else
382 _ContextShortcut = sShortcut
383 End If
384 End If
386 Exit_Function:
387 Exit Sub
388 Error_Function:
389 TraceError(TRACEWARNING, Err, &quot;Event.Initialize&quot;, Erl)
390 GoTo Exit_Function
391 End Sub &apos; _Initialize V0.9.1
393 REM -----------------------------------------------------------------------------------------------------------------------
394 Private Function _PropertiesList() As Variant
396 Dim sSubComponentName As String, sSubComponentType As String
397 sSubComponentName = Iif(_SubComponentType &gt; -1, &quot;SubComponentName&quot;, &quot;&quot;)
398 sSubComponentType = Iif(_SubComponentType &gt; -1, &quot;SubComponentType&quot;, &quot;&quot;)
399 Dim sXPos As String, sYPos As String
400 sXPos = Iif(IsNull(_XPos), &quot;&quot;, &quot;XPos&quot;)
401 sYPos = Iif(IsNull(_YPos), &quot;&quot;, &quot;YPos&quot;)
403 _PropertiesList = Utils._TrimArray(Array( _
404 &quot;ButtonLeft&quot;, &quot;ButtonRight&quot;, &quot;ButtonMiddle&quot;, &quot;ClickCount&quot; _
405 , &quot;ContextShortcut&quot;, &quot;EventName&quot;, &quot;EventType&quot;, &quot;FocusChangeTemporary&quot;, _
406 , &quot;KeyAlt&quot;, &quot;KeyChar&quot;, &quot;KeyCode&quot;, &quot;KeyCtrl&quot;, &quot;KeyFunction&quot;, &quot;KeyShift&quot; _
407 , &quot;ObjectType&quot;, &quot;Recommendation&quot;, &quot;RowChangeAction&quot;, &quot;Source&quot; _
408 , sSubComponentName, sSubComponentType, sXPos, sYPos _
411 End Function &apos; _PropertiesList
413 REM -----------------------------------------------------------------------------------------------------------------------
414 Private Function _PropertyGet(ByVal psProperty As String) As Variant
415 &apos; Return property value of the psProperty property name
417 If _ErrorHandler() Then On Local Error Goto Error_Function
418 Utils._SetCalledSub(&quot;Event.get&quot; &amp; psProperty)
420 _PropertyGet = EMPTY
422 Select Case UCase(psProperty)
423 Case UCase(&quot;ButtonLeft&quot;)
424 _PropertyGet = _ButtonLeft
425 Case UCase(&quot;ButtonMiddle&quot;)
426 _PropertyGet = _ButtonMiddle
427 Case UCase(&quot;ButtonRight&quot;)
428 _PropertyGet = _ButtonRight
429 Case UCase(&quot;ClickCount&quot;)
430 _PropertyGet = _ClickCount
431 Case UCase(&quot;ContextShortcut&quot;)
432 _PropertyGet = _ContextShortcut
433 Case UCase(&quot;FocusChangeTemporary&quot;)
434 _PropertyGet = _FocusChangeTemporary
435 Case UCase(&quot;EventName&quot;)
436 _PropertyGet = _EventName
437 Case UCase(&quot;EventSource&quot;)
438 _PropertyGet = _EventSource
439 Case UCase(&quot;EventType&quot;)
440 _PropertyGet = _EventType
441 Case UCase(&quot;KeyAlt&quot;)
442 _PropertyGet = _KeyAlt
443 Case UCase(&quot;KeyChar&quot;)
444 _PropertyGet = _KeyChar
445 Case UCase(&quot;KeyCode&quot;)
446 _PropertyGet = _KeyCode
447 Case UCase(&quot;KeyCtrl&quot;)
448 _PropertyGet = _KeyCtrl
449 Case UCase(&quot;KeyFunction&quot;)
450 _PropertyGet = _KeyFunction
451 Case UCase(&quot;KeyShift&quot;)
452 _PropertyGet = _KeyShift
453 Case UCase(&quot;ObjectType&quot;)
454 _PropertyGet = _Type
455 Case UCase(&quot;Recommendation&quot;)
456 _PropertyGet = _Recommendation
457 Case UCase(&quot;RowChangeAction&quot;)
458 _PropertyGet = _RowChangeAction
459 Case UCase(&quot;Source&quot;)
460 If _ContextShortcut = &quot;&quot; Then
461 _PropertyGet = _EventSource
462 Else
463 _PropertyGet = getObject(_ContextShortcut)
464 End If
465 Case UCase(&quot;SubComponentName&quot;)
466 _PropertyGet = _SubComponentName
467 Case UCase(&quot;SubComponentType&quot;)
468 _PropertyGet = _SubComponentType
469 Case UCase(&quot;XPos&quot;)
470 If IsNull(_XPos) Then Goto Trace_Error
471 _PropertyGet = _XPos
472 Case UCase(&quot;YPos&quot;)
473 If IsNull(_YPos) Then Goto Trace_Error
474 _PropertyGet = _YPos
475 Case Else
476 Goto Trace_Error
477 End Select
479 Exit_Function:
480 Utils._ResetCalledSub(&quot;Event.get&quot; &amp; psProperty)
481 Exit Function
482 Trace_Error:
483 &apos; Errors are not displayed to avoid display infinite cycling
484 TraceError(TRACEWARNING, ERRPROPERTY, Utils._CalledSub(), 0, False, psProperty)
485 _PropertyGet = EMPTY
486 Goto Exit_Function
487 Error_Function:
488 TraceError(TRACEABORT, Err, &quot;Event._PropertyGet&quot;, Erl)
489 _PropertyGet = EMPTY
490 GoTo Exit_Function
491 End Function &apos; _PropertyGet V1.1.0
493 </script:module>