<html><head></head><body><div style="color:#000; background-color:#fff; font-family:HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif;font-size:10px"><div dir="ltr" id="yui_3_16_0_ym19_1_1461029038584_4782">Hi<br id="yui_3_16_0_ym19_1_1461029038584_6750"><br id="yui_3_16_0_ym19_1_1461029038584_6751">I am having trouble figuring out how do add events to a COM UI interface.<br id="yui_3_16_0_ym19_1_1461029038584_6752">So far all the things that I have tried after reading posts on many forums either result in an error, cause the interface to hang or do nothing at all.<br id="yui_3_16_0_ym19_1_1461029038584_6753"><br id="yui_3_16_0_ym19_1_1461029038584_6754">The UI in reference is the SAP Business One UI API Version 9.0 a.k.a. SAbouiCOM.exe<br id="yui_3_16_0_ym19_1_1461029038584_6755">The documentation has examples in VB and C# which I have copied below in case they help.<br id="yui_3_16_0_ym19_1_1461029038584_6756"><br id="yui_3_16_0_ym19_1_1461029038584_6757">I am not familiar with Windows programming, VB, or C# by any strectch of one's imagination so at this stage any help is appreciated and it will be promptly tried out.<br id="yui_3_16_0_ym19_1_1461029038584_6758">First some relevant parts from the makepy output, and when I say relevant it is what I imagine to be important, I can post the whole thing somewhere if required:<br id="yui_3_16_0_ym19_1_1461029038584_6759"><br id="yui_3_16_0_ym19_1_1461029038584_6760"># -*- coding: mbcs -*-<br id="yui_3_16_0_ym19_1_1461029038584_6761"># Created by makepy.py version 0.5.01<br id="yui_3_16_0_ym19_1_1461029038584_6762"># By python version 2.7.11 (v2.7.11:6d1b6a68f775, Dec  5 2015, 20:40:30) [MSC v.1500 64 bit (AMD64)]<br id="yui_3_16_0_ym19_1_1461029038584_6763"># >From type library 'SAPbouiCOM.exe'<br id="yui_3_16_0_ym19_1_1461029038584_6764"># On Sun Mar 06 18:20:27 2016<br id="yui_3_16_0_ym19_1_1461029038584_6765"><br id="yui_3_16_0_ym19_1_1461029038584_6766">class _IApplicationEvents:<br id="yui_3_16_0_ym19_1_1461029038584_6767">    '_IApplicationEvents Interface'<br id="yui_3_16_0_ym19_1_1461029038584_6768">    CLSID = CLSID_Sink = IID('{81B441CB-BB83-44B2-8A62-6DFBEB7B6217}')<br id="yui_3_16_0_ym19_1_1461029038584_6769">    coclass_clsid = IID('{49B5C554-9A6B-4530-A90D-2B51B27BCEDA}')<br id="yui_3_16_0_ym19_1_1461029038584_6770">    _public_methods_ = [] # For COM Server support<br id="yui_3_16_0_ym19_1_1461029038584_6771">    _dispid_to_func_ = {<br id="yui_3_16_0_ym19_1_1461029038584_6772">              120 : "OnLayoutKeyEvent",<br id="yui_3_16_0_ym19_1_1461029038584_6773">              103 : "OnStatusBarEvent",<br id="yui_3_16_0_ym19_1_1461029038584_6774">              100 : "OnItemEvent",<br id="yui_3_16_0_ym19_1_1461029038584_6775">              109 : "OnWidgetEvent",<br id="yui_3_16_0_ym19_1_1461029038584_6776">              108 : "OnFormDataEvent",<br id="yui_3_16_0_ym19_1_1461029038584_6777">              106 : "OnReportDataEvent",<br id="yui_3_16_0_ym19_1_1461029038584_6778">              101 : "OnMenuEvent",<br id="yui_3_16_0_ym19_1_1461029038584_6779">              202 : "OnServerInvokeCompletedEvent",<br id="yui_3_16_0_ym19_1_1461029038584_6780">              201 : "OnUDOEvent",<br id="yui_3_16_0_ym19_1_1461029038584_6781">              102 : "OnAppEvent",<br id="yui_3_16_0_ym19_1_1461029038584_6782">              104 : "OnProgressBarEvent",<br id="yui_3_16_0_ym19_1_1461029038584_6783">              105 : "OnPrintEvent",<br id="yui_3_16_0_ym19_1_1461029038584_6784">              107 : "OnRightClickEvent",<br id="yui_3_16_0_ym19_1_1461029038584_6785">        }<br id="yui_3_16_0_ym19_1_1461029038584_6786"><br id="yui_3_16_0_ym19_1_1461029038584_6787">    def __init__(self, oobj = None):<br id="yui_3_16_0_ym19_1_1461029038584_6788">        if oobj is None:<br id="yui_3_16_0_ym19_1_1461029038584_6789">            self._olecp = None<br id="yui_3_16_0_ym19_1_1461029038584_6790">        else:<br id="yui_3_16_0_ym19_1_1461029038584_6791">            import win32com.server.util<br id="yui_3_16_0_ym19_1_1461029038584_6792">            from win32com.server.policy import EventHandlerPolicy<br id="yui_3_16_0_ym19_1_1461029038584_6793">            cpc=oobj._oleobj_.QueryInterface(pythoncom.IID_IConnectionPointContainer)<br id="yui_3_16_0_ym19_1_1461029038584_6794">            cp=cpc.FindConnectionPoint(self.CLSID_Sink)<br id="yui_3_16_0_ym19_1_1461029038584_6795">            cookie=cp.Advise(win32com.server.util.wrap(self, usePolicy=EventHandlerPolicy))<br id="yui_3_16_0_ym19_1_1461029038584_6796">            self._olecp,self._olecp_cookie = cp,cookie<br id="yui_3_16_0_ym19_1_1461029038584_6797">    def __del__(self):<br id="yui_3_16_0_ym19_1_1461029038584_6798">        try:<br id="yui_3_16_0_ym19_1_1461029038584_6799">            self.close()<br id="yui_3_16_0_ym19_1_1461029038584_6800">        except pythoncom.com_error:<br id="yui_3_16_0_ym19_1_1461029038584_6801">            pass<br id="yui_3_16_0_ym19_1_1461029038584_6802">    def close(self):<br id="yui_3_16_0_ym19_1_1461029038584_6803">        if self._olecp is not None:<br id="yui_3_16_0_ym19_1_1461029038584_6804">            cp,cookie,self._olecp,self._olecp_cookie = self._olecp,self._olecp_cookie,None,None<br id="yui_3_16_0_ym19_1_1461029038584_6805">            cp.Unadvise(cookie)<br id="yui_3_16_0_ym19_1_1461029038584_6806">    def _query_interface_(self, iid):<br id="yui_3_16_0_ym19_1_1461029038584_6807">        import win32com.server.util<br id="yui_3_16_0_ym19_1_1461029038584_6808">        if iid==self.CLSID_Sink: return win32com.server.util.wrap(self)<br id="yui_3_16_0_ym19_1_1461029038584_6809"><br id="yui_3_16_0_ym19_1_1461029038584_6810">    # Event Handlers<br id="yui_3_16_0_ym19_1_1461029038584_6811">    # If you create handlers, they should have the following prototypes:<br id="yui_3_16_0_ym19_1_1461029038584_6812">#    def OnLayoutKeyEvent(self, eventInfo=defaultNamedNotOptArg, BubbleEvent=pythoncom.Missing):<br id="yui_3_16_0_ym19_1_1461029038584_6813">#        'method LayoutKeyEvent'<br id="yui_3_16_0_ym19_1_1461029038584_6814">#    def OnStatusBarEvent(self, Text=defaultNamedNotOptArg, messageType=defaultNamedNotOptArg):<br id="yui_3_16_0_ym19_1_1461029038584_6815">#        'method StatusBarEvent'<br id="yui_3_16_0_ym19_1_1461029038584_6816">#    def OnItemEvent(self, FormUID=defaultNamedNotOptArg, pVal=defaultNamedNotOptArg, BubbleEvent=pythoncom.Missing):<br id="yui_3_16_0_ym19_1_1461029038584_6817">#        'ItemEvent'<br id="yui_3_16_0_ym19_1_1461029038584_6818">#    def OnWidgetEvent(self, pWidgetData=defaultNamedNotOptArg, BubbleEvent=pythoncom.Missing):<br id="yui_3_16_0_ym19_1_1461029038584_6819">#        'method WidgetEvent'<br id="yui_3_16_0_ym19_1_1461029038584_6820">#    def OnFormDataEvent(self, BusinessObjectInfo=defaultNamedNotOptArg, BubbleEvent=pythoncom.Missing):<br id="yui_3_16_0_ym19_1_1461029038584_6821">#        'method FormDataEvent'<br id="yui_3_16_0_ym19_1_1461029038584_6822">#    def OnReportDataEvent(self, eventInfo=defaultNamedNotOptArg, BubbleEvent=pythoncom.Missing):<br id="yui_3_16_0_ym19_1_1461029038584_6823">#        'method ReportDataEvent'<br id="yui_3_16_0_ym19_1_1461029038584_6824">#    def OnMenuEvent(self, pVal=defaultNamedNotOptArg, BubbleEvent=pythoncom.Missing):<br id="yui_3_16_0_ym19_1_1461029038584_6825">#        'MenuEvent'<br id="yui_3_16_0_ym19_1_1461029038584_6826">#    def OnServerInvokeCompletedEvent(self, b1iEventArgs=defaultNamedNotOptArg, BubbleEvent=pythoncom.Missing):<br id="yui_3_16_0_ym19_1_1461029038584_6827">#        'method ServerInvokeCompletedEvent'<br id="yui_3_16_0_ym19_1_1461029038584_6828">#    def OnUDOEvent(self, udoEventArgs=defaultNamedNotOptArg, BubbleEvent=pythoncom.Missing):<br id="yui_3_16_0_ym19_1_1461029038584_6829">#        'method UDOEvent'<br id="yui_3_16_0_ym19_1_1461029038584_6830">#    def OnAppEvent(self, EventType=defaultNamedNotOptArg):<br id="yui_3_16_0_ym19_1_1461029038584_6831">#        'ApplicationEvent'<br id="yui_3_16_0_ym19_1_1461029038584_6832">#    def OnProgressBarEvent(self, pVal=defaultNamedNotOptArg, BubbleEvent=pythoncom.Missing):<br id="yui_3_16_0_ym19_1_1461029038584_6833">#        'method ProgressBarEvent'<br id="yui_3_16_0_ym19_1_1461029038584_6834">#    def OnPrintEvent(self, eventInfo=defaultNamedNotOptArg, BubbleEvent=pythoncom.Missing):<br id="yui_3_16_0_ym19_1_1461029038584_6835">#        'method PrintEvent'<br id="yui_3_16_0_ym19_1_1461029038584_6836">#    def OnRightClickEvent(self, eventInfo=defaultNamedNotOptArg, BubbleEvent=pythoncom.Missing):<br id="yui_3_16_0_ym19_1_1461029038584_6837">#        'method RightClickEvent'<br id="yui_3_16_0_ym19_1_1461029038584_6838"><br id="yui_3_16_0_ym19_1_1461029038584_6839"><br id="yui_3_16_0_ym19_1_1461029038584_6840"># This CoClass is known by the name 'SAPbouiCOM.Application.90.0'<br id="yui_3_16_0_ym19_1_1461029038584_6841">class Application(CoClassBaseClass): # A CoClass<br id="yui_3_16_0_ym19_1_1461029038584_6842">    # Application Class<br id="yui_3_16_0_ym19_1_1461029038584_6843">    CLSID = IID('{49B5C554-9A6B-4530-A90D-2B51B27BCEDA}')<br id="yui_3_16_0_ym19_1_1461029038584_6844">    coclass_sources = [<br id="yui_3_16_0_ym19_1_1461029038584_6845">        _IApplicationEvents,<br id="yui_3_16_0_ym19_1_1461029038584_6846">    ]<br id="yui_3_16_0_ym19_1_1461029038584_6847">    default_source = _IApplicationEvents<br id="yui_3_16_0_ym19_1_1461029038584_6848">    coclass_interfaces = [<br id="yui_3_16_0_ym19_1_1461029038584_6849">        IApplication,<br id="yui_3_16_0_ym19_1_1461029038584_6850">    ]<br id="yui_3_16_0_ym19_1_1461029038584_6851">    default_interface = IApplication<br id="yui_3_16_0_ym19_1_1461029038584_6852"><br id="yui_3_16_0_ym19_1_1461029038584_6853"><br id="yui_3_16_0_ym19_1_1461029038584_6854">class IApplication(DispatchBaseClass):<br id="yui_3_16_0_ym19_1_1461029038584_6855">    'IApplication Interface'<br id="yui_3_16_0_ym19_1_1461029038584_6856">    CLSID = IID('{D1F75D47-137C-4335-AC2A-3FE209831B6A}')<br id="yui_3_16_0_ym19_1_1461029038584_6857">    coclass_clsid = IID('{49B5C554-9A6B-4530-A90D-2B51B27BCEDA}')<br id="yui_3_16_0_ym19_1_1461029038584_6858"><br id="yui_3_16_0_ym19_1_1461029038584_6859">    def ActivateMenuItem(self, MenuUID=defaultNamedNotOptArg):<br id="yui_3_16_0_ym19_1_1461029038584_6860">        'method ActivateMeunItem'<br id="yui_3_16_0_ym19_1_1461029038584_6861">        return self._oleobj_.InvokeTypes(52, LCID, 1, (24, 0), ((8, 1),),MenuUID<br id="yui_3_16_0_ym19_1_1461029038584_6862">            )<br id="yui_3_16_0_ym19_1_1461029038584_6863"><br id="yui_3_16_0_ym19_1_1461029038584_6864">    def ActivateToolbar(self, MenuUID=defaultNamedNotOptArg):<br id="yui_3_16_0_ym19_1_1461029038584_6865">        'method ActivateToolbar'<br id="yui_3_16_0_ym19_1_1461029038584_6866">        return self._oleobj_.InvokeTypes(86, LCID, 1, (24, 0), ((8, 1),),MenuUID<br id="yui_3_16_0_ym19_1_1461029038584_6867">            )<br id="yui_3_16_0_ym19_1_1461029038584_6868"><br id="yui_3_16_0_ym19_1_1461029038584_6869">    def CreateObject(self, Type=defaultNamedNotOptArg):<br id="yui_3_16_0_ym19_1_1461029038584_6870">        'Method CreateObject'<br id="yui_3_16_0_ym19_1_1461029038584_6871">        ret = self._oleobj_.InvokeTypes(65, LCID, 1, (9, 0), ((3, 1),),Type<br id="yui_3_16_0_ym19_1_1461029038584_6872">            )<br id="yui_3_16_0_ym19_1_1461029038584_6873">        if ret is not None:<br id="yui_3_16_0_ym19_1_1461029038584_6874">            ret = Dispatch(ret, u'CreateObject', None)<br id="yui_3_16_0_ym19_1_1461029038584_6875">        return ret<br id="yui_3_16_0_ym19_1_1461029038584_6876"><br id="yui_3_16_0_ym19_1_1461029038584_6877">    def ExportRptAsXML(self, rptPath=defaultNamedNotOptArg, params=defaultNamedNotOptArg):<br id="yui_3_16_0_ym19_1_1461029038584_6878">        'property ExportRptAsXML'<br id="yui_3_16_0_ym19_1_1461029038584_6879">        # Result is a Unicode object<br id="yui_3_16_0_ym19_1_1461029038584_6880">        return self._oleobj_.InvokeTypes(75, LCID, 1, (8, 0), ((8, 1), (8, 1)),rptPath<br id="yui_3_16_0_ym19_1_1461029038584_6881">            , params)<br id="yui_3_16_0_ym19_1_1461029038584_6882"><br id="yui_3_16_0_ym19_1_1461029038584_6883">    # Result is of type IEventFilters<br id="yui_3_16_0_ym19_1_1461029038584_6884">    def GetFilter(self):<br id="yui_3_16_0_ym19_1_1461029038584_6885">        'GetFilter'<br id="yui_3_16_0_ym19_1_1461029038584_6886">        ret = self._oleobj_.InvokeTypes(56, LCID, 1, (9, 0), (),)<br id="yui_3_16_0_ym19_1_1461029038584_6887">        if ret is not None:<br id="yui_3_16_0_ym19_1_1461029038584_6888">            ret = Dispatch(ret, u'GetFilter', '{CE8A5ED3-BA2B-4CE1-932A-53F4E92994F0}')<br id="yui_3_16_0_ym19_1_1461029038584_6889">        return ret<br id="yui_3_16_0_ym19_1_1461029038584_6890"><br id="yui_3_16_0_ym19_1_1461029038584_6891">    def GetFormItemDefaultHeight(self, itemType=defaultNamedNotOptArg):<br id="yui_3_16_0_ym19_1_1461029038584_6892">        'GetFormItemDefaultHeight'<br id="yui_3_16_0_ym19_1_1461029038584_6893">        return self._oleobj_.InvokeTypes(81, LCID, 1, (3, 0), ((3, 1),),itemType<br id="yui_3_16_0_ym19_1_1461029038584_6894">            )<br id="yui_3_16_0_ym19_1_1461029038584_6895"><br id="yui_3_16_0_ym19_1_1461029038584_6896">    def GetFormItemDefaultWidth(self, itemType=defaultNamedNotOptArg):<br id="yui_3_16_0_ym19_1_1461029038584_6897">        'GetFormItemDefaultWidth'<br id="yui_3_16_0_ym19_1_1461029038584_6898">        return self._oleobj_.InvokeTypes(80, LCID, 1, (3, 0), ((3, 1),),itemType<br id="yui_3_16_0_ym19_1_1461029038584_6899">            )<br id="yui_3_16_0_ym19_1_1461029038584_6900"><br id="yui_3_16_0_ym19_1_1461029038584_6901">    def GetLastBatchResults(self):<br id="yui_3_16_0_ym19_1_1461029038584_6902">        'GetLastBatchResults'<br id="yui_3_16_0_ym19_1_1461029038584_6903">        # Result is a Unicode object<br id="yui_3_16_0_ym19_1_1461029038584_6904">        return self._oleobj_.InvokeTypes(57, LCID, 1, (8, 0), (),)<br id="yui_3_16_0_ym19_1_1461029038584_6905"><br id="yui_3_16_0_ym19_1_1461029038584_6906">    def LoadBatchActions(self, XmlStr=defaultNamedNotOptArg):<br id="yui_3_16_0_ym19_1_1461029038584_6907">        'Batch Action'<br id="yui_3_16_0_ym19_1_1461029038584_6908">        return self._ApplyTypes_(54, 1, (24, 0), ((16392, 3),), u'LoadBatchActions', None,XmlStr<br id="yui_3_16_0_ym19_1_1461029038584_6909">            )<br id="yui_3_16_0_ym19_1_1461029038584_6910"><br id="yui_3_16_0_ym19_1_1461029038584_6911">    def MessageBox(self, Text=defaultNamedNotOptArg, DefaultBtn=1, Btn1Caption=u'Ok', Btn2Caption=u''<br id="yui_3_16_0_ym19_1_1461029038584_6912">            , Btn3Caption=u''):<br id="yui_3_16_0_ym19_1_1461029038584_6913">        'method MessageBox'<br id="yui_3_16_0_ym19_1_1461029038584_6914">        return self._ApplyTypes_(50, 1, (3, 32), ((8, 1), (3, 49), (8, 49), (8, 49), (8, 49)), u'MessageBox', None,Text<br id="yui_3_16_0_ym19_1_1461029038584_6915">            , DefaultBtn, Btn1Caption, Btn2Caption, Btn3Caption)<br id="yui_3_16_0_ym19_1_1461029038584_6916"><br id="yui_3_16_0_ym19_1_1461029038584_6917">    # Result is of type IForm<br id="yui_3_16_0_ym19_1_1461029038584_6918">    def OpenForm(self, sysObjectType=defaultNamedNotOptArg, bstrUDOObjectType=defaultNamedNotOptArg, bstrObjectKey=defaultNamedNotOptArg):<br id="yui_3_16_0_ym19_1_1461029038584_6919">        'method OpenForm'<br id="yui_3_16_0_ym19_1_1461029038584_6920">        ret = self._oleobj_.InvokeTypes(84, LCID, 1, (9, 0), ((3, 1), (8, 1), (8, 1)),sysObjectType<br id="yui_3_16_0_ym19_1_1461029038584_6921">            , bstrUDOObjectType, bstrObjectKey)<br id="yui_3_16_0_ym19_1_1461029038584_6922">        if ret is not None:<br id="yui_3_16_0_ym19_1_1461029038584_6923">            ret = Dispatch(ret, u'OpenForm', '{50BA08F8-4392-4395-B35A-50C93CA91A0C}')<br id="yui_3_16_0_ym19_1_1461029038584_6924">        return ret<br id="yui_3_16_0_ym19_1_1461029038584_6925"><br id="yui_3_16_0_ym19_1_1461029038584_6926">    def RemoveWindowsMessage(self, messageType=defaultNamedNotOptArg, toProcess=defaultNamedNotOptArg):<br id="yui_3_16_0_ym19_1_1461029038584_6927">        'method RemoveWindowsMessage'<br id="yui_3_16_0_ym19_1_1461029038584_6928">        return self._oleobj_.InvokeTypes(105, LCID, 1, (24, 0), ((3, 1), (11, 1)),messageType<br id="yui_3_16_0_ym19_1_1461029038584_6929">            , toProcess)<br id="yui_3_16_0_ym19_1_1461029038584_6930"><br id="yui_3_16_0_ym19_1_1461029038584_6931">    def SendKeys(self, Text=defaultNamedNotOptArg):<br id="yui_3_16_0_ym19_1_1461029038584_6932">        'method SendKeys'<br id="yui_3_16_0_ym19_1_1461029038584_6933">        return self._oleobj_.InvokeTypes(53, LCID, 1, (24, 0), ((8, 1),),Text<br id="yui_3_16_0_ym19_1_1461029038584_6934">            )<br id="yui_3_16_0_ym19_1_1461029038584_6935"><br id="yui_3_16_0_ym19_1_1461029038584_6936">    def Serialize(self, inXML=defaultNamedNotOptArg):<br id="yui_3_16_0_ym19_1_1461029038584_6937">        ' Serialize'<br id="yui_3_16_0_ym19_1_1461029038584_6938">        # Result is a Unicode object<br id="yui_3_16_0_ym19_1_1461029038584_6939">        return self._oleobj_.InvokeTypes(85, LCID, 1, (8, 0), ((8, 1),),inXML<br id="yui_3_16_0_ym19_1_1461029038584_6940">            )<br id="yui_3_16_0_ym19_1_1461029038584_6941"><br id="yui_3_16_0_ym19_1_1461029038584_6942">    def ServerInvoke(self, RequestUri=defaultNamedNotOptArg):<br id="yui_3_16_0_ym19_1_1461029038584_6943">        'method ServerInvoke'<br id="yui_3_16_0_ym19_1_1461029038584_6944">        # Result is a Unicode object<br id="yui_3_16_0_ym19_1_1461029038584_6945">        return self._oleobj_.InvokeTypes(100, LCID, 1, (8, 0), ((8, 1),),RequestUri<br id="yui_3_16_0_ym19_1_1461029038584_6946">            )<br id="yui_3_16_0_ym19_1_1461029038584_6947"><br id="yui_3_16_0_ym19_1_1461029038584_6948">    def SetFilter(self, Filter=0):<br id="yui_3_16_0_ym19_1_1461029038584_6949">        'SetFilter'<br id="yui_3_16_0_ym19_1_1461029038584_6950">        return self._oleobj_.InvokeTypes(55, LCID, 1, (24, 0), ((9, 49),),Filter<br id="yui_3_16_0_ym19_1_1461029038584_6951">            )<br id="yui_3_16_0_ym19_1_1461029038584_6952"><br id="yui_3_16_0_ym19_1_1461029038584_6953">    def SetStatusBarMessage(self, Text=defaultNamedNotOptArg, Seconds=20, IsError=True):<br id="yui_3_16_0_ym19_1_1461029038584_6954">        'method SetStatusBarMessage'<br id="yui_3_16_0_ym19_1_1461029038584_6955">        return self._oleobj_.InvokeTypes(51, LCID, 1, (24, 0), ((8, 1), (3, 49), (11, 49)),Text<br id="yui_3_16_0_ym19_1_1461029038584_6956">            , Seconds, IsError)<br id="yui_3_16_0_ym19_1_1461029038584_6957"><br id="yui_3_16_0_ym19_1_1461029038584_6958">    _prop_map_get_ = {<br id="yui_3_16_0_ym19_1_1461029038584_6959">        "AppId": (20, 2, (3, 0), (), "AppId", None),<br id="yui_3_16_0_ym19_1_1461029038584_6960">        # Method 'Cockpits' returns object of type 'ICockpits'<br id="yui_3_16_0_ym19_1_1461029038584_6961">        "Cockpits": (70, 2, (9, 0), (), "Cockpits", '{49193AF4-562F-4E9A-82C6-9B79B6C66383}'),<br id="yui_3_16_0_ym19_1_1461029038584_6962">        # Method 'Company' returns object of type 'ICompany'<br id="yui_3_16_0_ym19_1_1461029038584_6963">        "Company": (11, 2, (9, 0), (), "Company", '{195BCB8E-4D2F-4950-947C-9E3523929229}'),<br id="yui_3_16_0_ym19_1_1461029038584_6964">        # Method 'Desktop' returns object of type 'IDesktop'<br id="yui_3_16_0_ym19_1_1461029038584_6965">        "Desktop": (10, 2, (9, 0), (), "Desktop", '{F88352F1-5027-41CF-861B-3D7FE6D40CCD}'),<br id="yui_3_16_0_ym19_1_1461029038584_6966">        "EventLevel": (110, 2, (3, 0), (), "EventLevel", None),<br id="yui_3_16_0_ym19_1_1461029038584_6967">        "FocusRestored": (106, 2, (11, 0), (), "FocusRestored", None),<br id="yui_3_16_0_ym19_1_1461029038584_6968">        "FontHeight": (83, 2, (3, 0), (), "FontHeight", None),<br id="yui_3_16_0_ym19_1_1461029038584_6969">        "FontName": (82, 2, (8, 0), (), "FontName", None),<br id="yui_3_16_0_ym19_1_1461029038584_6970">        # Method 'Forms' returns object of type 'IForms'<br id="yui_3_16_0_ym19_1_1461029038584_6971">        "Forms": (1, 2, (9, 0), (), "Forms", '{02B99871-8ACD-446E-A24F-7645E7DF4B70}'),<br id="yui_3_16_0_ym19_1_1461029038584_6972">        "IsHostedEnvironment": (107, 2, (11, 0), (), "IsHostedEnvironment", None),<br id="yui_3_16_0_ym19_1_1461029038584_6973">        "Language": (21, 2, (3, 0), (), "Language", None),<br id="yui_3_16_0_ym19_1_1461029038584_6974">        # Method 'Menus' returns object of type 'IMenus'<br id="yui_3_16_0_ym19_1_1461029038584_6975">        "Menus": (2, 2, (9, 0), (), "Menus", '{BD3E79E3-F688-47D6-9030-5714F3079FA0}'),<br id="yui_3_16_0_ym19_1_1461029038584_6976">        "MetadataAutoRefresh": (66, 2, (11, 0), (), "MetadataAutoRefresh", None),<br id="yui_3_16_0_ym19_1_1461029038584_6977">        # Method 'ResourceData' returns object of type 'IResourceData'<br id="yui_3_16_0_ym19_1_1461029038584_6978">        "ResourceData": (67, 2, (9, 0), (), "ResourceData", '{3C771B45-1C75-4AE7-B88E-D2D102D445BE}'),<br id="yui_3_16_0_ym19_1_1461029038584_6979">        "SkinStyle": (68, 2, (3, 0), (), "SkinStyle", None),<br id="yui_3_16_0_ym19_1_1461029038584_6980">        # Method 'StatusBar' returns object of type 'IStatusBar'<br id="yui_3_16_0_ym19_1_1461029038584_6981">        "StatusBar": (64, 2, (9, 0), (), "StatusBar", '{C1DC17AD-B039-4E27-87C2-84F7EC82313F}'),<br id="yui_3_16_0_ym19_1_1461029038584_6982">        "XSEngineBaseURL": (111, 2, (8, 0), (), "XSEngineBaseURL", None),<br id="yui_3_16_0_ym19_1_1461029038584_6983">    }<br id="yui_3_16_0_ym19_1_1461029038584_6984">    _prop_map_put_ = {<br id="yui_3_16_0_ym19_1_1461029038584_6985">        "EventLevel": ((110, LCID, 4, 0),()),<br id="yui_3_16_0_ym19_1_1461029038584_6986">        "FocusRestored": ((106, LCID, 4, 0),()),<br id="yui_3_16_0_ym19_1_1461029038584_6987">        "MetadataAutoRefresh": ((66, LCID, 4, 0),()),<br id="yui_3_16_0_ym19_1_1461029038584_6988">    }<br id="yui_3_16_0_ym19_1_1461029038584_6989">    def __iter__(self):<br id="yui_3_16_0_ym19_1_1461029038584_6990">        "Return a Python iterator for this object"<br id="yui_3_16_0_ym19_1_1461029038584_6991">        try:<br id="yui_3_16_0_ym19_1_1461029038584_6992">            ob = self._oleobj_.InvokeTypes(-4,LCID,3,(13, 10),())<br id="yui_3_16_0_ym19_1_1461029038584_6993">        except pythoncom.error:<br id="yui_3_16_0_ym19_1_1461029038584_6994">            raise TypeError("This object does not support enumeration")<br id="yui_3_16_0_ym19_1_1461029038584_6995">        return win32com.client.util.Iterator(ob, None)<br id="yui_3_16_0_ym19_1_1461029038584_6996"><br id="yui_3_16_0_ym19_1_1461029038584_6997"><br id="yui_3_16_0_ym19_1_1461029038584_6998"># This CoClass is known by the name 'SAPbouiCOM.SboGuiApi.90.0'<br id="yui_3_16_0_ym19_1_1461029038584_6999">class SboGuiApi(CoClassBaseClass): # A CoClass<br id="yui_3_16_0_ym19_1_1461029038584_7000">    # SboGuiApi Class<br id="yui_3_16_0_ym19_1_1461029038584_7001">    CLSID = IID('{6CF0D1E0-470B-4684-B9B5-70F9A5ACBB06}')<br id="yui_3_16_0_ym19_1_1461029038584_7002">    coclass_sources = [<br id="yui_3_16_0_ym19_1_1461029038584_7003">    ]<br id="yui_3_16_0_ym19_1_1461029038584_7004">    coclass_interfaces = [<br id="yui_3_16_0_ym19_1_1461029038584_7005">        ISboGuiApi,<br id="yui_3_16_0_ym19_1_1461029038584_7006">    ]<br id="yui_3_16_0_ym19_1_1461029038584_7007">    default_interface = ISboGuiApi<br id="yui_3_16_0_ym19_1_1461029038584_7008"><br id="yui_3_16_0_ym19_1_1461029038584_7009"><br id="yui_3_16_0_ym19_1_1461029038584_7010">To get the UI going:<br id="yui_3_16_0_ym19_1_1461029038584_7011"><br id="yui_3_16_0_ym19_1_1461029038584_7012">from win32com.client import Dispatch<br id="yui_3_16_0_ym19_1_1461029038584_7013">ui = Dispatch("SAPbouiCOM.SboGuiApi")<br id="yui_3_16_0_ym19_1_1461029038584_7014">ui.AddonIdentifier = "..."<br id="yui_3_16_0_ym19_1_1461029038584_7015">conn = ui.Connect("...")<br id="yui_3_16_0_ym19_1_1461029038584_7016">app = ui.GetApplication()<br id="yui_3_16_0_ym19_1_1461029038584_7017"># functions like create msg boxes, windows, grids, etc. work fine<br id="yui_3_16_0_ym19_1_1461029038584_7018"><br id="yui_3_16_0_ym19_1_1461029038584_7019"><br id="yui_3_16_0_ym19_1_1461029038584_7020">A sample program in C#:<br id="yui_3_16_0_ym19_1_1461029038584_7021"><br id="yui_3_16_0_ym19_1_1461029038584_7022">// ****************************************************************************<br id="yui_3_16_0_ym19_1_1461029038584_7023">//  BEFORE STARTING:<br id="yui_3_16_0_ym19_1_1461029038584_7024">//  1. Add reference to the "SAP Business One UI API"<br id="yui_3_16_0_ym19_1_1461029038584_7025">//  2. Insert the development connection string to the "Command line argument"<br id="yui_3_16_0_ym19_1_1461029038584_7026">// -----------------------------------------------------------------<br id="yui_3_16_0_ym19_1_1461029038584_7027">//  1.<br id="yui_3_16_0_ym19_1_1461029038584_7028">//     a. Project->Add Reference...<br id="yui_3_16_0_ym19_1_1461029038584_7029">//     b. select the "SAP Business One UI API 2007" From the COM folder<br id="yui_3_16_0_ym19_1_1461029038584_7030">//<br id="yui_3_16_0_ym19_1_1461029038584_7031">//  2.<br id="yui_3_16_0_ym19_1_1461029038584_7032">//      a. Project->Properties...<br id="yui_3_16_0_ym19_1_1461029038584_7033">//      b. choose Configuration Properties folder (place the arrow on Debugging)<br id="yui_3_16_0_ym19_1_1461029038584_7034">//      c. place the connection string in the 'Command line arguments' field<br id="yui_3_16_0_ym19_1_1461029038584_7035">//<br id="yui_3_16_0_ym19_1_1461029038584_7036">// **************************************************************************************************<br id="yui_3_16_0_ym19_1_1461029038584_7037"><br id="yui_3_16_0_ym19_1_1461029038584_7038"><br id="yui_3_16_0_ym19_1_1461029038584_7039">using Microsoft.VisualBasic;<br id="yui_3_16_0_ym19_1_1461029038584_7040">using System;<br id="yui_3_16_0_ym19_1_1461029038584_7041">namespace FilterEvents {<br id="yui_3_16_0_ym19_1_1461029038584_7042">    public class EventFilter  {<br id="yui_3_16_0_ym19_1_1461029038584_7043">        private SAPbouiCOM.Application SBO_Application;<br id="yui_3_16_0_ym19_1_1461029038584_7044"><br id="yui_3_16_0_ym19_1_1461029038584_7045">        //**********************************************************<br id="yui_3_16_0_ym19_1_1461029038584_7046">        // declaring an Event filters container object and an<br id="yui_3_16_0_ym19_1_1461029038584_7047">        // event filter object<br id="yui_3_16_0_ym19_1_1461029038584_7048">        //**********************************************************<br id="yui_3_16_0_ym19_1_1461029038584_7049"><br id="yui_3_16_0_ym19_1_1461029038584_7050">        public SAPbouiCOM.EventFilters oFilters;<br id="yui_3_16_0_ym19_1_1461029038584_7051"><br id="yui_3_16_0_ym19_1_1461029038584_7052">        public SAPbouiCOM.EventFilter oFilter;<br id="yui_3_16_0_ym19_1_1461029038584_7053"><br id="yui_3_16_0_ym19_1_1461029038584_7054"><br id="yui_3_16_0_ym19_1_1461029038584_7055">        private void SetApplication() {<br id="yui_3_16_0_ym19_1_1461029038584_7056"><br id="yui_3_16_0_ym19_1_1461029038584_7057">            // *******************************************************************<br id="yui_3_16_0_ym19_1_1461029038584_7058">            // Use an SboGuiApi object to establish connection<br id="yui_3_16_0_ym19_1_1461029038584_7059">            // with the SAP Business One application and return an<br id="yui_3_16_0_ym19_1_1461029038584_7060">            // initialized appliction object<br id="yui_3_16_0_ym19_1_1461029038584_7061">            // *******************************************************************<br id="yui_3_16_0_ym19_1_1461029038584_7062"><br id="yui_3_16_0_ym19_1_1461029038584_7063">            SAPbouiCOM.SboGuiApi SboGuiApi = null;<br id="yui_3_16_0_ym19_1_1461029038584_7064">            string sConnectionString = null;<br id="yui_3_16_0_ym19_1_1461029038584_7065"><br id="yui_3_16_0_ym19_1_1461029038584_7066">            SboGuiApi = new SAPbouiCOM.SboGuiApi();<br id="yui_3_16_0_ym19_1_1461029038584_7067"><br id="yui_3_16_0_ym19_1_1461029038584_7068">            // by following the steped specified above the following<br id="yui_3_16_0_ym19_1_1461029038584_7069">            // statment should be suficient for either development or run mode<br id="yui_3_16_0_ym19_1_1461029038584_7070"><br id="yui_3_16_0_ym19_1_1461029038584_7071">            sConnectionString = Interaction.Command();<br id="yui_3_16_0_ym19_1_1461029038584_7072"><br id="yui_3_16_0_ym19_1_1461029038584_7073">            // connect to a running SBO Application<br id="yui_3_16_0_ym19_1_1461029038584_7074"><br id="yui_3_16_0_ym19_1_1461029038584_7075">            SboGuiApi.Connect( sConnectionString );<br id="yui_3_16_0_ym19_1_1461029038584_7076"><br id="yui_3_16_0_ym19_1_1461029038584_7077">            // get an initialized application object<br id="yui_3_16_0_ym19_1_1461029038584_7078"><br id="yui_3_16_0_ym19_1_1461029038584_7079">            SBO_Application = SboGuiApi.GetApplication( -1 );<br id="yui_3_16_0_ym19_1_1461029038584_7080"><br id="yui_3_16_0_ym19_1_1461029038584_7081">        }<br id="yui_3_16_0_ym19_1_1461029038584_7082"><br id="yui_3_16_0_ym19_1_1461029038584_7083"><br id="yui_3_16_0_ym19_1_1461029038584_7084">        private void SetFilters() {<br id="yui_3_16_0_ym19_1_1461029038584_7085"><br id="yui_3_16_0_ym19_1_1461029038584_7086">            // Create a new EventFilters object<br id="yui_3_16_0_ym19_1_1461029038584_7087">            oFilters = new SAPbouiCOM.EventFilters();<br id="yui_3_16_0_ym19_1_1461029038584_7088"><br id="yui_3_16_0_ym19_1_1461029038584_7089">            // add an event type to the container<br id="yui_3_16_0_ym19_1_1461029038584_7090">            // this method returns an EventFilter object<br id="yui_3_16_0_ym19_1_1461029038584_7091">            oFilter = oFilters.Add( SAPbouiCOM.BoEventTypes.et_CLICK );<br id="yui_3_16_0_ym19_1_1461029038584_7092"><br id="yui_3_16_0_ym19_1_1461029038584_7093">            // assign the form type on which the event would be processed<br id="yui_3_16_0_ym19_1_1461029038584_7094">            oFilter.AddEx( "139" ); // Orders Form<br id="yui_3_16_0_ym19_1_1461029038584_7095">            oFilter.AddEx( "142" ); // Purchase Form<br id="yui_3_16_0_ym19_1_1461029038584_7096"><br id="yui_3_16_0_ym19_1_1461029038584_7097">            oFilter = oFilters.Add( SAPbouiCOM.BoEventTypes.et_KEY_DOWN );<br id="yui_3_16_0_ym19_1_1461029038584_7098"><br id="yui_3_16_0_ym19_1_1461029038584_7099">            // assign the form type on which the event would be processed<br id="yui_3_16_0_ym19_1_1461029038584_7100">            oFilter.Add( 139 ); // Orders Form<br id="yui_3_16_0_ym19_1_1461029038584_7101"><br id="yui_3_16_0_ym19_1_1461029038584_7102">            // For a list of all form types see the help or use the<br id="yui_3_16_0_ym19_1_1461029038584_7103">            // Tools -> User Tools -> Display Debug Information option<br id="yui_3_16_0_ym19_1_1461029038584_7104">            // in the SBO application<br id="yui_3_16_0_ym19_1_1461029038584_7105">            // then open the desired form and hover over it with the mouse<br id="yui_3_16_0_ym19_1_1461029038584_7106">            // the form's type will apear in the lower left side of the screen<br id="yui_3_16_0_ym19_1_1461029038584_7107"><br id="yui_3_16_0_ym19_1_1461029038584_7108"><br id="yui_3_16_0_ym19_1_1461029038584_7109">            // Setting the application with the EventFilters object<br id="yui_3_16_0_ym19_1_1461029038584_7110">            // in this case we will process a click event for form types 142 and 139<br id="yui_3_16_0_ym19_1_1461029038584_7111">            // and we will process a key down event for for form type 139<br id="yui_3_16_0_ym19_1_1461029038584_7112"><br id="yui_3_16_0_ym19_1_1461029038584_7113">            SBO_Application.SetFilter( oFilters );<br id="yui_3_16_0_ym19_1_1461029038584_7114"><br id="yui_3_16_0_ym19_1_1461029038584_7115">        }<br id="yui_3_16_0_ym19_1_1461029038584_7116"><br id="yui_3_16_0_ym19_1_1461029038584_7117">        public EventFilter() {<br id="yui_3_16_0_ym19_1_1461029038584_7118"><br id="yui_3_16_0_ym19_1_1461029038584_7119">            //*************************************************************<br id="yui_3_16_0_ym19_1_1461029038584_7120">            // set SBO_Application with an initialized application object<br id="yui_3_16_0_ym19_1_1461029038584_7121">            //*************************************************************<br id="yui_3_16_0_ym19_1_1461029038584_7122">            SetApplication();<br id="yui_3_16_0_ym19_1_1461029038584_7123"><br id="yui_3_16_0_ym19_1_1461029038584_7124">            //*************************************************************<br id="yui_3_16_0_ym19_1_1461029038584_7125">            // set SBO_Application with an initialized EventFilters object<br id="yui_3_16_0_ym19_1_1461029038584_7126">            //*************************************************************<br id="yui_3_16_0_ym19_1_1461029038584_7127"><br id="yui_3_16_0_ym19_1_1461029038584_7128">            SetFilters();<br id="yui_3_16_0_ym19_1_1461029038584_7129"><br id="yui_3_16_0_ym19_1_1461029038584_7130">            // events handled by SBO_Application_AppEvent<br id="yui_3_16_0_ym19_1_1461029038584_7131">            SBO_Application.AppEvent += new SAPbouiCOM._IApplicationEvents_AppEventEventHandler( SBO_Application_AppEvent );<br id="yui_3_16_0_ym19_1_1461029038584_7132">            // events handled by SBO_Application_MenuEvent<br id="yui_3_16_0_ym19_1_1461029038584_7133">            SBO_Application.MenuEvent += new SAPbouiCOM._IApplicationEvents_MenuEventEventHandler( SBO_Application_MenuEvent );<br id="yui_3_16_0_ym19_1_1461029038584_7134">            // events handled by SBO_Application_ItemEvent<br id="yui_3_16_0_ym19_1_1461029038584_7135">            SBO_Application.ItemEvent += new SAPbouiCOM._IApplicationEvents_ItemEventEventHandler( SBO_Application_ItemEvent );<br id="yui_3_16_0_ym19_1_1461029038584_7136">        }<br id="yui_3_16_0_ym19_1_1461029038584_7137"><br id="yui_3_16_0_ym19_1_1461029038584_7138">        private void SBO_Application_AppEvent( SAPbouiCOM.BoAppEventTypes EventType ) {<br id="yui_3_16_0_ym19_1_1461029038584_7139"><br id="yui_3_16_0_ym19_1_1461029038584_7140">            //********************************************************************************<br id="yui_3_16_0_ym19_1_1461029038584_7141">            // the following are the events sent by the application<br id="yui_3_16_0_ym19_1_1461029038584_7142">            // (Ignore aet_ServerTermination)<br id="yui_3_16_0_ym19_1_1461029038584_7143">            // in order to implement your own code upon each of the events<br id="yui_3_16_0_ym19_1_1461029038584_7144">            // place you code instead of the matching message box statement<br id="yui_3_16_0_ym19_1_1461029038584_7145">            //********************************************************************************<br id="yui_3_16_0_ym19_1_1461029038584_7146"><br id="yui_3_16_0_ym19_1_1461029038584_7147"><br id="yui_3_16_0_ym19_1_1461029038584_7148">            switch ( EventType ) {<br id="yui_3_16_0_ym19_1_1461029038584_7149">                case SAPbouiCOM.BoAppEventTypes.aet_ShutDown:<br id="yui_3_16_0_ym19_1_1461029038584_7150"><br id="yui_3_16_0_ym19_1_1461029038584_7151">                    SBO_Application.MessageBox( "A Shut Down Event has been caught" + Constants.vbNewLine + "Terminating Add On...", 1, "Ok", "", "" );<br id="yui_3_16_0_ym19_1_1461029038584_7152"><br id="yui_3_16_0_ym19_1_1461029038584_7153">                    //**************************************************************<br id="yui_3_16_0_ym19_1_1461029038584_7154">                    //<br id="yui_3_16_0_ym19_1_1461029038584_7155">                    // Take care of terminating your AddOn application<br id="yui_3_16_0_ym19_1_1461029038584_7156">                    //<br id="yui_3_16_0_ym19_1_1461029038584_7157">                    //**************************************************************<br id="yui_3_16_0_ym19_1_1461029038584_7158"><br id="yui_3_16_0_ym19_1_1461029038584_7159">                    System.Environment.Exit( 0 );<br id="yui_3_16_0_ym19_1_1461029038584_7160"><br id="yui_3_16_0_ym19_1_1461029038584_7161"><br id="yui_3_16_0_ym19_1_1461029038584_7162"><br id="yui_3_16_0_ym19_1_1461029038584_7163">                    break;<br id="yui_3_16_0_ym19_1_1461029038584_7164">                case SAPbouiCOM.BoAppEventTypes.aet_CompanyChanged:<br id="yui_3_16_0_ym19_1_1461029038584_7165"><br id="yui_3_16_0_ym19_1_1461029038584_7166">                    SBO_Application.MessageBox( "A Company Change Event has been caught", 1, "Ok", "", "" );<br id="yui_3_16_0_ym19_1_1461029038584_7167"><br id="yui_3_16_0_ym19_1_1461029038584_7168">                    //**************************************************************<br id="yui_3_16_0_ym19_1_1461029038584_7169">                    // Check the new company name, if your add on was not meant for<br id="yui_3_16_0_ym19_1_1461029038584_7170">                    // the new company terminate your AddOn<br id="yui_3_16_0_ym19_1_1461029038584_7171">                    //    If SBO_Application.Company.Name Is Not "Company1" then<br id="yui_3_16_0_ym19_1_1461029038584_7172">                    //         Close<br id="yui_3_16_0_ym19_1_1461029038584_7173">                    //    End If<br id="yui_3_16_0_ym19_1_1461029038584_7174">                    //**************************************************************<br id="yui_3_16_0_ym19_1_1461029038584_7175"><br id="yui_3_16_0_ym19_1_1461029038584_7176">                    break;<br id="yui_3_16_0_ym19_1_1461029038584_7177">                case SAPbouiCOM.BoAppEventTypes.aet_LanguageChanged:<br id="yui_3_16_0_ym19_1_1461029038584_7178"><br id="yui_3_16_0_ym19_1_1461029038584_7179">                    SBO_Application.MessageBox( "A Languge Change Event has been caught", 1, "Ok", "", "" );<br id="yui_3_16_0_ym19_1_1461029038584_7180"><br id="yui_3_16_0_ym19_1_1461029038584_7181">                    //**************************************************************<br id="yui_3_16_0_ym19_1_1461029038584_7182">                    // Check the new language name, if your AddOn's items needs<br id="yui_3_16_0_ym19_1_1461029038584_7183">                    // to be changed, take care of it at this point<br id="yui_3_16_0_ym19_1_1461029038584_7184">                    //<br id="yui_3_16_0_ym19_1_1461029038584_7185">                    //    Select Case SBO_Application.Language<br id="yui_3_16_0_ym19_1_1461029038584_7186">                    //         Case ln_English:<br id="yui_3_16_0_ym19_1_1461029038584_7187">                    //         Case ln_French:<br id="yui_3_16_0_ym19_1_1461029038584_7188">                    //         Case ln_German:<br id="yui_3_16_0_ym19_1_1461029038584_7189">                    //    End Select<br id="yui_3_16_0_ym19_1_1461029038584_7190">                    //**************************************************************<br id="yui_3_16_0_ym19_1_1461029038584_7191"><br id="yui_3_16_0_ym19_1_1461029038584_7192">                    break;<br id="yui_3_16_0_ym19_1_1461029038584_7193">            }<br id="yui_3_16_0_ym19_1_1461029038584_7194"><br id="yui_3_16_0_ym19_1_1461029038584_7195"><br id="yui_3_16_0_ym19_1_1461029038584_7196">        }<br id="yui_3_16_0_ym19_1_1461029038584_7197"><br id="yui_3_16_0_ym19_1_1461029038584_7198"><br id="yui_3_16_0_ym19_1_1461029038584_7199"><br id="yui_3_16_0_ym19_1_1461029038584_7200">        private void SBO_Application_MenuEvent( ref SAPbouiCOM.MenuEvent pVal, out bool BubbleEvent ) {<br id="yui_3_16_0_ym19_1_1461029038584_7201">            BubbleEvent = true;<br id="yui_3_16_0_ym19_1_1461029038584_7202">            //********************************************************************************<br id="yui_3_16_0_ym19_1_1461029038584_7203">            // in order to activate your own forms instead of SAP Business One system forms<br id="yui_3_16_0_ym19_1_1461029038584_7204">            // process the menu event by your self<br id="yui_3_16_0_ym19_1_1461029038584_7205">            // change BubbleEvent to True so that SAP Business One won't process it<br id="yui_3_16_0_ym19_1_1461029038584_7206">            //********************************************************************************<br id="yui_3_16_0_ym19_1_1461029038584_7207"><br id="yui_3_16_0_ym19_1_1461029038584_7208">            if ( pVal.BeforeAction == true ) {<br id="yui_3_16_0_ym19_1_1461029038584_7209"><br id="yui_3_16_0_ym19_1_1461029038584_7210">                SBO_Application.SetStatusBarMessage( "Menu item: " + pVal.MenuUID + " sent an event BEFORE SAP Business One processes it.", SAPbouiCOM.BoMessageTime.bmt_Long, true );<br id="yui_3_16_0_ym19_1_1461029038584_7211"><br id="yui_3_16_0_ym19_1_1461029038584_7212">                // to stop SAP Business One from processing this event<br id="yui_3_16_0_ym19_1_1461029038584_7213">                // unmark the following statement<br id="yui_3_16_0_ym19_1_1461029038584_7214"><br id="yui_3_16_0_ym19_1_1461029038584_7215">                // BubbleEvent = True<br id="yui_3_16_0_ym19_1_1461029038584_7216"><br id="yui_3_16_0_ym19_1_1461029038584_7217">            }<br id="yui_3_16_0_ym19_1_1461029038584_7218">            else {<br id="yui_3_16_0_ym19_1_1461029038584_7219"><br id="yui_3_16_0_ym19_1_1461029038584_7220">                SBO_Application.SetStatusBarMessage( "Menu item: " + pVal.MenuUID + " sent an event AFTER SAP Business One processes it.", SAPbouiCOM.BoMessageTime.bmt_Long, true );<br id="yui_3_16_0_ym19_1_1461029038584_7221"><br id="yui_3_16_0_ym19_1_1461029038584_7222">            }<br id="yui_3_16_0_ym19_1_1461029038584_7223"><br id="yui_3_16_0_ym19_1_1461029038584_7224">        }<br id="yui_3_16_0_ym19_1_1461029038584_7225"><br id="yui_3_16_0_ym19_1_1461029038584_7226"><br id="yui_3_16_0_ym19_1_1461029038584_7227">        private void SBO_Application_ItemEvent( string FormUID, ref SAPbouiCOM.ItemEvent pVal, out bool BubbleEvent ) {<br id="yui_3_16_0_ym19_1_1461029038584_7228"><br id="yui_3_16_0_ym19_1_1461029038584_7229">            BubbleEvent = true;<br id="yui_3_16_0_ym19_1_1461029038584_7230">            //**************************************************************************<br id="yui_3_16_0_ym19_1_1461029038584_7231">            // BubbleEvent sets the behavior of SAP Business One.<br id="yui_3_16_0_ym19_1_1461029038584_7232">            // False means that the application will not continue processing this event<br id="yui_3_16_0_ym19_1_1461029038584_7233">            // True is the default value<br id="yui_3_16_0_ym19_1_1461029038584_7234">            //**************************************************************************<br id="yui_3_16_0_ym19_1_1461029038584_7235"><br id="yui_3_16_0_ym19_1_1461029038584_7236">            if ( pVal.FormType != 0 & pVal.Before_Action == true ) {<br id="yui_3_16_0_ym19_1_1461029038584_7237"><br id="yui_3_16_0_ym19_1_1461029038584_7238">                //************************************************************<br id="yui_3_16_0_ym19_1_1461029038584_7239">                // the message box form type is 0<br id="yui_3_16_0_ym19_1_1461029038584_7240">                // I chose not to deal with events triggered by a message box<br id="yui_3_16_0_ym19_1_1461029038584_7241">                //************************************************************<br id="yui_3_16_0_ym19_1_1461029038584_7242"><br id="yui_3_16_0_ym19_1_1461029038584_7243">                switch ( pVal.EventType ) {<br id="yui_3_16_0_ym19_1_1461029038584_7244">                    case SAPbouiCOM.BoEventTypes.et_ITEM_PRESSED:<br id="yui_3_16_0_ym19_1_1461029038584_7245"><br id="yui_3_16_0_ym19_1_1461029038584_7246">                        // Specifies a button release (After exit).<br id="yui_3_16_0_ym19_1_1461029038584_7247"><br id="yui_3_16_0_ym19_1_1461029038584_7248">                        SBO_Application.MessageBox( "An et_ITEM_PRESSED has been sent by a form with the unique ID: " + FormUID, 1, "Ok", "", "" );<br id="yui_3_16_0_ym19_1_1461029038584_7249"><br id="yui_3_16_0_ym19_1_1461029038584_7250">                        break;<br id="yui_3_16_0_ym19_1_1461029038584_7251">                    case SAPbouiCOM.BoEventTypes.et_KEY_DOWN:<br id="yui_3_16_0_ym19_1_1461029038584_7252"><br id="yui_3_16_0_ym19_1_1461029038584_7253">                        // Specifies a key down event.<br id="yui_3_16_0_ym19_1_1461029038584_7254"><br id="yui_3_16_0_ym19_1_1461029038584_7255">                        SBO_Application.MessageBox( "An et_KEY_DOWN has been sent by a form with the unique ID: " + FormUID, 1, "Ok", "", "" );<br id="yui_3_16_0_ym19_1_1461029038584_7256"><br id="yui_3_16_0_ym19_1_1461029038584_7257">                        break;<br id="yui_3_16_0_ym19_1_1461029038584_7258">                    case SAPbouiCOM.BoEventTypes.et_GOT_FOCUS:<br id="yui_3_16_0_ym19_1_1461029038584_7259"><br id="yui_3_16_0_ym19_1_1461029038584_7260">                        // Specifies an item got focus.<br id="yui_3_16_0_ym19_1_1461029038584_7261"><br id="yui_3_16_0_ym19_1_1461029038584_7262">                        SBO_Application.MessageBox( "An et_GOT_FOCUS has been sent by a form with the unique ID: " + FormUID, 1, "Ok", "", "" );<br id="yui_3_16_0_ym19_1_1461029038584_7263"><br id="yui_3_16_0_ym19_1_1461029038584_7264">                        break;<br id="yui_3_16_0_ym19_1_1461029038584_7265">                    case SAPbouiCOM.BoEventTypes.et_LOST_FOCUS:<br id="yui_3_16_0_ym19_1_1461029038584_7266"><br id="yui_3_16_0_ym19_1_1461029038584_7267">                        // Specifies an item lost focus.<br id="yui_3_16_0_ym19_1_1461029038584_7268"><br id="yui_3_16_0_ym19_1_1461029038584_7269">                        SBO_Application.MessageBox( "An et_LOST_FOCUS has been sent by a form with the unique ID: " + FormUID, 1, "Ok", "", "" );<br id="yui_3_16_0_ym19_1_1461029038584_7270"><br id="yui_3_16_0_ym19_1_1461029038584_7271">                        break;<br id="yui_3_16_0_ym19_1_1461029038584_7272">                    case SAPbouiCOM.BoEventTypes.et_COMBO_SELECT:<br id="yui_3_16_0_ym19_1_1461029038584_7273"><br id="yui_3_16_0_ym19_1_1461029038584_7274">                        // Specifies the selection of valid value in Combo Box.<br id="yui_3_16_0_ym19_1_1461029038584_7275"><br id="yui_3_16_0_ym19_1_1461029038584_7276">                        SBO_Application.MessageBox( "An et_COMBO_SELECT has been sent by a form with the unique ID: " + FormUID, 1, "Ok", "", "" );<br id="yui_3_16_0_ym19_1_1461029038584_7277"><br id="yui_3_16_0_ym19_1_1461029038584_7278">                        break;<br id="yui_3_16_0_ym19_1_1461029038584_7279">                    case SAPbouiCOM.BoEventTypes.et_CLICK:<br id="yui_3_16_0_ym19_1_1461029038584_7280">                        // Specifies Mouse Up on editable item.<br id="yui_3_16_0_ym19_1_1461029038584_7281"><br id="yui_3_16_0_ym19_1_1461029038584_7282">                        SBO_Application.MessageBox( "An et_CLICK has been sent by a form with the unique ID: " + FormUID, 1, "Ok", "", "" );<br id="yui_3_16_0_ym19_1_1461029038584_7283"><br id="yui_3_16_0_ym19_1_1461029038584_7284">                        break;<br id="yui_3_16_0_ym19_1_1461029038584_7285">                    case SAPbouiCOM.BoEventTypes.et_DOUBLE_CLICK:<br id="yui_3_16_0_ym19_1_1461029038584_7286">                        // Specifies Mouse Up on editable item in time interval define by<br id="yui_3_16_0_ym19_1_1461029038584_7287">                        // SAP Business One as double-click.<br id="yui_3_16_0_ym19_1_1461029038584_7288"><br id="yui_3_16_0_ym19_1_1461029038584_7289">                        SBO_Application.MessageBox( "An et_DOUBLE_CLICK has been sent by a form with the unique ID: " + FormUID, 1, "Ok", "", "" );<br id="yui_3_16_0_ym19_1_1461029038584_7290"><br id="yui_3_16_0_ym19_1_1461029038584_7291">                        break;<br id="yui_3_16_0_ym19_1_1461029038584_7292">                    case SAPbouiCOM.BoEventTypes.et_MATRIX_LINK_PRESSED:<br id="yui_3_16_0_ym19_1_1461029038584_7293">                        // Specifies a link arrow within a matrix was pressed.<br id="yui_3_16_0_ym19_1_1461029038584_7294"><br id="yui_3_16_0_ym19_1_1461029038584_7295">                        SBO_Application.MessageBox( "An et_MATRIX_LINK_PRESSED has been sent by a form with the unique ID: " + FormUID, 1, "Ok", "", "" );<br id="yui_3_16_0_ym19_1_1461029038584_7296"><br id="yui_3_16_0_ym19_1_1461029038584_7297">                        break;<br id="yui_3_16_0_ym19_1_1461029038584_7298">                    case SAPbouiCOM.BoEventTypes.et_MATRIX_COLLAPSE_PRESSED:<br id="yui_3_16_0_ym19_1_1461029038584_7299">                        // Specifies collapsed or expanded list within a matrix.<br id="yui_3_16_0_ym19_1_1461029038584_7300"><br id="yui_3_16_0_ym19_1_1461029038584_7301">                        SBO_Application.MessageBox( "An et_MATRIX_COLLAPSE_PRESSED has been sent by a form with the unique ID: " + FormUID, 1, "Ok", "", "" );<br id="yui_3_16_0_ym19_1_1461029038584_7302"><br id="yui_3_16_0_ym19_1_1461029038584_7303">                        break;<br id="yui_3_16_0_ym19_1_1461029038584_7304">                    case SAPbouiCOM.BoEventTypes.et_VALIDATE:<br id="yui_3_16_0_ym19_1_1461029038584_7305">                        //Specifies an item validation event.<br id="yui_3_16_0_ym19_1_1461029038584_7306"><br id="yui_3_16_0_ym19_1_1461029038584_7307">                        SBO_Application.MessageBox( "An et_VALIDATE has been sent by a form with the unique ID: " + FormUID, 1, "Ok", "", "" );<br id="yui_3_16_0_ym19_1_1461029038584_7308"><br id="yui_3_16_0_ym19_1_1461029038584_7309">                        break;<br id="yui_3_16_0_ym19_1_1461029038584_7310">                    case SAPbouiCOM.BoEventTypes.et_FORM_LOAD:<br id="yui_3_16_0_ym19_1_1461029038584_7311">                        // Specifies that SAP Business One application opened a form.<br id="yui_3_16_0_ym19_1_1461029038584_7312"><br id="yui_3_16_0_ym19_1_1461029038584_7313">                        SBO_Application.MessageBox( "An et_FORM_LOAD has been sent by a form with the unique ID: " + FormUID, 1, "Ok", "", "" );<br id="yui_3_16_0_ym19_1_1461029038584_7314"><br id="yui_3_16_0_ym19_1_1461029038584_7315">                        break;<br id="yui_3_16_0_ym19_1_1461029038584_7316">                    case SAPbouiCOM.BoEventTypes.et_FORM_UNLOAD:<br id="yui_3_16_0_ym19_1_1461029038584_7317">                        // Specifies that SAP Business One application closed a form.<br id="yui_3_16_0_ym19_1_1461029038584_7318"><br id="yui_3_16_0_ym19_1_1461029038584_7319">                        SBO_Application.MessageBox( "An et_FORM_UNLOAD has been sent by a form with the unique ID: " + FormUID, 1, "Ok", "", "" );<br id="yui_3_16_0_ym19_1_1461029038584_7320"><br id="yui_3_16_0_ym19_1_1461029038584_7321">                        break;<br id="yui_3_16_0_ym19_1_1461029038584_7322">                    case SAPbouiCOM.BoEventTypes.et_FORM_ACTIVATE:<br id="yui_3_16_0_ym19_1_1461029038584_7323">                        // Specifies that the focus is set on the form.<br id="yui_3_16_0_ym19_1_1461029038584_7324"><br id="yui_3_16_0_ym19_1_1461029038584_7325">                        break;<br id="yui_3_16_0_ym19_1_1461029038584_7326">                    case SAPbouiCOM.BoEventTypes.et_FORM_DEACTIVATE:<br id="yui_3_16_0_ym19_1_1461029038584_7327">                        // Specifies that the form lost focus.<br id="yui_3_16_0_ym19_1_1461029038584_7328"><br id="yui_3_16_0_ym19_1_1461029038584_7329">                        break;<br id="yui_3_16_0_ym19_1_1461029038584_7330">                    case SAPbouiCOM.BoEventTypes.et_FORM_CLOSE:<br id="yui_3_16_0_ym19_1_1461029038584_7331">                        // Specifies that the form was closed by calling the Close event.<br id="yui_3_16_0_ym19_1_1461029038584_7332"><br id="yui_3_16_0_ym19_1_1461029038584_7333">                        SBO_Application.MessageBox( "An et_FORM_CLOSE has been sent by a form with the unique ID: " + FormUID, 1, "Ok", "", "" );<br id="yui_3_16_0_ym19_1_1461029038584_7334"><br id="yui_3_16_0_ym19_1_1461029038584_7335">                        break;<br id="yui_3_16_0_ym19_1_1461029038584_7336">                    case SAPbouiCOM.BoEventTypes.et_FORM_RESIZE:<br id="yui_3_16_0_ym19_1_1461029038584_7337">                        // Specifies resizing of the form.<br id="yui_3_16_0_ym19_1_1461029038584_7338"><br id="yui_3_16_0_ym19_1_1461029038584_7339">                        SBO_Application.MessageBox( "An et_FORM_RESIZE has been sent by a form with the unique ID: " + FormUID, 1, "Ok", "", "" );<br id="yui_3_16_0_ym19_1_1461029038584_7340"><br id="yui_3_16_0_ym19_1_1461029038584_7341">                        break;<br id="yui_3_16_0_ym19_1_1461029038584_7342">                    case SAPbouiCOM.BoEventTypes.et_FORM_KEY_DOWN:<br id="yui_3_16_0_ym19_1_1461029038584_7343">                        // Specifies a key press on an area which is not item of the form.<br id="yui_3_16_0_ym19_1_1461029038584_7344"><br id="yui_3_16_0_ym19_1_1461029038584_7345">                        SBO_Application.MessageBox( "An et_FORM_KEY_DOWN has been sent by a form with the unique ID: " + FormUID, 1, "Ok", "", "" );<br id="yui_3_16_0_ym19_1_1461029038584_7346"><br id="yui_3_16_0_ym19_1_1461029038584_7347">                        break;<br id="yui_3_16_0_ym19_1_1461029038584_7348">                }<br id="yui_3_16_0_ym19_1_1461029038584_7349">            }<br id="yui_3_16_0_ym19_1_1461029038584_7350">        }<br id="yui_3_16_0_ym19_1_1461029038584_7351">    }<br id="yui_3_16_0_ym19_1_1461029038584_7352">}<br id="yui_3_16_0_ym19_1_1461029038584_7353"><br id="yui_3_16_0_ym19_1_1461029038584_7354"><br id="yui_3_16_0_ym19_1_1461029038584_7355">And the same sample program in Visual Basic:<br id="yui_3_16_0_ym19_1_1461029038584_7356"><br id="yui_3_16_0_ym19_1_1461029038584_7357">'****************************************************************************<br id="yui_3_16_0_ym19_1_1461029038584_7358">' BEFORE STARTING:<br id="yui_3_16_0_ym19_1_1461029038584_7359">' 1. Add reference to the "SAP Business One UI API"<br id="yui_3_16_0_ym19_1_1461029038584_7360">' 2. Insert the development connection string to the "Command line argument"<br id="yui_3_16_0_ym19_1_1461029038584_7361">'-----------------------------------------------------------------<br id="yui_3_16_0_ym19_1_1461029038584_7362">' 1.<br id="yui_3_16_0_ym19_1_1461029038584_7363">'    a. Project->Add Reference...<br id="yui_3_16_0_ym19_1_1461029038584_7364">'    b. select the "SAP Business One UI API 2007" From the COM folder<br id="yui_3_16_0_ym19_1_1461029038584_7365">'<br id="yui_3_16_0_ym19_1_1461029038584_7366">' 2.<br id="yui_3_16_0_ym19_1_1461029038584_7367">'     a. Project->Properties...<br id="yui_3_16_0_ym19_1_1461029038584_7368">'     b. choose Configuration Properties folder (place the arrow on Debugging)<br id="yui_3_16_0_ym19_1_1461029038584_7369">'     c. place the connection string in the 'Command line arguments' field<br id="yui_3_16_0_ym19_1_1461029038584_7370">'<br id="yui_3_16_0_ym19_1_1461029038584_7371">'**************************************************************************************************<br id="yui_3_16_0_ym19_1_1461029038584_7372"><br id="yui_3_16_0_ym19_1_1461029038584_7373">Option Strict Off<br id="yui_3_16_0_ym19_1_1461029038584_7374">Option Explicit On<br id="yui_3_16_0_ym19_1_1461029038584_7375"><br id="yui_3_16_0_ym19_1_1461029038584_7376">Public Class EventFilter<br id="yui_3_16_0_ym19_1_1461029038584_7377">    Private WithEvents SBO_Application As SAPbouiCOM.Application<br id="yui_3_16_0_ym19_1_1461029038584_7378"><br id="yui_3_16_0_ym19_1_1461029038584_7379">    '//**********************************************************<br id="yui_3_16_0_ym19_1_1461029038584_7380">    '// declaring an Event filters container object and an<br id="yui_3_16_0_ym19_1_1461029038584_7381">    '// event filter object<br id="yui_3_16_0_ym19_1_1461029038584_7382">    '//**********************************************************<br id="yui_3_16_0_ym19_1_1461029038584_7383"><br id="yui_3_16_0_ym19_1_1461029038584_7384">    Public oFilters As SAPbouiCOM.EventFilters<br id="yui_3_16_0_ym19_1_1461029038584_7385"><br id="yui_3_16_0_ym19_1_1461029038584_7386">    Public oFilter As SAPbouiCOM.EventFilter<br id="yui_3_16_0_ym19_1_1461029038584_7387"><br id="yui_3_16_0_ym19_1_1461029038584_7388"><br id="yui_3_16_0_ym19_1_1461029038584_7389">    Private Sub SetApplication()<br id="yui_3_16_0_ym19_1_1461029038584_7390"><br id="yui_3_16_0_ym19_1_1461029038584_7391">        '*******************************************************************<br id="yui_3_16_0_ym19_1_1461029038584_7392">        '// Use an SboGuiApi object to establish connection<br id="yui_3_16_0_ym19_1_1461029038584_7393">        '// with the SAP Business One application and return an<br id="yui_3_16_0_ym19_1_1461029038584_7394">        '// initialized appliction object<br id="yui_3_16_0_ym19_1_1461029038584_7395">        '*******************************************************************<br id="yui_3_16_0_ym19_1_1461029038584_7396"><br id="yui_3_16_0_ym19_1_1461029038584_7397">        Dim SboGuiApi As SAPbouiCOM.SboGuiApi<br id="yui_3_16_0_ym19_1_1461029038584_7398">        Dim sConnectionString As String<br id="yui_3_16_0_ym19_1_1461029038584_7399"><br id="yui_3_16_0_ym19_1_1461029038584_7400">        SboGuiApi = New SAPbouiCOM.SboGuiApi()<br id="yui_3_16_0_ym19_1_1461029038584_7401"><br id="yui_3_16_0_ym19_1_1461029038584_7402">        '// by following the steped specified above the following<br id="yui_3_16_0_ym19_1_1461029038584_7403">        '// statment should be suficient for either development or run mode<br id="yui_3_16_0_ym19_1_1461029038584_7404"><br id="yui_3_16_0_ym19_1_1461029038584_7405">        sConnectionString = Command()<br id="yui_3_16_0_ym19_1_1461029038584_7406"><br id="yui_3_16_0_ym19_1_1461029038584_7407">        '// connect to a running SBO Application<br id="yui_3_16_0_ym19_1_1461029038584_7408"><br id="yui_3_16_0_ym19_1_1461029038584_7409">        SboGuiApi.Connect(sConnectionString)<br id="yui_3_16_0_ym19_1_1461029038584_7410"><br id="yui_3_16_0_ym19_1_1461029038584_7411">        '// get an initialized application object<br id="yui_3_16_0_ym19_1_1461029038584_7412"><br id="yui_3_16_0_ym19_1_1461029038584_7413">        SBO_Application = SboGuiApi.GetApplication()<br id="yui_3_16_0_ym19_1_1461029038584_7414"><br id="yui_3_16_0_ym19_1_1461029038584_7415">    End Sub<br id="yui_3_16_0_ym19_1_1461029038584_7416"><br id="yui_3_16_0_ym19_1_1461029038584_7417">    Private Sub SetFilters()<br id="yui_3_16_0_ym19_1_1461029038584_7418"><br id="yui_3_16_0_ym19_1_1461029038584_7419">        '// Create a new EventFilters object<br id="yui_3_16_0_ym19_1_1461029038584_7420">        oFilters = New SAPbouiCOM.EventFilters()<br id="yui_3_16_0_ym19_1_1461029038584_7421"><br id="yui_3_16_0_ym19_1_1461029038584_7422">        '// add an event type to the container<br id="yui_3_16_0_ym19_1_1461029038584_7423">        '// this method returns an EventFilter object<br id="yui_3_16_0_ym19_1_1461029038584_7424">        oFilter = oFilters.Add(SAPbouiCOM.BoEventTypes.et_CLICK)<br id="yui_3_16_0_ym19_1_1461029038584_7425"><br id="yui_3_16_0_ym19_1_1461029038584_7426">        '// assign the form type on which the event would be processed<br id="yui_3_16_0_ym19_1_1461029038584_7427">        oFilter.AddEx("139") 'Orders Form<br id="yui_3_16_0_ym19_1_1461029038584_7428">        oFilter.AddEx("142") 'Purchase Form<br id="yui_3_16_0_ym19_1_1461029038584_7429"><br id="yui_3_16_0_ym19_1_1461029038584_7430">        oFilter = oFilters.Add(SAPbouiCOM.BoEventTypes.et_KEY_DOWN)<br id="yui_3_16_0_ym19_1_1461029038584_7431"><br id="yui_3_16_0_ym19_1_1461029038584_7432">        '// assign the form type on which the event would be processed<br id="yui_3_16_0_ym19_1_1461029038584_7433">        oFilter.Add(139) 'Orders Form<br id="yui_3_16_0_ym19_1_1461029038584_7434"><br id="yui_3_16_0_ym19_1_1461029038584_7435">        '// For a list of all form types see the help or use the<br id="yui_3_16_0_ym19_1_1461029038584_7436">        '// Tools -> User Tools -> Display Debug Information option<br id="yui_3_16_0_ym19_1_1461029038584_7437">        '// in the SBO application<br id="yui_3_16_0_ym19_1_1461029038584_7438">        '// then open the desired form and hover over it with the mouse<br id="yui_3_16_0_ym19_1_1461029038584_7439">        '// the form's type will apear in the lower left side of the screen<br id="yui_3_16_0_ym19_1_1461029038584_7440"><br id="yui_3_16_0_ym19_1_1461029038584_7441"><br id="yui_3_16_0_ym19_1_1461029038584_7442">        '// Setting the application with the EventFilters object<br id="yui_3_16_0_ym19_1_1461029038584_7443">        '// in this case we will process a click event for form types 142 and 139<br id="yui_3_16_0_ym19_1_1461029038584_7444">        '// and we will process a key down event for for form type 139<br id="yui_3_16_0_ym19_1_1461029038584_7445"><br id="yui_3_16_0_ym19_1_1461029038584_7446">        SBO_Application.SetFilter(oFilters)<br id="yui_3_16_0_ym19_1_1461029038584_7447"><br id="yui_3_16_0_ym19_1_1461029038584_7448">    End Sub<br id="yui_3_16_0_ym19_1_1461029038584_7449">    Public Sub New()<br id="yui_3_16_0_ym19_1_1461029038584_7450"><br id="yui_3_16_0_ym19_1_1461029038584_7451">        '//*************************************************************<br id="yui_3_16_0_ym19_1_1461029038584_7452">        '// set SBO_Application with an initialized application object<br id="yui_3_16_0_ym19_1_1461029038584_7453">        '//*************************************************************<br id="yui_3_16_0_ym19_1_1461029038584_7454">        SetApplication()<br id="yui_3_16_0_ym19_1_1461029038584_7455"><br id="yui_3_16_0_ym19_1_1461029038584_7456">        '//*************************************************************<br id="yui_3_16_0_ym19_1_1461029038584_7457">        '// set SBO_Application with an initialized EventFilters object<br id="yui_3_16_0_ym19_1_1461029038584_7458">        '//*************************************************************<br id="yui_3_16_0_ym19_1_1461029038584_7459"><br id="yui_3_16_0_ym19_1_1461029038584_7460">        SetFilters()<br id="yui_3_16_0_ym19_1_1461029038584_7461"><br id="yui_3_16_0_ym19_1_1461029038584_7462">    End Sub<br id="yui_3_16_0_ym19_1_1461029038584_7463"><br id="yui_3_16_0_ym19_1_1461029038584_7464">    Private Sub SBO_Application_AppEvent(ByVal EventType As SAPbouiCOM.BoAppEventTypes) Handles SBO_Application.AppEvent<br id="yui_3_16_0_ym19_1_1461029038584_7465"><br id="yui_3_16_0_ym19_1_1461029038584_7466">        '//********************************************************************************<br id="yui_3_16_0_ym19_1_1461029038584_7467">        '// the following are the events sent by the application<br id="yui_3_16_0_ym19_1_1461029038584_7468">        '// (Ignore aet_ServerTermination)<br id="yui_3_16_0_ym19_1_1461029038584_7469">        '// in order to implement your own code upon each of the events<br id="yui_3_16_0_ym19_1_1461029038584_7470">        '// place you code instead of the matching message box statement<br id="yui_3_16_0_ym19_1_1461029038584_7471">        '//********************************************************************************<br id="yui_3_16_0_ym19_1_1461029038584_7472"><br id="yui_3_16_0_ym19_1_1461029038584_7473"><br id="yui_3_16_0_ym19_1_1461029038584_7474">        Select Case EventType<br id="yui_3_16_0_ym19_1_1461029038584_7475"><br id="yui_3_16_0_ym19_1_1461029038584_7476">            Case SAPbouiCOM.BoAppEventTypes.aet_ShutDown<br id="yui_3_16_0_ym19_1_1461029038584_7477"><br id="yui_3_16_0_ym19_1_1461029038584_7478">                SBO_Application.MessageBox("A Shut Down Event has been caught" _<br id="yui_3_16_0_ym19_1_1461029038584_7479">                    & vbNewLine & "Terminating Add On...")<br id="yui_3_16_0_ym19_1_1461029038584_7480"><br id="yui_3_16_0_ym19_1_1461029038584_7481">                '//**************************************************************<br id="yui_3_16_0_ym19_1_1461029038584_7482">                '//<br id="yui_3_16_0_ym19_1_1461029038584_7483">                '// Take care of terminating your AddOn application<br id="yui_3_16_0_ym19_1_1461029038584_7484">                '//<br id="yui_3_16_0_ym19_1_1461029038584_7485">                '//**************************************************************<br id="yui_3_16_0_ym19_1_1461029038584_7486"><br id="yui_3_16_0_ym19_1_1461029038584_7487">                End<br id="yui_3_16_0_ym19_1_1461029038584_7488"><br id="yui_3_16_0_ym19_1_1461029038584_7489"><br id="yui_3_16_0_ym19_1_1461029038584_7490"><br id="yui_3_16_0_ym19_1_1461029038584_7491">            Case SAPbouiCOM.BoAppEventTypes.aet_CompanyChanged<br id="yui_3_16_0_ym19_1_1461029038584_7492"><br id="yui_3_16_0_ym19_1_1461029038584_7493">                SBO_Application.MessageBox("A Company Change Event has been caught")<br id="yui_3_16_0_ym19_1_1461029038584_7494"><br id="yui_3_16_0_ym19_1_1461029038584_7495">                '//**************************************************************<br id="yui_3_16_0_ym19_1_1461029038584_7496">                '// Check the new company name, if your add on was not meant for<br id="yui_3_16_0_ym19_1_1461029038584_7497">                '// the new company terminate your AddOn<br id="yui_3_16_0_ym19_1_1461029038584_7498">                '//    If SBO_Application.Company.Name Is Not "Company1" then<br id="yui_3_16_0_ym19_1_1461029038584_7499">                '//         Close<br id="yui_3_16_0_ym19_1_1461029038584_7500">                '//    End If<br id="yui_3_16_0_ym19_1_1461029038584_7501">                '//**************************************************************<br id="yui_3_16_0_ym19_1_1461029038584_7502"><br id="yui_3_16_0_ym19_1_1461029038584_7503">            Case SAPbouiCOM.BoAppEventTypes.aet_LanguageChanged<br id="yui_3_16_0_ym19_1_1461029038584_7504"><br id="yui_3_16_0_ym19_1_1461029038584_7505">                SBO_Application.MessageBox("A Languge Change Event has been caught")<br id="yui_3_16_0_ym19_1_1461029038584_7506"><br id="yui_3_16_0_ym19_1_1461029038584_7507">                '//**************************************************************<br id="yui_3_16_0_ym19_1_1461029038584_7508">                '// Check the new language name, if your AddOn's items needs<br id="yui_3_16_0_ym19_1_1461029038584_7509">                '// to be changed, take care of it at this point<br id="yui_3_16_0_ym19_1_1461029038584_7510">                '//<br id="yui_3_16_0_ym19_1_1461029038584_7511">                '//    Select Case SBO_Application.Language<br id="yui_3_16_0_ym19_1_1461029038584_7512">                '//         Case ln_English:<br id="yui_3_16_0_ym19_1_1461029038584_7513">                '//         Case ln_French:<br id="yui_3_16_0_ym19_1_1461029038584_7514">                '//         Case ln_German:<br id="yui_3_16_0_ym19_1_1461029038584_7515">                '//    End Select<br id="yui_3_16_0_ym19_1_1461029038584_7516">                '//**************************************************************<br id="yui_3_16_0_ym19_1_1461029038584_7517"><br id="yui_3_16_0_ym19_1_1461029038584_7518">        End Select<br id="yui_3_16_0_ym19_1_1461029038584_7519"><br id="yui_3_16_0_ym19_1_1461029038584_7520">    End Sub<br id="yui_3_16_0_ym19_1_1461029038584_7521"><br id="yui_3_16_0_ym19_1_1461029038584_7522"><br id="yui_3_16_0_ym19_1_1461029038584_7523">    Private Sub SBO_Application_MenuEvent(ByRef pVal As SAPbouiCOM.MenuEvent, ByRef BubbleEvent As Boolean) Handles SBO_Application.MenuEvent<br id="yui_3_16_0_ym19_1_1461029038584_7524"><br id="yui_3_16_0_ym19_1_1461029038584_7525">        '//********************************************************************************<br id="yui_3_16_0_ym19_1_1461029038584_7526">        '// in order to activate your own forms instead of SAP Business One system forms<br id="yui_3_16_0_ym19_1_1461029038584_7527">        '// process the menu event by your self<br id="yui_3_16_0_ym19_1_1461029038584_7528">        '// change BubbleEvent to True so that SAP Business One won't process it<br id="yui_3_16_0_ym19_1_1461029038584_7529">        '//********************************************************************************<br id="yui_3_16_0_ym19_1_1461029038584_7530"><br id="yui_3_16_0_ym19_1_1461029038584_7531">        If pVal.beforeAction = True Then<br id="yui_3_16_0_ym19_1_1461029038584_7532"><br id="yui_3_16_0_ym19_1_1461029038584_7533">            SBO_Application.SetStatusBarMessage( _<br id="yui_3_16_0_ym19_1_1461029038584_7534">            "Menu item: " + pVal.menuUID + " sent an event BEFORE SAP Business One processes it.", SAPbouiCOM.BoMessageTime.bmt_Long, True)<br id="yui_3_16_0_ym19_1_1461029038584_7535"><br id="yui_3_16_0_ym19_1_1461029038584_7536">            '// to stop SAP Business One from processing this event<br id="yui_3_16_0_ym19_1_1461029038584_7537">            '// unmark the following statement<br id="yui_3_16_0_ym19_1_1461029038584_7538"><br id="yui_3_16_0_ym19_1_1461029038584_7539">            '// BubbleEvent = True<br id="yui_3_16_0_ym19_1_1461029038584_7540"><br id="yui_3_16_0_ym19_1_1461029038584_7541">        Else<br id="yui_3_16_0_ym19_1_1461029038584_7542"><br id="yui_3_16_0_ym19_1_1461029038584_7543">            SBO_Application.SetStatusBarMessage( _<br id="yui_3_16_0_ym19_1_1461029038584_7544">            "Menu item: " & pVal.menuUID & " sent an event AFTER SAP Business One processes it.", SAPbouiCOM.BoMessageTime.bmt_Long, True)<br id="yui_3_16_0_ym19_1_1461029038584_7545"><br id="yui_3_16_0_ym19_1_1461029038584_7546">        End If<br id="yui_3_16_0_ym19_1_1461029038584_7547"><br id="yui_3_16_0_ym19_1_1461029038584_7548">    End Sub<br id="yui_3_16_0_ym19_1_1461029038584_7549"><br id="yui_3_16_0_ym19_1_1461029038584_7550">    Private Sub SBO_Application_ItemEvent(ByVal FormUID As String, ByRef pVal As SAPbouiCOM.ItemEvent, ByRef BubbleEvent As Boolean) Handles SBO_Application.ItemEvent<br id="yui_3_16_0_ym19_1_1461029038584_7551"><br id="yui_3_16_0_ym19_1_1461029038584_7552"><br id="yui_3_16_0_ym19_1_1461029038584_7553">        '//**************************************************************************<br id="yui_3_16_0_ym19_1_1461029038584_7554">        '// BubbleEvent sets the behavior of SAP Business One.<br id="yui_3_16_0_ym19_1_1461029038584_7555">        '// False means that the application will not continue processing this event<br id="yui_3_16_0_ym19_1_1461029038584_7556">        '// True is the default value<br id="yui_3_16_0_ym19_1_1461029038584_7557">        '//**************************************************************************<br id="yui_3_16_0_ym19_1_1461029038584_7558"><br id="yui_3_16_0_ym19_1_1461029038584_7559">        If pVal.formType <> 0 And pVal.Before_Action = True Then<br id="yui_3_16_0_ym19_1_1461029038584_7560"><br id="yui_3_16_0_ym19_1_1461029038584_7561">            '//************************************************************<br id="yui_3_16_0_ym19_1_1461029038584_7562">            '// the message box form type is 0<br id="yui_3_16_0_ym19_1_1461029038584_7563">            '// I chose not to deal with events triggered by a message box<br id="yui_3_16_0_ym19_1_1461029038584_7564">            '//************************************************************<br id="yui_3_16_0_ym19_1_1461029038584_7565"><br id="yui_3_16_0_ym19_1_1461029038584_7566">            Select Case pVal.EventType<br id="yui_3_16_0_ym19_1_1461029038584_7567"><br id="yui_3_16_0_ym19_1_1461029038584_7568">                '//************************************************************<br id="yui_3_16_0_ym19_1_1461029038584_7569">                '// every event will open a message box with the event<br id="yui_3_16_0_ym19_1_1461029038584_7570">                '// name and the form UID how sent it<br id="yui_3_16_0_ym19_1_1461029038584_7571">                '//************************************************************<br id="yui_3_16_0_ym19_1_1461029038584_7572"><br id="yui_3_16_0_ym19_1_1461029038584_7573">            Case SAPbouiCOM.BoEventTypes.et_ITEM_PRESSED<br id="yui_3_16_0_ym19_1_1461029038584_7574"><br id="yui_3_16_0_ym19_1_1461029038584_7575">                    '// Specifies a button release (After exit).<br id="yui_3_16_0_ym19_1_1461029038584_7576"><br id="yui_3_16_0_ym19_1_1461029038584_7577">                    SBO_Application.MessageBox( _<br id="yui_3_16_0_ym19_1_1461029038584_7578">                    "An et_ITEM_PRESSED has been sent by a form with the unique ID: " + FormUID)<br id="yui_3_16_0_ym19_1_1461029038584_7579"><br id="yui_3_16_0_ym19_1_1461029038584_7580">                Case SAPbouiCOM.BoEventTypes.et_KEY_DOWN<br id="yui_3_16_0_ym19_1_1461029038584_7581"><br id="yui_3_16_0_ym19_1_1461029038584_7582">                    '// Specifies a key down event.<br id="yui_3_16_0_ym19_1_1461029038584_7583"><br id="yui_3_16_0_ym19_1_1461029038584_7584">                    SBO_Application.MessageBox( _<br id="yui_3_16_0_ym19_1_1461029038584_7585">                    "An et_KEY_DOWN has been sent by a form with the unique ID: " + FormUID)<br id="yui_3_16_0_ym19_1_1461029038584_7586"><br id="yui_3_16_0_ym19_1_1461029038584_7587">                Case SAPbouiCOM.BoEventTypes.et_GOT_FOCUS<br id="yui_3_16_0_ym19_1_1461029038584_7588"><br id="yui_3_16_0_ym19_1_1461029038584_7589">                    '// Specifies an item got focus.<br id="yui_3_16_0_ym19_1_1461029038584_7590"><br id="yui_3_16_0_ym19_1_1461029038584_7591">                    SBO_Application.MessageBox( _<br id="yui_3_16_0_ym19_1_1461029038584_7592">                    "An et_GOT_FOCUS has been sent by a form with the unique ID: " + FormUID)<br id="yui_3_16_0_ym19_1_1461029038584_7593"><br id="yui_3_16_0_ym19_1_1461029038584_7594">                Case SAPbouiCOM.BoEventTypes.et_LOST_FOCUS<br id="yui_3_16_0_ym19_1_1461029038584_7595"><br id="yui_3_16_0_ym19_1_1461029038584_7596">                    '// Specifies an item lost focus.<br id="yui_3_16_0_ym19_1_1461029038584_7597"><br id="yui_3_16_0_ym19_1_1461029038584_7598">                    SBO_Application.MessageBox( _<br id="yui_3_16_0_ym19_1_1461029038584_7599">                    "An et_LOST_FOCUS has been sent by a form with the unique ID: " + FormUID)<br id="yui_3_16_0_ym19_1_1461029038584_7600"><br id="yui_3_16_0_ym19_1_1461029038584_7601">                Case SAPbouiCOM.BoEventTypes.et_COMBO_SELECT<br id="yui_3_16_0_ym19_1_1461029038584_7602"><br id="yui_3_16_0_ym19_1_1461029038584_7603">                    '// Specifies the selection of valid value in Combo Box.<br id="yui_3_16_0_ym19_1_1461029038584_7604"><br id="yui_3_16_0_ym19_1_1461029038584_7605">                    SBO_Application.MessageBox( _<br id="yui_3_16_0_ym19_1_1461029038584_7606">                    "An et_COMBO_SELECT has been sent by a form with the unique ID: " + FormUID)<br id="yui_3_16_0_ym19_1_1461029038584_7607"><br id="yui_3_16_0_ym19_1_1461029038584_7608">                Case SAPbouiCOM.BoEventTypes.et_CLICK<br id="yui_3_16_0_ym19_1_1461029038584_7609">                    '// Specifies Mouse Up on editable item.<br id="yui_3_16_0_ym19_1_1461029038584_7610"><br id="yui_3_16_0_ym19_1_1461029038584_7611">                    SBO_Application.MessageBox( _<br id="yui_3_16_0_ym19_1_1461029038584_7612">                    "An et_CLICK has been sent by a form with the unique ID: " + FormUID)<br id="yui_3_16_0_ym19_1_1461029038584_7613"><br id="yui_3_16_0_ym19_1_1461029038584_7614">                Case SAPbouiCOM.BoEventTypes.et_DOUBLE_CLICK<br id="yui_3_16_0_ym19_1_1461029038584_7615">                    '// Specifies Mouse Up on editable item in time interval define by<br id="yui_3_16_0_ym19_1_1461029038584_7616">                    '// SAP Business One as double-click.<br id="yui_3_16_0_ym19_1_1461029038584_7617"><br id="yui_3_16_0_ym19_1_1461029038584_7618">                    SBO_Application.MessageBox( _<br id="yui_3_16_0_ym19_1_1461029038584_7619">                    "An et_DOUBLE_CLICK has been sent by a form with the unique ID: " + FormUID)<br id="yui_3_16_0_ym19_1_1461029038584_7620"><br id="yui_3_16_0_ym19_1_1461029038584_7621">                Case SAPbouiCOM.BoEventTypes.et_MATRIX_LINK_PRESSED<br id="yui_3_16_0_ym19_1_1461029038584_7622">                    '// Specifies a link arrow within a matrix was pressed.<br id="yui_3_16_0_ym19_1_1461029038584_7623"><br id="yui_3_16_0_ym19_1_1461029038584_7624">                    SBO_Application.MessageBox( _<br id="yui_3_16_0_ym19_1_1461029038584_7625">                    "An et_MATRIX_LINK_PRESSED has been sent by a form with the unique ID: " + FormUID)<br id="yui_3_16_0_ym19_1_1461029038584_7626"><br id="yui_3_16_0_ym19_1_1461029038584_7627">                Case SAPbouiCOM.BoEventTypes.et_MATRIX_COLLAPSE_PRESSED<br id="yui_3_16_0_ym19_1_1461029038584_7628">                    '// Specifies collapsed or expanded list within a matrix.<br id="yui_3_16_0_ym19_1_1461029038584_7629"><br id="yui_3_16_0_ym19_1_1461029038584_7630">                    SBO_Application.MessageBox( _<br id="yui_3_16_0_ym19_1_1461029038584_7631">                    "An et_MATRIX_COLLAPSE_PRESSED has been sent by a form with the unique ID: " + FormUID)<br id="yui_3_16_0_ym19_1_1461029038584_7632"><br id="yui_3_16_0_ym19_1_1461029038584_7633">                Case SAPbouiCOM.BoEventTypes.et_VALIDATE<br id="yui_3_16_0_ym19_1_1461029038584_7634">                    '//Specifies an item validation event.<br id="yui_3_16_0_ym19_1_1461029038584_7635"><br id="yui_3_16_0_ym19_1_1461029038584_7636">                    SBO_Application.MessageBox( _<br id="yui_3_16_0_ym19_1_1461029038584_7637">                    "An et_VALIDATE has been sent by a form with the unique ID: " + FormUID)<br id="yui_3_16_0_ym19_1_1461029038584_7638"><br id="yui_3_16_0_ym19_1_1461029038584_7639">                Case SAPbouiCOM.BoEventTypes.et_FORM_LOAD<br id="yui_3_16_0_ym19_1_1461029038584_7640">                    '// Specifies that SAP Business One application opened a form.<br id="yui_3_16_0_ym19_1_1461029038584_7641"><br id="yui_3_16_0_ym19_1_1461029038584_7642">                    SBO_Application.MessageBox( _<br id="yui_3_16_0_ym19_1_1461029038584_7643">                    "An et_FORM_LOAD has been sent by a form with the unique ID: " + FormUID)<br id="yui_3_16_0_ym19_1_1461029038584_7644"><br id="yui_3_16_0_ym19_1_1461029038584_7645">                Case SAPbouiCOM.BoEventTypes.et_FORM_UNLOAD<br id="yui_3_16_0_ym19_1_1461029038584_7646">                    '// Specifies that SAP Business One application closed a form.<br id="yui_3_16_0_ym19_1_1461029038584_7647"><br id="yui_3_16_0_ym19_1_1461029038584_7648">                    SBO_Application.MessageBox( _<br id="yui_3_16_0_ym19_1_1461029038584_7649">                    "An et_FORM_UNLOAD has been sent by a form with the unique ID: " + FormUID)<br id="yui_3_16_0_ym19_1_1461029038584_7650"><br id="yui_3_16_0_ym19_1_1461029038584_7651">                Case SAPbouiCOM.BoEventTypes.et_FORM_ACTIVATE<br id="yui_3_16_0_ym19_1_1461029038584_7652">                    '// Specifies that the focus is set on the form.<br id="yui_3_16_0_ym19_1_1461029038584_7653"><br id="yui_3_16_0_ym19_1_1461029038584_7654">                Case SAPbouiCOM.BoEventTypes.et_FORM_DEACTIVATE<br id="yui_3_16_0_ym19_1_1461029038584_7655">                    '// Specifies that the form lost focus.<br id="yui_3_16_0_ym19_1_1461029038584_7656"><br id="yui_3_16_0_ym19_1_1461029038584_7657">                Case SAPbouiCOM.BoEventTypes.et_FORM_CLOSE<br id="yui_3_16_0_ym19_1_1461029038584_7658">                    '// Specifies that the form was closed by calling the Close event.<br id="yui_3_16_0_ym19_1_1461029038584_7659"><br id="yui_3_16_0_ym19_1_1461029038584_7660">                    SBO_Application.MessageBox( _<br id="yui_3_16_0_ym19_1_1461029038584_7661">                    "An et_FORM_CLOSE has been sent by a form with the unique ID: " + FormUID)<br id="yui_3_16_0_ym19_1_1461029038584_7662"><br id="yui_3_16_0_ym19_1_1461029038584_7663">                Case SAPbouiCOM.BoEventTypes.et_FORM_RESIZE<br id="yui_3_16_0_ym19_1_1461029038584_7664">                    '// Specifies resizing of the form.<br id="yui_3_16_0_ym19_1_1461029038584_7665"><br id="yui_3_16_0_ym19_1_1461029038584_7666">                    SBO_Application.MessageBox( _<br id="yui_3_16_0_ym19_1_1461029038584_7667">                    "An et_FORM_RESIZE has been sent by a form with the unique ID: " + FormUID)<br id="yui_3_16_0_ym19_1_1461029038584_7668"><br id="yui_3_16_0_ym19_1_1461029038584_7669">                Case SAPbouiCOM.BoEventTypes.et_FORM_KEY_DOWN<br id="yui_3_16_0_ym19_1_1461029038584_7670">                    '// Specifies a key press on an area which is not item of the form.<br id="yui_3_16_0_ym19_1_1461029038584_7671"><br id="yui_3_16_0_ym19_1_1461029038584_7672">                    SBO_Application.MessageBox( _<br id="yui_3_16_0_ym19_1_1461029038584_7673">                    "An et_FORM_KEY_DOWN has been sent by a form with the unique ID: " + FormUID)<br id="yui_3_16_0_ym19_1_1461029038584_7674"><br id="yui_3_16_0_ym19_1_1461029038584_7675">            End Select<br id="yui_3_16_0_ym19_1_1461029038584_7676">        End If<br id="yui_3_16_0_ym19_1_1461029038584_7677">    End Sub<br id="yui_3_16_0_ym19_1_1461029038584_7678">End Class<br id="yui_3_16_0_ym19_1_1461029038584_7679"><br id="yui_3_16_0_ym19_1_1461029038584_7680"><br id="yui_3_16_0_ym19_1_1461029038584_7681">Thanks,<br id="yui_3_16_0_ym19_1_1461029038584_7682">Denes<br></div></div></body></html>