Hallo zusammen,
meine ersten Gehversuche mit COM sind zwar schon von Erfolg gekrönt, aber ich habe immer noch ein paar Schwierigkeiten.
Ich laß mir aus einer COM-Bibliothek ein Formular zurückgeben und möchte dieses an das Hauptformular meiner Anwendung binden (z.B. dllformular.parent := Hauptformular). Allerdings haut das nicht so ganz hin. Wizigerweise sehe ich zwar, daß im Hauptformular etwas passiert (u. a. werden die Scrollleisten angezeigt, wahrscheinlich deshalb, weil das DLL-Formular ein wenig größer als das Hauptformular ist), allerdings sehe ich das eigentliche DLL-Formular nicht in meinem Haupfenster.
Fürs bessere Verständnis hier der Code (lasst Euch von dem Befehl "var_to_object()" nicht stören, er stammt aus einem Zusatzmodul, welches ich installiert habe):
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
| procedure TForm1.Item1Click(Sender: TObject); var server: variant; enviroment : TForm; begin server := createOleObject('filemanager.formserver'); enviroment:= TForm(var_to_object(server.getenviroment)); //hier wird die DLL-Form geholt und ans Hauptprogramm übergeben enviroment.Hide; //enviroment.ParentWindow := form1.Handle; enviroment.Parent := form1; enviroment.Height := 100; enviroment.Color := clwhite; enviroment.Align := alclient; enviroment.Parent := form1; enviroment.show; end; |
Mit dem auskommentierten Befehl "//enviroment.ParentWindow := form1. handle" krieg ich zwar das Formular zu Gesicht, allerdings reagiert es nicht mehr auf die jeweiligen Eigenschaften wie "enviroment.align := alclient;". Andere Eigenschaften dagegen (wie z.B. die Farbe) kann ich wunderbar einstellen. Geh ich dagegen den Weg über "parent" passiert so gut wie gar nix.
Kann mir jemand hierbei helfen und mir vielleicht einen Lösungsweg zeigen ?
mfg + Danke
Udo