Delphi-PRAXiS
Seite 2 von 2     12   

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 16:31

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

Zitat von Muetze1
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?

Sorry hab da wohl die falsche Sprache angegeben :oops: sollte natürlich Delphi sein
Habe jetzt alle OnClick ereignisse auf die sub gelegt.

Delphi-Quellcode:
procedure TVisForm.ModuleClick(Sender: TObject);
Var
 i : Integer;
 mi: TMenuItem;
 CurrentItem: Integer;

begin
   mi := Sender as TMenuItem;
   CurrentItem:= mi.tag;

   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...');

  for i := 0 to 6 do
        If i = CurrentItem Then
            mi.Checked := true
        else
            mi.Checked := false;

end;
Das funktioniert zwar ..
Aber wie kann ich jetzt außerhalb der form den Menüeintrag abfragen welcher angeklickt wurde ?
Wenn ich immer noch nicht weiss wie ich an die submenuitems gelange.

Auch wird mir so der eintrag nicht als checked makiert ...

gruss Emil

matashen 10. Mär 2007 16:35

Re: Feststellen welches Menü item im submenü geklickt wurde
 
procedure TVisForm.ModuleClick(Sender: TObject);
Var
i : Integer;
mi: TMenuItem;
CurrentItem: Integer;

begin
mi := Sender as TMenuItem;
CurrentItem:= mi.tag;

If ( Sender = Spectrum1 ) Then
Spectrum1.checked:= not spectrum.checked usw. usw.


[delphi]

Ich hoffe das hilft dir

EWeiss 10. Mär 2007 16:40

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

Zitat von matashen
procedure TVisForm.ModuleClick(Sender: TObject);
Var
i : Integer;
mi: TMenuItem;
CurrentItem: Integer;

begin
mi := Sender as TMenuItem;
CurrentItem:= mi.tag;

If ( Sender = Spectrum1 ) Then
Spectrum1.checked:= not spectrum.checked usw. usw.


[delphi]

Ich hoffe das hilft dir

Verstehe ich nicht!
mi ist doch als TMenuItem declariert findet also den richtigen eintrag (Index) eingestellt im Tag des menüItem

Warum schaltet mi dann diesen eintrag nicht auf true
Der Tag wird doch auch erkannt!

gruss Emil

matashen 10. Mär 2007 16:43

Re: Feststellen welches Menü item im submenü geklickt wurde
 
Der Tag ist eine Eigenschaft des Objects Submenuitem von Typ Integer(Glaub ich..).
Das Checked ist eine Eigenschaft des Objects Submenuitem von Typ Boolean(weis ich!).
Wenn du also den Tag einen Wert zuweist hat das noch lang nix mit der Eigenschaft Checked zu tun !

Gruß Matthias

EWeiss 10. Mär 2007 16:48

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

Zitat von matashen
Der Tag ist eine Eigenschaft des Objects Submenuitem von Typ Integer(Glaub ich..).
Das Checked ist eine Eigenschaft des Objects Submenuitem von Typ Boolean(weis ich!).
Wenn du also den Tag einen Wert zuweist hat das noch lang nix mit der Eigenschaft Checked zu tun !

Gruß Matthias

Korrekt!

Ich rede aber nicht von bool, integer oder Tag .. sorry
sondern davon das mi als MenuItem declariert ist.

Also theoretisch alle eigenschaften des MenuItem besitzen muss!
Sonst könnte ich ja den Tag auch nicht abfragen oder ?

Warum wird dann wenn ich mi.checked := True angebe
der Menüeintrag nicht auf true gesetzt ? Wenn mi den Menüeintrag repräsentiert ?

begin
EDIT:

Dann brauche ich mi auch nicht declarieren da es in dem Fall unsinnig wäre
und die Tag eigenschaften bringen dann auch nichts.

was ich verstehe das er unterumständen die eigenschaften der anderen menüs nicht erkennt
da er hier ja nur das aktuelle angeklickte Menü erkennt.
Aber das muss mindestens auf True gesetzt werden können.
end EDIT

