Einzelnen Beitrag anzeigen

jonny

Registriert seit: 15. Dez 2003
235 Beiträge
 
Delphi 7 Enterprise
 
#17

Re: Wie Panel in dll ablegen und bei bedarf laden

  Alt 29. Dez 2004, 22:14
So habe nun eine Procedure geschrieben die das Laden des Plugins übernehmen soll

hier der Quellcode:

Code:
procedure TForm1.LoadPlugin(PluginPath: String);
var phm: HModule;
    LoadP: procedure (Handle: hwnd);
    NewPanel: TPanel;
begin
  phm:=LoadPackage(PluginPath);
  If phm <> 0 Then
  try
    @LoadP:=GetProcAddress(phm, 'LoadMe');
    If Assigned(LoadP) Then
    begin
      NewPanel:=TPanel.Create(Form1);
      NewPanel.Align:=alTop;
      NewPanel.BevelInner:=bvNone;
      NewPanel.BevelOuter:=bvNone;
      NewPanel.Height:=100;
      NewPanel.Visible:=True;
      LoadP(NewPanel.Handle);
    end
    else
    begin
      ShowMessage ('"LoadMe"-Prozedur nicht gefunden');
    end
  finally
    UnloadPackage(phm);
  end
  else
    ShowMessage ('Plugin nicht gefunden');
end;
die Plugin-Unit sieht so aus:

Code:
...
procedure LoadMe(Handle: hwnd);
begin
  Form1:=TForm1.CreateParented(Handle);
  Form1.Align:=alClient;
  Form1.Show;
end;

procedure GetMeFree;
begin
  Form1.Release;
end;


exports
  LoadMe,
  GetMeFree;
end.
- So habe folgende Probleme Das Panel wird nicht erstellt (Bekomme ne Meldung das kein Parent an das Plugin übergeben wurde)
- erstelle ich zur entwurfzeit ein Panel und weise dem Plugin die als Paren zu so wird das Plugin dennoch nicht geladen (ausser einmal hats geklappt)
- Bei dem einen Mal wo es funktioniert hatte zeigte es sich aber nicht so wie erwünscht:
--eigener Taskbutton in der Taskleiste für das Plugin der aber störend ist
--da die Eigenschaft "Align" des Fensters auf "alClient" stand so bozog sich diese nicht auf das Panel sondern auf den Ganzen Bildschirm (Im Panel wurde also nur ein Teil der Form angezeigt)
--Jegliche Funktion der Anwendung war verschwunden noch nicht mal das beenden der Anwendung war möglich.

Kann mir jemand bei dem Problem helfen?

Die Anwendung die ich erstellen möcht soll so eine Art Sidebar werden wie die SmartBarXP oder die DesktopSidebar, wenn jemand die Anwendungen kennt so weiss er bestimmt was ich mit den Panels meine. Wenn jemand die Anwendungen nicht kennt so bin ich bereit ein Screenshot hier zu posten.

Danke schon mal für bisherige und folgende Hilfe.
  Mit Zitat antworten Zitat