![]() |
Problem mit MenuItems - Werte übergeben?
Ich erstelle zur Laufzeit Instanzen einer Klasse.
Dabei wird für jede Instanz im MainMenü ein Eintrag angelegt. Wenn der Benutzer diesen Eintrag im Menü clickt, soll ein Fenster aufgehen, in dem die Wert der Instanz angezeigt werden sollen. Bisher sieht es so aus:
Delphi-Quellcode:
- neuesItem ist der neue Eintrag.
neuesItem := TMenuItem.Create(Self);
neuesItem.Name := neuInstanz.Name; neuesItem.Caption := 'Instanz '+zmWerte[0]; neuesITem.OnClick := InstanzEigClick; HotelForm.Instanzen.Add(neuesItem); - er bekommt den selben Namen, wie die Instanz - onClick bekommt folgende prozedur zu gewiesen...
Delphi-Quellcode:
- InstanzName soll der Name der des Items zugewiesen werden = Name der Instanz
procedure THotelForm.InstanzEigClick(Sender: TObject);
var InstanzName : ShortString; InstanzObj : TKlasse; begin InstanzName := (Sender as TMenuItem).Name; InstanzObj := TKlasse(FindComponent(InstanzName)); InstanzAnzeigenForm.wertsetzen(InstanzObj); InstanzAnzeigenForm.ShowModal; end; - dann wird nach der Instanz gesucht und InstanzObj zugewiesen - wertsetzen bewirkt, das die Edits im AnzeigenForm mit den Werten der Instanz belegt werden - dann soll das Formular mit den werten angezeigt werden Leider klappt dies nicht!!! Der Compiler meckert zwar nicht - aber die Edits im Formular haben unmögliche Werte, nur nicht die, die es haben soll! Was habe ich falsch gemacht? Gibt es eine andere Möglichkeit? Wie kann ich einem MenüItem zur Laufzeit sagen, was passiert, wenn jemand drauf klickt und kann gleichzeitig Werte mit übergeben? |
Re: Problem mit MenuItems - Werte übergeben?
1. Was sind das für Instanzen? Sind das sichtbare COntrols? Nur dann funktioniert das mit FindComponent.
2. Jedes Control (auch TMenuItem) hat eine Tag Eigenschaft in der du einen Beliebigen Wert speichern kannst. beim erstellen: neuesItem.Tag := Integer(neuInstanz) beim Auslesen: InstanzObj := TKlasse((Sender as TMenuItem).Tag) 3. Statt TKlasse(FindComponent(InstanzName)); würde ich (FindComponent(InstanzName) as TKlasse); benutzen, da so auch der Typ geprüft wird. Es kann nämlich durchaussein, dass er nicht das findet, was du erwartest. |
Re: Problem mit MenuItems - Werte übergeben?
Zitat:
Zitat:
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:16 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