Einzelnen Beitrag anzeigen

Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#10

Re: Dll soll Control wärend Laufzeit auf Form erstellen

  Alt 10. Nov 2007, 10:47
Also in Form1.controls registrieren geht definitiv nicht, denn dann knallt die VCL dir Exceptions um die Ohren. Wie gesagt, wenn du Sharemem benutzt dürfte es gehen, aber schön ist es nicht. Allerdings für ein Pluginsystem, was nur unter deinem Delphi geschrieben wird, wäre es vielleicht sogar mal praktisch.
(Du musst dazu irgendwie in DLL und Programm als erstes die Unit Sharmem einbinden und irgendeine DLL der finalen Exe mitgeben)
Dann kannst du IMHO so programmieren, als wäre die DLL eine Unit im Programm. (Und du kannst auch AnsiStrings verwenden


Wenn dir Sharemem (wie den meisten) auch nicht gefällt:
Mit createwindow bekommst du den Buttonclick als Message an das ParentWindow mit, das geht etwa so:
Delphi-Quellcode:
//alles im Hauptprogramm
type TForm1=class(TForm)
      ...
      procedure WMCommand(var msg:TMessage);message WM_COMMAND;
...

procedure WMCommand(var msg:TMessage);message WM_COMMAND;
begin
  inherited;
  if (msg.wparamhi=BN_clicked) then
  begin
    //in msg.wparamlo steht der identifier (also in dem Fall die 1, die wir oben angegeben haben)
    //in msg.lparam sollte das WindowHandle des Buttons sein (result aus createwindow)

  end;
end;
Am besten ist du fertigst dir für diese PluginButtons eine eigene Liste der Windowhandles. Denen kannst du auch eine CloseMessage schicken, wenn sich dein Formular schließt.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat