AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Feststellen welches Menü item im submenü geklickt wurde
Thema durchsuchen
Ansicht
Themen-Optionen

Feststellen welches Menü item im submenü geklickt wurde

Ein Thema von EWeiss · begonnen am 10. Mär 2007 · letzter Beitrag vom 10. Mär 2007
Antwort Antwort
Seite 1 von 2  1 2      
EWeiss
(Gast)

n/a Beiträge
 
#1

Feststellen welches Menü item im submenü geklickt wurde

  Alt 10. Mär 2007, 13:53
Wieder Menü!

In VB kann ich einen Submenü für jeden eintrag einen Index zuweisen..
und damit vergleichen welcher eintrag geklickt wurde.

Delphi-Quellcode:
Private Sub mnuEffectes_Click(Index As Integer)
    Select Case Index ... bal, bla. bla ...
wie geht das in Delphi ?

umstellen ist schwierig man kennt die meisten functionen noch nicht.

gruss Emil
  Mit Zitat antworten Zitat
Thorben_K

Registriert seit: 22. Okt 2006
Ort: Darmstadt
105 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Feststellen welches Menü item im submenü geklickt wurde

  Alt 10. Mär 2007, 13:58
Da ich mich mit VB net gut auskenne, bin ich mir net sicher ob das ist was du suchst, aber jeder Menu eintrag hat die eigenschaft TAG, die ist glaube ich was du suchst. Du musst den nur setzen, wird nicht automatisch gemacht

Thorben
Thorben
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#3

Re: Feststellen welches Menü item im submenü geklickt wurde

  Alt 10. Mär 2007, 14:14
Zitat von Thorben_K:
Da ich mich mit VB net gut auskenne, bin ich mir net sicher ob das ist was du suchst, aber jeder Menu eintrag hat die eigenschaft TAG, die ist glaube ich was du suchst. Du musst den nur setzen, wird nicht automatisch gemacht

Thorben
Mit dem Tag ist ne gute Idee
Kann man verwenden..

Nur wie komme ich jetzt an das submenuitem ?
Hab da nix gefunden.

case Vismodule1.Items.Tag of ... gibt mir ja nur den Tag vom Vismodule1 nicht aber die von deren Submenü
was muss dann aber nach Vismodule1 ... stehen ?

gruss Emil
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#4

Re: Feststellen welches Menü item im submenü geklickt wurde

  Alt 10. Mär 2007, 14:32
Der Parameter Sender ist die Instanz des SubMenus, welches geklickt wurde. Vergleiche dies doch einfach mit deinem Submenu-Items der Form. Wenn der Vergleich stimmt, der war's dann.

Wenn du ganz allgemein auf das MenuItem zugreifen willst, dann mache einen typecast von Sender auf TMenuItem...
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#5

Re: Feststellen welches Menü item im submenü geklickt wurde

  Alt 10. Mär 2007, 14:44
Zitat von Muetze1:
Der Parameter Sender ist die Instanz des SubMenus, welches geklickt wurde. Vergleiche dies doch einfach mit deinem Submenu-Items der Form. Wenn der Vergleich stimmt, der war's dann.

Wenn du ganz allgemein auf das MenuItem zugreifen willst, dann mache einen typecast von Sender auf TMenuItem...
Könnte das so funktionieren ?


Delphi-Quellcode:
procedure TVisForm.Vismodule1Click(Sender: TObject);
begin
  case Vismodule1.items[Vismodule1.MenuIndex].Tag of
    0: ;
    1: ;
    2: ;
    3: ;
    4: ;
    5: ;
    6: ;
  end;
end;
Hab da noch ncihts eingetragen das ich es testen könnte..
Habe den Tag's die jeweiligen Indexe übergeben.

gruss Emil
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#6

Re: Feststellen welches Menü item im submenü geklickt wurde

  Alt 10. Mär 2007, 14:52
Entweder über Sender und Instanzenvergleich:

Delphi-Quellcode:
Procedure TBlubbv.Click(Sender: TObject);
Begin
  If ( Sender = miMeinMenuItem1 ) Then
    ShowMessage('Das war miMeinMenuItem1')
  Else If ( Sender = miMeinMenuItem2 ) Then
    ShowMessage('Das war miMeinMenuItem2')
  Else If ( Sender = miMeinMenuItem3 ) Then
    ShowMessage('Das war miMeinMenuItem3')
  Else
    ShowMessage('Das war irgendwas anderes...');
End;
Oder über den Tag:

Delphi-Quellcode:
Procedure TBlubb.Click(Sender: TObject);
Begin
  If Sender Is TComponent Then
  Begin
    Case TComponent(Sender).Tag Of
      1: ShowMessage('Tag = 1');
      2: ShowMessage('Tag = 2');
      3: ShowMessage('Tag = 3');
      4: ShowMessage('Tag = 4');
    End;
  End;
