AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Dynamisches Menü erstellt/gesteuert von DLL's
Thema durchsuchen
Ansicht
Themen-Optionen

Dynamisches Menü erstellt/gesteuert von DLL's

Ein Thema von Cyberaxx · begonnen am 16. Mai 2007 · letzter Beitrag vom 29. Jun 2007
 
Benutzerbild von Cyberaxx
Cyberaxx

Registriert seit: 15. Jul 2005
311 Beiträge
 
Delphi XE5 Professional
 
#13

Re: Dynamisches Menü erstellt/gesteuert von DLL's

  Alt 29. Jun 2007, 09:06
Auch wenn es schon was her ist...

Hab es nun etwas anders gelöst, naja zumindest teilweise.

Zitat von DGL-luke:
Hallo, warum nicht so:

Delphi-Quellcode:
function NumOptions: Integer;
function GetOption(NOption: Integer; out OnClickEvent: TNotifyEvent): PChar;

function NumSubOptions(NOption: Integer): Integer;
function GetSubOption(NOption, NSubOption: Integer; out OnClickEvent: TNotifyEvent): PChar;
Die relativ triviale Implementierung verschweige ich da jetzt mal. wie du das ganze in deine hauptanwendung dann importierst, sollte klar sein.
Jede DLL soll genau nur einen wirklichen Menüeintrag haben. Also auch nur einen Menüclick.
Ist hier noch nicht in einer DLL, ist ja nur zum test.

Delphi-Quellcode:
type
  TPlugin = class(TObject)
  private
    procedure Click(Sender: TObject);
  public
    function NumOptions: Integer;
    function NumSubMainOptions: Integer;
    function GetOption(out OnClickEvent: TNotifyEvent): PChar;
  end;
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
  var
    OnClickEvent: TNotifyEvent;
    MainItems: Integer;
    MainSubItems: Integer;
    MainItemCount: Integer;
    I: Integer;
    TmpItem: TMenuItem;
    TmpSubItem: TMenuItem;
    MenuItem: TMenuItem;
begin
  Plugin := TPlugin.Create; // Plugin Erstellen

  MainItems := Plugin.NumOptions; // Anzahl der Hauptelemente holen
  MainSubItems := Plugin.NumSubMainOptions; // Anzahl der Elemente unter dem Hauptelement

  while JvMainMenu1.Items.Count <= MainItems do // Weniger Hauptelemente vorhanden, Elemente hinzufüge
    begin
    TmpItem := TMenuItem.Create(JvMainMenu1);
    TmpItem.Caption := 'Main';
    Tmpitem.Enabled := False;

    JvMainMenu1.Items.Insert(JvMainMenu1.Items.Count, TmpItem);
    end;

  TmpItem := JvMainMenu1.Items[MainItems];
  TmpItem.Enabled := True;

  while TmpItem.Count <= MainSubItems do
    begin
    TmpSubItem := TMenuItem.Create(Self);
    TmpSubitem.Caption := 'MainSub';
    TmpSubItem.Enabled := False;

    Tmpitem.Insert(TmpItem.Count, TmpSubItem);
    end;

  TmpSubItem := TmpItem.Items[MainSubItems];
  TmpSubItem.Enabled := True;

  MenuItem := TMenuitem.Create(Self);
  MenuItem.Caption := Plugin.GetOption(OnClickEvent);
  MenuItem.OnClick := OnClickEvent;

  TmpSubItem.Insert(TmpSubitem.Count, MenuItem);
end;
Damit bekomme ich die Anzahl der Menüeinträge und das dazugehörige Untermenü aber wie könnte man das ganze denn noch variabler gestallten, wenn ich dazu noch ein Untermenü habe oder gar noch einge Untermenüs. Sprich ich kenne die Anzahl der Untermenüs und deren Untermenüs nicht.

Delphi-Quellcode:
Frachtenverwaltung
 - Lager
   - Planung
     - Listen
       - Beladelist
Daniel
Das Aufwachen aus einem boesen Traum muss einen nicht erleichtern. Es kann einen auch erst richtig gewahr werden lassen, was man Furchtbares getraeumt hat, vielleicht sogar welcher furchtbaren Wahrheit man im Traum begegnet ist!
  Mit Zitat antworten Zitat
 


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 21:00 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