Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Dem Hauptprogramm Funktionen modular hinzufügen (https://www.delphipraxis.net/26325-dem-hauptprogramm-funktionen-modular-hinzufuegen.html)

barnti 22. Jul 2004 14:57

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!

barnti 23. Jul 2004 10:35

Re: Dem Hauptprogramm Funktionen modular hinzufügen
 
Hallo Sakura,
eine Frage:

Delphi-Quellcode:

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?
Gefunden habe ich dazu:
Delphi-Quellcode:
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;
Vielleicht kannst Du mir mal ein Objektdiagramm zeichnen in dem die Verweise mitaufgeführt sind... :oops: :gruebel:

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 14:01 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz