![]() |
Menü dynamische wählbar machen
Hallo DP Gemeinde,
ich möchte mein Menü anwählbar machen wenn die entsprechende Plugin DLL vorhanden ist, wie kann ich das am besten Lösen ich stehe da etwas auf dem Schlauch. Könntet Ihr mir da weiter Helden ? Grüsse Chris |
AW: Menü dynamische wählbar machen
Was genau soll denn im Menü angezeigt werden, vorher bekannte Aufrufe oder Aufrufe die rein von der DLL bereitgestellt werden.
Im ersten Falle genügt es zu überprüfen ob die DLL vorhanden ist ,geladenen werden kann und die in diesem Fall bekannten Funktionen gefunden werden. Im 2. Falle muss entweder die DLL eine Funktion bereitstellen die die benötigten Informationen zum erstellen der Menüeinträge zurückliefert, oder ein Callback übergeben werden über den die DLL die Einträge erstellen lassen kann. Sobald die DLL über reine Funktionen hinaus z.B. Formulare bereitstellen soll, muss (auf beiden Seiten) mit Runtime Packages gearbeitet werden. |
AW: Menü dynamische wählbar machen
Hallo GP Gemeinde, Hallo Bummi,
ich möchte nur überprüfen ob die DLL existiert, die DLL dann laden werde ich über das Menü machen. Wenn die DLL da ist soll auch die Möglichkeit bestehen diese zu Laden sonst nicht, da ich ja sonst eine Fehler Meldung bekomme dass die DLL nicht vorhanden ist und so kann ich das dann umgehen. Grüsse Chis |
AW: Menü dynamische wählbar machen
Du könntest gegf. per Fileexists prüfen, ansonsten:
Delphi-Quellcode:
Function DLLLoadable(const DLL:String):Boolean;
var DLLHand:Cardinal; begin Result := false; DLLHand := LoadLibrary(PChar(DLL)); if DLLHand<>0 then begin Result := true; FreeLibrary(DLLHand); end; end; |
AW: Menü dynamische wählbar machen
Für ein Plugin-System mit DLL würde ich von jedem Plugin (DLL) eine Funktionsliste erwarten (mit Beschreibung), mit der ich dann das Menü aufbauen kann.
Somit also alle Plugin-DLL am Anfang laden, Funktionsliste abfragen und das Menü aufbauen. Wenn man Lust hat, kann man die Plugins auch direkt wieder entladen. Beim Aufruf über das Menü wird das Plugin dann geladen und der Befehl ausgeführt. |
AW: Menü dynamische wählbar machen
Hallo DP Gemeinde, Hallo Sir Rufo und Bummi,
Also das mit dem
Delphi-Quellcode:
habe ich mal gesucht, nur verstehe ich es noch nicht ganz.
if FileExist
Ich habe es nach meinem Verständnis mal so ausgelegt:
Delphi-Quellcode:
Nur geht das jetzt leider nicht, es gibt mir Fehler.
if FileExists(./plugin/noten.dll) then
begin mainmenue1.noten1: enabled=true end else begin mainmenue1.noten1: enabled=false Ich habe die if then else abfrage wohl verstanden aber das mit dem enabled = True oder False verstehe ich jetzt nicht so ganze, das heist ich weis da nicht wie ich das korrekt eingeben muss dass es klappt. Ich wäre froh um ne kleine Hilfestellung. Grüsse Chris |
AW: Menü dynamische wählbar machen
Delphi-Quellcode:
MainMenu1.Noten1.Enabled := FileExists( '.\plugin\noten.dll' );
|
AW: Menü dynamische wählbar machen
Der Code zum aktivieren/deaktivieren lautet:
Delphi-Quellcode:
oder
MainMenu1.Menuepunkt1.Enabled := false;
Delphi-Quellcode:
Viel Spaß! ;)
MainMenu1.Menuepunkt1.Enabled := true;
[Edit]Mist zu spät ;) So wie SirRufo es gemacht hat ist es natürlich kürzer und auch professioneller. Nur als Grundlage ist mein Beispiel auch nicht schlecht ;)[/Edit] |
AW: Menü dynamische wählbar machen
Hallo Sir Rufo, Hallo Aviator,
danke für die Korrektur, es scheint zu klappen, bis zum Punkt: [dcc32 Fehler] fHostForm.pas(57): E2003 Undeklarierter Bezeichner: 'Noten1' Ich habe jetzt Deinen Vorschlag, Sir Rufo, MainMenu1.Noten1.Enabled := FileExists( '.\plugin\noten.dll' ); genommen. Muss ich da nochmals Noten1 deklarieren ? Es steht ja schon zu beginn:
Delphi-Quellcode:
Und dasn steht beim FormCreate:
MainMenu1: TMainMenu;
Datei1: TMenuItem; Noten1: TMenuItem; Ohm1: TMenuItem; Volt1: TMenuItem; Ampere1: TMenuItem;
Delphi-Quellcode:
Grüsse
procedure TForm1.FormCreate(Sender: TObject);
begin SwitchButtons; MainMenu1.Noten1.Enabled := FileExists( '.\plugin\noten.dll' ); MainMenu1.Volt1.Enabled := FileExists( '.\plugin\volt.dll' ); MainMenu1.Ohm1.Enabled := FileExists( '.\plugin\ohm.dll' ); MainMenu1.Ampere1.Enabled := FileExists( '.\plugin\ampere.dll' ); {MainMenu1.Noten1.Enabled := FileExists( '.\plugin\noten.dll' ); } end; Chris |
AW: Menü dynamische wählbar machen
Delphi-Quellcode:
Noten1.Enabled := FileExists( '.\plugin\noten.dll' );
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:24 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