| Autor |
Beitrag |
Martok
      
Beiträge: 3661
Erhaltene Danke: 604
Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
|
Verfasst: Do 30.08.07 19:38
Hallo!
Ich habe folgendes Problem: Es gibt mehrere MenuItems, und ich möchte nur mit denen etwas machen die ein bestimmtes OnClick-Ereignis haben.
Erster Versuch:
Delphi-Quelltext 1:
| if mi.Parent.Items[i].OnClick = MenuSelectHL then |
Geht logischerweise nicht, | Zitat: | | Nicht genügend wirkliche Parameter |
.
Dann habe ich mit verschiedenen @ und Klammern probiert, aber irgendwie will das nicht.
Wie macht man das richtig? Und sagt nicht, 'nimm den Tag', den brauch ich noch für was anderes.
mfg,
Martok
PS: Ich bin mir ziemlich sicher, dass das die falsche Sparte ist, aber in die anderen passts auch nicht viel mehr. Und in Sonstiges wollte ichs nicht setzen... 
_________________ "The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
|
|
Martok 
      
Beiträge: 3661
Erhaltene Danke: 604
Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
|
Verfasst: Fr 31.08.07 15:46
Ich weiß, es sind noch keine 24h rum... aber trotzdem schieb ich mal.
*schieb*
Das Problem stört mich nämlich doch irgendwie...
_________________ "The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
|
|
Martok 
      
Beiträge: 3661
Erhaltene Danke: 604
Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
|
Verfasst: Sa 01.09.07 19:11
*schieb weiter*
Hm... weiß etwa keiner wieso mich Delphi nicht testen lassen will ob ein Methodenzeiger auf eine Methode zeigt?
_________________ "The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
|
|
jakobwenzel
      
Beiträge: 1889
Erhaltene Danke: 1
XP home, ubuntu
BDS 2006 Prof
|
Verfasst: Sa 01.09.07 21:10
So könnte es vllt klappen:
Delphi-Quelltext 1: 2: 3: 4: 5:
| var foo:TNotifyEvent; begin foo:=MenuSelectHL; if mi.Parent.Items[i].OnClick = foo then |
_________________ I thought what I'd do was, I'd pretend I was one of those deaf-mutes.
|
|
Martok 
      
Beiträge: 3661
Erhaltene Danke: 604
Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
|
Verfasst: Sa 01.09.07 21:16
Ne, immer noch nicht. Er meint jetzt bei der linken Seite 'Nicht genug wirkl. Parameter'.
Also auf der OnClick-Seite... *idee* Schade...
Delphi-Quelltext 1: 2:
| foo2:= mi.Parent.Items[i].OnClick; if (foo2 = foo) then |
bringt auch nix... er beschwert sich immer im if... Wird doch wohl kein Compiler-Bug sein...
_________________ "The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
|
|
jaenicke
      
Beiträge: 19346
Erhaltene Danke: 1754
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Sa 01.09.07 22:02
|
|
Martok 
      
Beiträge: 3661
Erhaltene Danke: 604
Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
|
Verfasst: So 02.09.07 00:34
_________________ "The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
|
|
dummzeuch
      
Beiträge: 593
Erhaltene Danke: 5
Delphi 5 ent, Delphi 6 bis Delphi XE8 pro
|
Verfasst: So 02.09.07 14:22
|
|
Martok 
      
Beiträge: 3661
Erhaltene Danke: 604
Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
|
Verfasst: So 02.09.07 14:27
Das ging auch nicht. War gleich das erste was ich probiert hatte. Deswegen wundere ich mich ja so 
_________________ "The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
|
|
dummzeuch
      
Beiträge: 593
Erhaltene Danke: 5
Delphi 5 ent, Delphi 6 bis Delphi XE8 pro
|
Verfasst: So 02.09.07 15:55
Hi,
Martok hat folgendes geschrieben: | | Das ging auch nicht. War gleich das erste was ich probiert hatte. Deswegen wundere ich mich ja so ;) |
Hm, ich haette geschworen es geht.
Definitiv funktionieren tut dies:
Delphi-Quelltext 1: 2:
| if (TMethod(mi.Parent.Items[i].OnClick).Code = TForm1.MenuSelectHL) and (TMethod(mi.Parent.Items[i].OnClick).Data = self) then |
Wenn Du sicher bist, dass Du immer nur eine Instanz der Klasse TForm1 hast, kannst Du auch die zweite Ueberpruefung weglassen. Aber Vorsicht, damit bin ich schonmal heftig auf die Nase geflogen. Borland hatte naemlich Code in der VCL, die auch nur .code ueberprueft hatte (ich glaube das war in TAction.SetOnExecute) und ich hatte dieselbe Methode einer anderen Instanz der gleichen Klasse zugewiesen. Und ich wunderte mich dann, dass immernoch die alte Methode aufgerufen wurde.
twm
edit: zweiter Check sollte natuerlich auf .data gehen
Zuletzt bearbeitet von dummzeuch am So 02.09.07 17:35, insgesamt 1-mal bearbeitet
|
|
Martok 
      
Beiträge: 3661
Erhaltene Danke: 604
Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
|
Verfasst: So 02.09.07 16:33
Interessant... auf TMethod gecastet hatte ich auch mal... wusste dann aber nicht was ich damit machen soll. Naja, ist ja jetzt auch wurscht 
_________________ "The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
|
|