AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Menü dynamische wählbar machen

Ein Thema von floppybe · begonnen am 29. Mär 2013 · letzter Beitrag vom 30. Mär 2013
Antwort Antwort
Seite 1 von 2  1 2      
floppybe

Registriert seit: 24. Dez 2008
Ort: Belp
65 Beiträge
 
Delphi XE5 Architect
 
#1

Menü dynamische wählbar machen

  Alt 29. Mär 2013, 00:28
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
Christian Schär
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#2

AW: Menü dynamische wählbar machen

  Alt 29. Mär 2013, 00:50
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.
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
floppybe

Registriert seit: 24. Dez 2008
Ort: Belp
65 Beiträge
 
Delphi XE5 Architect
 
#3

AW: Menü dynamische wählbar machen

  Alt 29. Mär 2013, 12:32
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
Christian Schär
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#4

AW: Menü dynamische wählbar machen

  Alt 29. Mär 2013, 12:46
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;
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

AW: Menü dynamische wählbar machen

  Alt 29. Mär 2013, 13:17
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.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
floppybe

Registriert seit: 24. Dez 2008
Ort: Belp
65 Beiträge
 
Delphi XE5 Architect
 
#6

AW: Menü dynamische wählbar machen

  Alt 30. Mär 2013, 12:35
Hallo DP Gemeinde, Hallo Sir Rufo und Bummi,

Also das mit dem if FileExist habe ich mal gesucht, nur verstehe ich es noch nicht ganz.
Ich habe es nach meinem Verständnis mal so ausgelegt:

Delphi-Quellcode:
  if FileExists(./plugin/noten.dll) then
begin
  mainmenue1.noten1: enabled=true

end
else
begin
  mainmenue1.noten1: enabled=false
Nur geht das jetzt leider nicht, es gibt mir Fehler.

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
Christian Schär
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#7

AW: Menü dynamische wählbar machen

  Alt 30. Mär 2013, 13:06
MainMenu1.Noten1.Enabled := FileExists( '.\plugin\noten.dll' );
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Aviator

Registriert seit: 3. Jun 2010
1.611 Beiträge
 
Delphi 10.3 Rio
 
#8

AW: Menü dynamische wählbar machen

  Alt 30. Mär 2013, 13:09
Der Code zum aktivieren/deaktivieren lautet:

MainMenu1.Menuepunkt1.Enabled := false; oder
MainMenu1.Menuepunkt1.Enabled := true; Viel Spaß!

[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]
  Mit Zitat antworten Zitat
floppybe

Registriert seit: 24. Dez 2008
Ort: Belp
65 Beiträge
 
Delphi XE5 Architect
 
#9

AW: Menü dynamische wählbar machen

  Alt 30. Mär 2013, 15:15
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:
    MainMenu1: TMainMenu;
    Datei1: TMenuItem;
    Noten1: TMenuItem;
    Ohm1: TMenuItem;
    Volt1: TMenuItem;
    Ampere1: TMenuItem;
Und dasn steht beim FormCreate:

Delphi-Quellcode:
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;
Grüsse

Chris
Christian Schär
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#10

AW: Menü dynamische wählbar machen

  Alt 30. Mär 2013, 15:26
Noten1.Enabled := FileExists( '.\plugin\noten.dll' );
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:10 Uhr.
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