AGB  ·  Datenschutz  ·  Impressum  







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

Markiertes MainMenu-Item in Label ausgeben

Ein Thema von IcyVeins · begonnen am 16. Mai 2008 · letzter Beitrag vom 16. Mai 2008
Antwort Antwort
IcyVeins

Registriert seit: 31. Mär 2008
9 Beiträge
 
#1

Markiertes MainMenu-Item in Label ausgeben

  Alt 16. Mai 2008, 23:23
Also,
nachdem ich die tolle Idee hatte, irgendwie ein OnClick in das dynamisch erstellte Menü zu hauen, bin ich zu dem Schluss gekommen, dass ich es auf nem anderen Weg versuchen sollte ( Ja, ich mach das noch nicht lange ). Also würde ich gerne die Caption des markierten Menü-items in ein Label ausgeben und dann ein globales OnClick mit ein paar Abfragen verwenden...
Hier mal der Code zum erzeugen des Menüs... Wenn mir jemand genau erklären könnte, wie ich es mit ner direkten OnClick-Abfrage hinbekomme, wär ich natürlich auch nicht abgeneigt


Über den Code:
Er dient dazu, die Ordnerstruktur eines Verzeichnisses in ein Menü zu packen, so wie die Windows Startleiste...
Delphi-Quellcode:
Procedure CreateTreeMenus( Path : String; Root : TMenuItem );
Var
   SR : TSearchRec;
   Result : Integer;
   Item : TMenuItem;
Begin
    Path := IncludeTrailingBackSlash( Path );
    Result := FindFirst( Path + '*.*', faDirectory, SR );
    While ( Result = 0 ) Do Begin
        If ( ( ( SR.Attr And faDirectory ) <> 0 ) And ( SR.Name <> '.' ) And ( SR.Name <> '..' ) ) Then Begin
            Item := TMenuItem.Create(Item);
            Item.Caption := SR.Name;
            Root.Add( Item );
            CreateTreeMenus( Path + SR.Name, Item );
        End;
        Result := FindNext( SR );
    End;
    SysUtils.FindClose( SR );
End;
  Mit Zitat antworten Zitat
Nuclear-Ping
(Gast)

n/a Beiträge
 
#2

Re: Markiertes MainMenu-Item in Label ausgeben

  Alt 16. Mai 2008, 23:33
Du musst halt einen Ereignis-Handler für den OnClick-Event machen. Ausserdem warum übergibst du bei TMenuItem.Create das Item selber als Owner ... ?
Delphi-Quellcode:
interface

type
  TForm1 = class (TForm)
    MainMenu1: TMainMenu; // ... oder so, dein Main-Menü halt
    // ...
  private
    procedure CreateTreeMenus (Path : String; Root : TMenuItem);
    procedure MyMenuOnClick (Sender: TObject);
    // ...
  end;

implementation
    
procedure TForm1.CreateTreeMenus (Path : String; Root : TMenuItem);
Var
   SR : TSearchRec;
   Result : Integer;
   Item : TMenuItem;
Begin
    Path := IncludeTrailingBackSlash( Path );
    Result := FindFirst( Path + '*.*', faDirectory, SR );
    While ( Result = 0 ) Do Begin
        If ( ( ( SR.Attr And faDirectory ) <> 0 ) And ( SR.Name <> '.' ) And ( SR.Name <> '..' ) ) Then Begin
            Item := TMenuItem.Create(Root); // wenn du schon ein Root übergibst, nutz es auch
            Item.Caption := SR.Name;
            Item.OnClick := MyMenuOnClick;
            Root.Add( Item );
            CreateTreeMenus( Path + SR.Name, Item );
        End;
        Result := FindNext( SR );
    End;
    SysUtils.FindClose( SR );
End;

procedure TForm1.MyMenuOnClick (Sender: TObject);
begin
  ShowMessage ((Sender as TMenuItem).Caption);
end;
  Mit Zitat antworten Zitat
IcyVeins

Registriert seit: 31. Mär 2008
9 Beiträge
 
#3

Re: Markiertes MainMenu-Item in Label ausgeben

  Alt 16. Mai 2008, 23:38
Danke erstmal
Das war mal ein Code-Schnippsel aus den weiten des I-Nets...
Es funktioniert soweit, nur wenn ich jetzt auf ein Verzeichnis gehe, registriert er das als Klick, wenn er das Menü aufklappt... Kann man das irgendwie noch verfeinern?
  Mit Zitat antworten Zitat
Nuclear-Ping
(Gast)

n/a Beiträge
 
#4

Re: Markiertes MainMenu-Item in Label ausgeben

  Alt 16. Mai 2008, 23:50
Beim Aufruf eines Untermenüs wird ein OnClick ausgelöst? Aber nur weil du auch klickst, oder?

In dem MyMenuOnClick kannst du den Sender in eine TMenuItem-Variable casten (Item := (Sender as TMenuItem)) und da prüfen, ob er Untermenüs hat (weiß ich grad nicht aus dem Kopf, gibt da aber was wie ItemCount oder so). Wenn ja, wird die Funktion verlassen, wenn nein dann weiter.
  Mit Zitat antworten Zitat
IcyVeins

Registriert seit: 31. Mär 2008
9 Beiträge
 
#5

Re: Markiertes MainMenu-Item in Label ausgeben

  Alt 16. Mai 2008, 23:58
Es wird auch ohne Klick ausgelöst, habs aber dank deinem Tipp hinbekommen!
  Mit Zitat antworten Zitat
Antwort Antwort


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 18:35 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