Einzelnen Beitrag anzeigen

Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.323 Beiträge
 
Delphi XE2 Professional
 
#1

Controls in DLL erzeugen und in Controls anzeigen

  Alt 6. Nov 2006, 20:53
Hallo,

ich hab mir letztens mal überlegt, ob es möglich wäre, eine DLL zu erstellen, in der eine Procedure ein Control erstellt, dass dann über Übergabe-Variablen an ein Control der MainForm übergeben werden kann.

Meine DLL schaut so aus (testweise):

Delphi-Quellcode:
library Project2;

{ Wichtiger Hinweis zur DLL-Speicherverwaltung: ShareMem muss sich in der
  ersten Unit der unit-Klausel der Bibliothek und des Projekts befinden (Projekt-
  Quelltext anzeigen), falls die DLL Prozeduren oder Funktionen exportiert, die
  Strings als Parameter oder Funktionsergebnisse übergeben. Das gilt für alle
  Strings, die von oder an die DLL übergeben werden -- sogar für diejenigen, die
  sich in Records und Klassen befinden. Sharemem ist die Schnittstellen-Unit zur
  Verwaltungs-DLL für gemeinsame Speicherzugriffe, BORLNDMM.DLL.
  Um die Verwendung von BORLNDMM.DLL zu vermeiden, können Sie String-
  Informationen als PChar- oder ShortString-Parameter übergeben. }



uses
  SysUtils,
  Classes,
  StdCtrls,
  Controls;

{$R *.res}

procedure DoEdit(Komponente: TWinControl; Links, Oben: Integer); stdcall;
var
  neues_Edit: TEdit;

begin
  neues_Edit := TEdit.Create(nil);

  with neues_Edit do
    begin
      Parent := Komponente;
      Left := Links;
      Top := Oben;
      Width := 250;
// Height :=

      Enabled := true;
      Visible := true;
    end;
end;

exports
  DoEdit;

begin
end.
Meine MainForm so:
Delphi-Quellcode:
//DLL: Functions und Procedures
procedure DoEdit(Komponente: TWinControl; Links, Oben: Integer); stdcall;
  external 'Project2.dll';



procedure TForm1.Button1Click(Sender: TObject);
begin
  DoEdit(Panel1, 10, 10);
end;
Nur wenn ich auf den Button klicke, bekomm ich folgenden Fehler:
---------------------------
Benachrichtigung über Debugger-Exception
---------------------------
Im Projekt Project1.exe ist eine Exception der Klasse EConvertError aufgetreten. Meldung: 'TFont kann nicht zu TFont zugewiesen werden'. Prozess wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen.
---------------------------
OK Hilfe
---------------------------


Weiss jemand warum?

OK, ich gib mich geschlagen, etwas quickAndDirty.
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat