Einzelnen Beitrag anzeigen

St.Gro

Registriert seit: 21. Dez 2004
Ort: Duisburg
13 Beiträge
 
Delphi 7 Enterprise
 
#18

Re: Wie Panel in dll ablegen und bei bedarf laden

  Alt 30. Dez 2004, 00:25
Hallo!

Zitat:
Das Panel wird nicht erstellt (Bekomme ne Meldung das kein Parent an das Plugin übergeben wurde)
Du brauchst noch:

Code:
NewPanel.parent := self;
NewPanel.name := 'Panel1';
Zitat:
eigener Taskbutton in der Taskleiste für das Plugin der aber störend ist
Verschwindet damit:

Code:
form.borderstyle := bsNone;
Und du musst das Package später freigeben, nicht unmittelbar nach der Erstellung.
Bei deinem Code läuft es in einem durch:

Code:
try
  <Erstellung...>
finally
  UnloadPackage(phm);
end
Kommentier die Zeile UnloadPackage mal aus..Setz sie z.B. im onClose vom Formular wieder ein.

Zitat:
Im Panel wurde also nur ein Teil der Form angezeigt
Das ist vermutlich wahr..alClient ist natürlich blödsinn, wenn du das Formular in ein Panel "hineinerstellst", passt es sich in der Größe dem Panel an und es erscheinen natürlich keine Scrollbars.
Erstelle es statt dessen in eine TScrollBox. Blöderweise musst du hierfür noch nach der Erstellung die Höhe des Scrollbars dem erstellten Formular anpassen, in etwa so wird es vermutlich funktionieren:

Code:
procedure LoadMe(Handle: hwnd; var fHeight: integer);
begin
  fmTest:=TfmTest.CreateParented(Handle);
  fmTest.Align := alNone;
  fmTest.SetBounds(10,10,400,400);
  fHeight := fmTest.top + fmTest.height;
...
entsprechend beim Aufruf:

Code:
procedure TForm1.LoadPlugin(PluginPath: String);
var phm: HModule;
    LoadP: procedure (Handle: hwnd; var fHeight: integer);
    NewScrollBox: TScrollBox;
    fHeight: integer;
begin
  phm:=LoadPackage(PluginPath);
  If phm <> 0 Then
  try
    @LoadP:=GetProcAddress(phm, 'LoadMe');
    If Assigned(LoadP) Then
    begin
      NewScrollBox:=TScrollBox.Create(Form1);
      NewScrollBox.parent := self;
      NewScrollBox.name := 'ScrollBox1';
      NewScrollBox.Align:=alTop;
      NewScrollBox.Height:=100;
      LoadP(NewScrollBox.Handle, fHeight);
      NewScrollBox.VertScrollBar.Range := fHeight;
...

Sollte deine Probleme alle abdecken, ich gehe nun ins Bett. Vielleicht dann bis später,

Steffen
Stress hat man nicht, Stress macht man sich
  Mit Zitat antworten Zitat