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/