gruss Emil

matashen 10. Mär 2007 16:55

Re: Feststellen welches Menü item im submenü geklickt wurde
 
Bist du schon mal mit dem debugger durchegegangen was der Code macht.

Habs mal mit dienem Code bei mir versucht nachzustellen. Klappt wunderbar.

EWeiss 10. Mär 2007 16:58

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

Zitat von matashen
Bist du schon mal mit dem debugger durchegegangen was der Code macht.

Habs mal mit dienem Code bei mir versucht nachzustellen. Klappt wunderbar.

Was mein Schnipsel ?
Ja er geht auch durch ohne ärger.
Schaltet aber den eintrag nicht auf true = checked

Keine ahnung warum.

EDIT:
Die MessageBox hat das problem verursacht.

Aber funktionieren tut das ganze immer noch nicht.
Habe immer noch nicht die info wie ich an die submenuitems gelange
Es gibt nix im inet keine Seite hat ein Sample wo man sich das mal anschauen kann.

Auch hier gibt es nix ;)
Wär mal was für die codelib

gruss

matashen 10. Mär 2007 17:23

Re: Feststellen welches Menü item im submenü geklickt wurde
 
Liste der Anhänge anzeigen (Anzahl: 1)
mein letzter Versuch.(Mein Badewasser wird grad kalt !


hab dir schnell was zusammengebastelt und angehängt.

Vielleicht kannst du damit dein Problem finden

EWeiss 10. Mär 2007 17:47

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

Zitat von matashen
mein letzter Versuch.(Mein Badewasser wird grad kalt !


hab dir schnell was zusammengebastelt und angehängt.

Vielleicht kannst du damit dein Problem finden

Danke für deine mühe ;)

Ich habe es jetzt so gelößt.

Delphi-Quellcode:
procedure TVisForm.ModuleClick(Sender: TObject);
Var
 IntI       : Integer;
 mi         : TMenuItem;
 CurrentItem : Integer;

begin
   mi         := Sender as TMenuItem;
   CurrentItem := mi.tag;
   mi.checked := True;

  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 If ( Sender = Polygone1 ) Then
    ShowMessage('Das war Polygone')
  Else If ( Sender = CompactDisc1 ) Then
    ShowMessage('Das war CompactDisc')
  Else If ( Sender = Plasma1 ) Then
    ShowMessage('Das war Plasma')
  Else If ( Sender = Water1 ) Then
    ShowMessage('Das war Water');

    for IntI := 0 to 6 do
      if IntI <> CurrentItem then
      case IntI of
      0:
        Spectrum1.checked := False;
      1:
        VuBox1.checked := False;
      2:
        Peristalsis1.checked := False;
      3:
        Polygone1.checked := False;
      4:
        CompactDisc1.checked := False;
      5:
        Plasma1.checked := False;
      6:
        Water1.checked := False;
      end;
end;
Mein problem bleibt aber bestehen.

Innerhalb der form ist das nun geklärt aber ich muss das submenuItem auch
außerhalb der Form erkennen können welcher index(eintrag) nun gewählt ist.
Da ich hier eine case anweisung einbauen muss welche daraufhin das
im Menu gewählte Visualisierungs-Modul ausführt.

Geht das generell oder muss ich mir da externe variablen einrichten ?

gruss

matashen 10. Mär 2007 18:19

Re: Feststellen welches Menü item im submenü geklickt wurde
 
So bin wieder sauber :)


Wenn du das mit TVisForm.Spectrum1.checked prüfst mußt du nichts eintragen. Du kannst von jeder Form der Anwendung aus auf jede andere Form zugreifen. Du darfst nur nicht vergessen die entsprechende Zielform anzugeben, sonst geht die aktuelle form von self.spectrum1.checked aus und das gibts dann ja nicht.

Gruß Matthias


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:55 Uhr.
Seite 2 von 2     12   

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