Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Feststellen welches Menü item im submenü geklickt wurde (https://www.delphipraxis.net/88118-feststellen-welches-menue-item-im-submenue-geklickt-wurde.html)

EWeiss 10. Mär 2007 12:53


Feststellen welches Menü item im submenü geklickt wurde
 
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

Thorben_K 10. Mär 2007 12:58

Re: Feststellen welches Menü item im submenü geklickt wurde
 
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

EWeiss 10. Mär 2007 13:14

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

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.

Delphi-Quellcode:
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

Muetze1 10. Mär 2007 13:32

Re: Feststellen welches Menü item im submenü geklickt wurde
 
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...

EWeiss 10. Mär 2007 13:44

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

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

Muetze1 10. Mär 2007 13:52

Re: Feststellen welches Menü item im submenü geklickt wurde
 
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;

EWeiss 10. Mär 2007 14:04

Re: Feststellen welches Menü item im submenü geklickt wurde
 
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

Nuclear-Ping 10. Mär 2007 15:43

Re: Feststellen welches Menü item im submenü geklickt wurde
 
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?

EWeiss 10. Mär 2007 15:56

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

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

Muetze1 10. Mär 2007 16:15

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

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... :gruebel:

Zitat:

Zitat von EWeiss
Jetzt funktioniert auch diese Abfrage!

Und was hast du bezüglich dem Versuch zuvor verändert?


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:28 Uhr.
Seite 1 von 2  1 2      

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