Greetings and win32 com events question

R

Robert Kaplan

Hi,

I'm new to the group, so greetings all!

I'm working on an application try to respond to events in Microsoft
Access using Python and win32com. However, I'm having trouble in
setting up the event handlers. I can think of 2 approaches both of
which yield win32com errors.

First is the approach used the MSOfficeEvents.py test program. The
problem is that the events to be picked up are not on the Application
object but on a Form object created from it.

class AcEvents
def OnActivate(self):
print "Hello from Access"
return 1

<snip>
self. ac = Dispatch ("Access.Application")
self. db = self. ac. NewCurrentDatabase ("d:\\pyhack\\foo")
self. fm = self. ac. CreateForm ()
self. ac. Visible = true
self. fm = DispatchWithEvents (self. fm, AcEvents)

blows out with

self. fm = DispatchWithEvents (self. fm, AcEvents)
File "D:\PYTHON22\Lib\site-packages\win32com\client\__init__.py", line
258, in DispatchWithEvents
clsid = disp_class.CLSID
AttributeError: 'NoneType' object has no attribute 'CLSID'.

I also tried a variety of string arguments, but all of those also
yielded an invalid class id error.

The other approach is more Visual Basic like:

self. ac = Dispatch ("Access.Application")
self. db = self. ac. NewCurrentDatabase ("d:\\pyhack\\foo")
self. fm = self. ac. CreateForm ()
self. ac. Visible = true
self. ev = AcEvents ()
self. fm. OnActivate = self. ev. OnActivate

this couldn't set the OnActivate attribute with the following error.

File "D:\pyhack\1\Bob.py", line 132, in DoAccess
self. fm. OnActivate = self. ev. OnActivate
File "D:\PYTHON22\Lib\site-packages\win32com\client\__init__.py", line
503, in __setattr__
d.__setattr__(attr, value)
File "D:\PYTHON22\Lib\site-packages\win32com\client\__init__.py", line
463, in __setattr__
self._oleobj_.Invoke(*(args + (value,) + defArgs))
TypeError: Objects of type 'instance method' can not be converted to a
COM VARIANT


Anyone know how to do this, either strategy is fine.

Thanks

Robert Kaplan
(Remove XX for e-mail)
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,967
Messages
2,570,148
Members
46,694
Latest member
LetaCadwal

Latest Threads

Top