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