![]() |
Dem Hauptprogramm Funktionen modular hinzufügen
Hallo,
Ich arbeite an einem Datenbank-Interface, welches zur Zeit in einer Abteilung der Firma benutzt wird. Nun sind andere Abteilungen ebenfalls interessiert das Programm zu nutzen und es um abteilungsspezifische Funktionen zu erweitern. Da nur einige Mitarbeiter gewisse Funktionen benutzen, würde ich gern diese Funktionen als Module kapseln und gegebenfalls dem Programm hinzufügen. Wie löst man so etwas? Wenn ich z.B. dem Chef eine Statistik über Daten zur Verfügung stellen möchte, die Angestellten diese Funktion aber nicht nutzen (sollen, können). Wie funktioniert dann eine solche Modulanbindung? Bisher stellt das Programm alle Funktionen einer Abteilung bereit. Ich habe mich daher noch nicht mit einer solchen Problematik befasst! Für Anregungen und Hilfestellungen bin ich wie immer sehr dankbar! |
Re: Dem Hauptprogramm Funktionen modular hinzufügen
Klick den Smiley:
![]() ...:cat:... |
Re: Dem Hauptprogramm Funktionen modular hinzufügen
Hallo Sakura,
danke für den Link. Ich werde mich mal daran versuchen... |
Re: Dem Hauptprogramm Funktionen modular hinzufügen
Zitat:
...:cat:... |
Re: Dem Hauptprogramm Funktionen modular hinzufügen
Hallo Sakura,
der Link ist echt super danke :-D mfg fluxury |
Re: Dem Hauptprogramm Funktionen modular hinzufügen
Zitat:
Eigentlich fehlt noch der dritte Teil des Tuts, bloß die Zeit hat es leider nie zugelassen. Na ja, Hauptsache es reicht für Deine Bedürfnisse. ...:cat:... |
Re: Dem Hauptprogramm Funktionen modular hinzufügen
Hallo Sakura,
noch habe ich nicht alles verstanden, bin aber dabei! Ich versuche grad mal eines der Plugins zu kopieren und dann untereinem anderen Namen einzubinden. Dazu habe ich den Quellcode des Plugins abgeändert und einen Eintrag in der Registrierung hinzugefügt. Ich hoffe ihr könnt mir eine Frage beantworten: Wie erstelle ich aus dem Code denn die dll? Habe es mit 'Strg+F9' versucht - ohne Erfolg... |
Re: Dem Hauptprogramm Funktionen modular hinzufügen
Hallo,
hier noch etwas: Beim Starten der Anwendung wird ein Objekt des Typs 'TApplicationImpl' erzeugt, welches die Schnittstelle zu den benötigten 5 Funktionen bietet. Dieses wiederum enthält eine Liste 'FPlugins' mit den Plugins. Wie spielen die Klassen 'TPluginMenu' und 'PlugInMenuItem' mit in der Objektstruktur. D.h. wie wird das vorhandene Menü der Anwendung erweitert? Kannst Du eine kurze etwas ausführlichere Beschreibung geben? |
Re: Dem Hauptprogramm Funktionen modular hinzufügen
Zitat:
...:cat:... |
Re: Dem Hauptprogramm Funktionen modular hinzufügen
Zitat:
Kurz: ja. Ausführlich: Später, mir fehlt zZ die nötige Zeit ;) ...:cat:... |
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