[fpc-pascal] support for using an activex

Roberto Padovani padovani.r at gmail.com
Wed May 25 16:01:14 CEST 2011


2011/5/25 Ludo Brands <ludo.brands at free.fr>:
> Regarding the tlb to pascal "conversion", AFAIK there is no support in fpc.
> Delphi is clearly better equiped to work with COM objects.
>
> I have also been playing around with a generic eventsink class but the
> problem is that events can have parameters (and a lot do). Your suggestion
> of using TNotifyEvents could work for events without parameters. You could
> leave the parameter stuff to the user of the eventsink, eventually helping
> him by exposing the number and type of parameters, but that means that the
> user has to have a reasonable good understanding of COM, including the data
> types compatible with COM marshalling.
>

Thanks for the explanation. In fact, that is the reason why I called
it TSimpleEventSink, meaning that it was good for simple situation.
In my case, for example, the activex controls a hardware stuff which
only request the user to take an action sometimes.
In the C++ source code for the class Device I have:

[
	uuid(168F5642-5751-49F5-9AA4-B8A7A5F6A5B8),
	helpstring("_IDeviceEvents Interface")
]
dispinterface _IDeviceEvents
{
	properties:
	methods:
	[id(1), helpstring("method OnCommChanged")] HRESULT OnCommChanged();
	[id(2), helpstring("method OnStatesChanged")] HRESULT OnStatesChanged();
	[id(3), helpstring("method OnContact")] HRESULT OnContact();
	[id(4), helpstring("method OnMeasUpdate")] HRESULT OnMeasUpdate();
};

where this four simple events only alert the user about a change
situation; then the user takes the suitable actions.
Do you think it could work for me?

Now I'm trying to write by hand a minimalist tlb, looking for the
definitions in the activex source code....

Thanks a lot!!

  Roberto



More information about the fpc-pascal mailing list