Einzelnen Beitrag anzeigen

shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#6

AW: In-Process COM TFont kann nicht TFont zugewiesen werden

  Alt 13. Mai 2011, 17:26
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.
Andreas
  Mit Zitat antworten Zitat