Personally I don't like using BPL's and prefer dll's. While Objects cannot be
transported between dll's interfaces are very happy and I have had reasonable 
success in the past using activex forms from dll's and docking them into the 
appropriate position of the main application.

Just a thought.

-----Original Message-----
From: Phil Middlemiss [mailto:[EMAIL PROTECTED]
Sent: Monday, 17 March 2003 9:24 a.m.
To: Multiple recipients of list delphi
Subject: Re: [DUG]: Passing Objects from DLLs


Thanks Myles,

Looks like we need to do a little bit of re-design.

Phil.
----- Original Message -----
From: "Myles Penlington" <[EMAIL PROTECTED]>
To: "Multiple recipients of list delphi" <[EMAIL PROTECTED]>
Sent: Monday, March 17, 2003 8:50 AM
Subject: RE: [DUG]: Passing Objects from DLLs


> That is why use BPL's instead. With a DLL you have your own copy of System
> and hence TObject and then get the case that TObject is <> to TObject as
> there is now two copies TObject VMT's etc.
>
> I seem to remember there are other issues with DLL's vs BPLs too.
>
> Myles.
>
>
>
> -----Original Message-----
> From: Phil Middlemiss [mailto:[EMAIL PROTECTED]
> Sent: Monday, 17 March 2003 8:17 a.m.
> To: Multiple recipients of list delphi
> Subject: [DUG]: Passing Objects from DLLs
>
>
> Hi all,
>
> we are building a plugin architecture and have a few questions about
passing
> objects from a DLL into the main app.
>
> For example, we want a dll to be able to pass an instance of a TPanel that
> is then embedded into a TNotebook on a form in the main application. We
pass
> this panel, as a pointer, as part of a variant open array parameter (array
> of const). So the DLL would call something like:
>
>     MyNewPanel := TPanel.Create(nil); // we will free it our selves later
>     MyNewPanel.Parent := nil;    // the main app will assign the parent
>     PluginManager.ProcessCommand("AddPanel", [EMAIL PROTECTED]);
>
> This is effectively received in the main app as:
>
> TMainApp.ProcessCommand(CommandName : WideString; Parameters : Array of
> Const);
> var ANewPanel : TPanel;
> begin
> ...
>     ANewPanel := TPanel(Parameters[0].vPointer^);
> ...
> end;
>
> The panel seems to be received correctly - sort of. The Evaluate/Modify
> window evaluates ANewPanel.Classtype as TClass($12345) except with the
> actual address. If we now try and assign a font to the panel we get an
error
> "Can't assign a TFont to a TFont".
>
> It seems that the RTTI is not correctly being passed from the DLL to the
> main app. Is this a side effect of passing objects from a DLL, or is this
a
> side effect of passing it in a variant open array? How do we get around
> this?
>
> Phil.
>
> --------------------------------------------------------------------------
-
>     New Zealand Delphi Users group - Delphi List - [EMAIL PROTECTED]
>                   Website: http://www.delphi.org.nz
> To UnSub, send email to: [EMAIL PROTECTED]
> with body of "unsubscribe delphi"
> Web Archive at: http://www.mail-archive.com/delphi%40delphi.org.nz/
> --------------------------------------------------------------------------
-
>     New Zealand Delphi Users group - Delphi List - [EMAIL PROTECTED]
>                   Website: http://www.delphi.org.nz
> To UnSub, send email to: [EMAIL PROTECTED]
> with body of "unsubscribe delphi"
> Web Archive at: http://www.mail-archive.com/delphi%40delphi.org.nz/
>

---------------------------------------------------------------------------
    New Zealand Delphi Users group - Delphi List - [EMAIL PROTECTED]
                  Website: http://www.delphi.org.nz
To UnSub, send email to: [EMAIL PROTECTED] 
with body of "unsubscribe delphi"
Web Archive at: http://www.mail-archive.com/delphi%40delphi.org.nz/
---------------------------------------------------------------------------
    New Zealand Delphi Users group - Delphi List - [EMAIL PROTECTED]
                  Website: http://www.delphi.org.nz
To UnSub, send email to: [EMAIL PROTECTED]
with body of "unsubscribe delphi"
Web Archive at: http://www.mail-archive.com/delphi%40delphi.org.nz/

Reply via email to