DAX FAQs 1.0 by Conrad Herrmann 24 June 97 ------------------------------------------------------------------- Q: I want to use my favorite ActiveX control, but it seems not to work in Delphi 3. What interfaces are required for my control to work? A: Here are the required and optional interfaces. Required IPersistStreamInit - some older controls use IPersistStorage instead, especially if they double as document object servers. IOleControl - *must* support GetWindow. Some newer controls are "lightweight, windowless" controls designed for downloading off the Internet. These controls sacrifice backward compatibility for smaller code size. IDispatch - this is the automation interface Optional IPerPropertyBrowsing - without it, will not use display strings/value menus in property editor IConnectionPointContainer - without it, will not use property notify sinks IPropertyNotifySink connection point IOleInPlaceObject - without it, will not activate in place (i.e. not create HWND) IOleInPlaceActiveObject - without it, will not have keystrokes Most controls obtain interfaces from their container. Newer controls may attempt to obtain interfaces that Delphi does not provide. These controls ought to behave properly when the attempt to retrieve these interfaces fails, however they might not. Here is a list of interfaces that Delphi's container can provide to controls it hosts: Interfaces published by site object: IUnknown, IOleClientSite, IOleControlSite, IOleInPlaceSite, IOleInPlaceFrame, IDispatch, IPropertyNotifySink, ISimpleFrameSite