![]() |
Re: Feststellen welches Menü item im submenü geklickt wurde
Zitat:
Habe jetzt alle OnClick ereignisse auf die sub gelegt.
Delphi-Quellcode:
Das funktioniert zwar ..
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; 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 |
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 |
Re: Feststellen welches Menü item im submenü geklickt wurde
Zitat:
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 |
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 |
Re: Feststellen welches Menü item im submenü geklickt wurde
Zitat:
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 |
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. |
Re: Feststellen welches Menü item im submenü geklickt wurde
Zitat:
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 |
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 |
Re: Feststellen welches Menü item im submenü geklickt wurde
Zitat:
Ich habe es jetzt so gelößt.
Delphi-Quellcode:
Mein problem bleibt aber bestehen.
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; 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 |
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 14:12 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