Einzelnen Beitrag anzeigen

Pfoto

Registriert seit: 26. Aug 2005
Ort: Daun
541 Beiträge
 
Turbo Delphi für Win32
 
#1

Form aus BPL-PlugIn mit Show aufrufen => fehlerhaft

  Alt 8. Dez 2007, 13:16
Hallo zusammen!

ich hatte vor einiger Zeit hier im Forum lernen dürfen,
dass man auch Forms wie Frames in eine andere Form laden
kann...

Leider funktioniert dies nicht, wenn ich das ganze über
ein dynamisch geladenes BPL-PlugIn tue und dessen Form
auslesen möchte.

Diese Funktion steht im PlugIn:

Delphi-Quellcode:
function TTemplatePlugIn.GetFormClass(var aFormClass: TFormClass): Boolean;
begin
  result:= true;
  aFormClass:= TfrmModuleForm;
end;
In der Hauptanwendung rufe ich obige Funktion des Plugins auf
und übergebe sie der folgenden Methode, die so ähnlich hier
im Forum existiert:
Delphi-Quellcode:
procedure TfrmMain.FormToPanel(aOwner: TComponent; aFormClass: TFormClass; aPanel: TPanel);
var
  newFormClass: TFormClass;
begin
  newFormClass := aFormClass;
  if (aPanel.ControlCount = 0) or not (aPanel.Controls[0] is newFormClass) then
  begin
    if aPanel.ControlCount > 0 then
      aPanel.Controls[0].Free;
    if Assigned(newFormClass) then
    begin
      newForm:= newFormClass.Create(aOwner);
      newForm.BorderStyle:= bsNone;
      newForm.Parent:= aPanel;
      newForm.Align:= alClient;
      newForm.Show;
    end;
  end;
end;
Daraufhin tut sich: gar nichts!
Wird das Programm beendet, entsteht dann noch ein Zugriffsfehler.


Rufe ich stattdessen "newForm" mit "ShowModal" auf,
und passe es nicht an ein Elternfenster an, funktioniert es.

Ich kapiere nicht, was da im Hintergrund passiert,
denn der Host bekommt doch nur die Klasse aus der BPL
und könnte dann damit machen was er will, oder?


Habt ihr da Rat?


Dank und Gruß
Pfoto
Jürgen Höfs
  Mit Zitat antworten Zitat