Einzelnen Beitrag anzeigen

xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#6

Re: VCL von Prog und DLL verbinden.

  Alt 4. Jul 2006, 10:27
Hallo,
Zitat von schu-r:
Doch wie könnte ich aus der DLL ein Event im Hauptprogramm genereieren, der es auffordert ein Objekt zu erzeugen und mir zu geben?
Ist doch ganz einfach. Du übergibst der DLL die Prozeduradresse und die DLL ruft dann die Prozedur auf.
Besser wäre es aber, Du erstellst eine Klasse, die alle möglichen Objekte erzeugen kann, und übergibst das als Interface an die DLL.
z. B. so:

Interface-Unit (in Hauptprogramm und DLL verwenden):
Delphi-Quellcode:
type
  IVCLFactory = interface(IInterface)
    function GetButton: TButton;
    function GetLabel: TLabel;
  ...
  end;
Im Hauptprogramm:
Delphi-Quellcode:
type
  TVCLFactory = class(TInterfacedObject, IVCLFactory)
    function GetButton: TButton;
    function GetLabel: TLabel;
  ...
  end;
Beim Laden der DLL übergibst Du dann einfach das Interface:
Delphi-Quellcode:
var
  Factory: IVCLFactory;
begin
  Factory := TVCLFactory.Create;
  // DLL laden
  InitDLL(Factory); // <- hier eine exportierte Funktion aufrufen, der das Interface übergeben wird
end;
So würde ich das machen. Nicht vergessen, am Schluss in der DLL das Interface freizugeben (nil zuweisen).

Gruß
xaromz
  Mit Zitat antworten Zitat