![]() |
Re: Dem Hauptprogramm Funktionen modular hinzufügen
Hallo,
ok, das Kompelieren der dll habe ich geschafft. Wenn es Deine Zeit erlaubt, hätte ich gern gewusst (auch gern nur kurz ;)) wie dem Menü die entsprechenden Items und deren Ereignisse hinzugefügt werden... Danke Dir vielmals! |
Re: Dem Hauptprogramm Funktionen modular hinzufügen
Hallo Sakura,
eine Frage:
Delphi-Quellcode:
Gefunden habe ich dazu:constructor TPlugin.Create(aOwner: TPlugIns; aDLLName: String); begin inherited Create; FDLLName := aDLLName; FOwner := aOwner; LoadPlugIn; ... procedure TPlugin.LoadPlugIn; var ProcAddr: Pointer; LoadPlugInProc: TLoadPlugIn; begin // load library FHandle := LoadLibrary(PChar(DLLName)); if (FHandle = INVALID_HANDLE_VALUE) or (FHandle = 0) then // library could not be loaded Abort; ProcAddr := GetProcAddress(FHandle, 'LoadPlugIn'); if ProcAddr = nil then begin // plug-in load function is not exported, free library... FreeLibrary(FHandle); FHandle := INVALID_HANDLE_VALUE; // and abort Abort; end; try LoadPlugInProc := TLoadPlugIn(ProcAddr); // Was passiert hier genau? Es wird erst ein // try executing the registration method // Objekt vom Typ 'TPlugin' erzeugt und dann if not LoadPlugInProc(FOwner.Owner, FPlugIn) then // dessen Methode 'LoadPlugin' aufgerufen? // registration failed, abort loading // Durch diesen Aufruf wird Das Plugin abort; // aktiviert. Wie werden dort die Menüeinträge verwaltet und erweitert? Du sagtest das alle // Menüpunkte 'gekapselt' werden. Wo und wie geschieht das?
Delphi-Quellcode:
Vielleicht kannst Du mir mal ein Objektdiagramm zeichnen in dem die Verweise mitaufgeführt sind... :oops: :gruebel:
procedure TPlugInObject02.AppendMenu;
var MainMenu: TIMainMenu; FileMenu, CloseMenu: TIMenuItem; MainMenuItems: TIMenuItems; begin MainMenu := Parent.GetMainMenu; // Was passiert hier? Wird das ganze Menü zurückgeliefert? try MainMenuItems := MainMenu.GetMenuItems; // Und hier? Alle MenüItems? try FileMenu := MainMenuItems.FindItem('mnuFile'); if FileMenu <> nil then try CloseMenu := FileMenu.FindItem('mnuFileClose'); try FileMenu.InsertMenuItem(CloseMenu.GetIndex, 'Save All', {'Saves all files'}'Arndt ist schlau', 'mnuFileSaveAll', scShift + scCtrl + Ord('S'), MNI_SAVEALL, OnMenuClick).Free; FileMenu.InsertMenuItem(Succ(CloseMenu.GetIndex), 'Close All', 'Closes all files', 'mnuFileCloseAll', scShift + scCtrl + Ord('C'), MNI_CLOSEALL, OnMenuClick).Free; finally CloseMenu.Free; end; finally FileMenu.Free; end; finally MainMenuItems.Free; end; finally MainMenu.Free; end; end; Das waren wohl mehrere Fragen... Es wäre schön, wenn du mir ein wenig weiterhelfen könntest! Danke vielmals! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:35 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz