Entscheidend ist,
wie du deine Anwendung in Einzelstücke zerschneidest.
Dein Schnitt verläuft direkt durch die
GUI wenn ich das richtig verstanden habe.
Du möchtest QuantumGrid auslagern; da kann ich nur sagen "vergiss es".
Wenn du durch die
GUI schneiden möchtest, dann gibt es bei Delphi nur 2 Möglichkeiten:
Packages und
ActiveX-Controls.
Packages hast du schon verworfen und
ActiveX-Controls werden zu einem Drama, dass den Aufwand nicht lohnt.
Das heisst jetzt aber nicht, dass du keine
COM-DLLs verwenden sollst.
Der Schnitt darf nur nicht durch die
GUI verlaufen.
Ein Beispiel: deine Anwendung soll EMails versenden können.
Dann könnte man folgendes Interface deklarieren:
Delphi-Quellcode:
ISendMail = interface(IDispatch) // etwas vereinfacht
['{XXXXXXXX-A104-4C06-999F-XXXXXXXXXXXX}']
procedure DoSendMail; safecall;
procedure ClearAllRecipients; safecall;
property FromAddr: WideString read Get_FromAddr write Set_FromAddr;
property ToAddr: IStrings read Get_ToAddr;
property CcAddr: IStrings read Get_CcAddr;
property BccAddr: IStrings read Get_BccAddr;
property MapiShowDialog: WordBool read Get_MapiShowDialog write Set_MapiShowDialog;
property EMaildirectory: WideString read Get_EMaildirectory write Set_EMaildirectory;
property SmtpHost: WideString read Get_SmtpHost write Set_SmtpHost;
property SmtpUser: WideString read Get_SmtpUser write Set_SmtpUser;
property SmtpPassword: WideString read Get_SmtpPassword write Set_SmtpPassword;
property BodyText: WideString read Get_BodyText write Set_BodyText;
property EMailMode: EnumEMailMode read Get_EMailMode write Set_EMailMode;
property Subject: WideString read Get_Subject write Set_Subject;
property ReplyTo: WideString read Get_ReplyTo write Set_ReplyTo;
property Attachments: IAttachments read Get_Attachments;
end;
Dieses Interface und die
COM DLL braucht keine
GUI und funktioniert ohne Probleme.