End;
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#7

Re: Feststellen welches Menü item im submenü geklickt wurde

  Alt 10. Mär 2007, 15:04
Habe das mal nachvollzogen
komme aber nicht auf das submenuitem

Delphi-Quellcode:
procedure TVisForm.Vismodule1Click(Sender: TObject);
Begin
  If ( Sender = Spectrum1 ) Then
    ShowMessage('Das war Spectrum1')
  Else If ( Sender = VuBox1 ) Then
    ShowMessage('Das war VuBox1')
  Else If ( Sender = Peristalsis1 ) Then
    ShowMessage('Das war Peristalsis1')
  Else
    ShowMessage('Das war irgendwas anderes...');

end;
Er springt immer in 'Das war irgendwas anderes...'
Sobald ich mit der maus auf den eintrag Vismodule1 komme
Ein klick Event kann ich dann nicht mehr auslösen.

Auch nach den kommentieren dieser zeile komm ich niemals ins submenü ....


Verstehe nicht das es so kompliziert ist an den eintrag eines Menüs zu gelangen

Sorry das ich nochmal mit VB anfange..
Ich gebe im Designer einen Index für den Eintrag ein.
Dann wird beim aufruf direkt ne sub angelegt wo ein Index mit übergeben wird.

Delphi-Quellcode:
Private Sub mnuVis_Click(Index As Integer)

    DoEvents
    Select Case Index
    Case 0, 1, 2, 3, 4
        VisAll = False
    Case 5
        VisAll = True
    End Select
    mnuVis(Index).Checked = True
    CurFlame = Index
    For Index = 0 To 5
        If Index <> CurFlame Then
            mnuVis(Index).Checked = False
        End If
    Next Index
    If Index = 5 Then
        CurFlame = 4
    End If
    SaveSetting EMPLAYER, "Visual", "CurFlame", CurFlame

End Sub
Dann kann ich mit dem Index arbeiten ohne irgendwelche probleme
oder etwas anderes dafür zu initialisieren.

gruss
  Mit Zitat antworten Zitat
Nuclear-Ping
(Gast)

n/a Beiträge
 
#8

Re: Feststellen welches Menü item im submenü geklickt wurde

  Alt 10. Mär 2007, 16:43
Ich kenne mich mit Delphi.NET zwar nicht aus, aber wieso weißt du nicht einfach für jedes SubMenu-Item den gleichen OnClick-Event zu?

In dem Event castest du den Sender einfach auf TMenuItem (oder wie das in Delphi.NET heisst) und schon hast du das geklickte Item.

Delphi-Quellcode:
procedure TVisForm1.FooMenuItemClick (Sender: TObject);
begin
  ShowMessage ((Sender as TMenuItem).Caption);
end;
Geht das nicht?
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#9

Re: Feststellen welches Menü item im submenü geklickt wurde

  Alt 10. Mär 2007, 16:56
Zitat von Nuclear-Ping:
Ich kenne mich mit Delphi.NET zwar nicht aus, aber wieso weißt du nicht einfach für jedes SubMenu-Item den gleichen OnClick-Event zu?

In dem Event castest du den Sender einfach auf TMenuItem (oder wie das in Delphi.NET heisst) und schon hast du das geklickte Item.

Delphi-Quellcode:
procedure TVisForm1.FooMenuItemClick (Sender: TObject);
begin
  ShowMessage ((Sender as TMenuItem).Caption);
end;
Geht das nicht?
Hi kenn mich in Delphi.NET auch nicht aus
Aber das war sehr Hilfreich.

Jetzt funktioniert auch diese Abfrage!

Delphi-Quellcode:
procedure TVisForm.Vismodule1Click(Sender: TObject);
Begin
  If ( Sender = Spectrum1 ) Then
    ShowMessage('Das war Spectrum1')
  Else If ( Sender = VuBox1 ) Then
    ShowMessage('Das war VuBox1')
  Else If ( Sender = Peristalsis1 ) Then
    ShowMessage('Das war Peristalsis1')
  Else
    ShowMessage('Das war irgendwas anderes...');

end;
gruss Emil
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#10

Re: Feststellen welches Menü item im submenü geklickt wurde

  Alt 10. Mär 2007, 17:15
Zitat von EWeiss:
Hi kenn mich in Delphi.NET auch nicht aus
Du hast aber bei deinem ersten Beitrag angegeben, dass du mit .NET arbeitest...

Zitat von EWeiss:
Jetzt funktioniert auch diese Abfrage!
Und was hast du bezüglich dem Versuch zuvor verändert?
  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 11:16 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