AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Problem mit MenuItems - Werte übergeben?

Ein Thema von stoermi · begonnen am 6. Dez 2004 · letzter Beitrag vom 6. Dez 2004
Antwort Antwort
stoermi

Registriert seit: 1. Dez 2004
Ort: im Wald von Thüringen
75 Beiträge
 
Delphi 6 Enterprise
 
#1

Problem mit MenuItems - Werte übergeben?

  Alt 6. Dez 2004, 09:21
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 := TMenuItem.Create(Self);
neuesItem.Name := neuInstanz.Name;
neuesItem.Caption := 'Instanz '+zmWerte[0];
neuesITem.OnClick := InstanzEigClick;
HotelForm.Instanzen.Add(neuesItem);
- neuesItem ist der neue Eintrag.
- er bekommt den selben Namen, wie die Instanz
- onClick bekommt folgende prozedur zu gewiesen...

Delphi-Quellcode:
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;
- InstanzName soll der Name der des Items zugewiesen werden = Name der Instanz
- 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?
  Mit Zitat antworten Zitat
Benutzerbild von jim_raynor
jim_raynor

Registriert seit: 17. Okt 2004
Ort: Berlin
1.251 Beiträge
 
Delphi 5 Standard
 
#2

Re: Problem mit MenuItems - Werte übergeben?

  Alt 6. Dez 2004, 11:46
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.
Christian Reich
Schaut euch mein X-COM Remake X-Force: Fight For Destiny ( http://www.xforce-online.de ) an.
  Mit Zitat antworten Zitat
stoermi

Registriert seit: 1. Dez 2004
Ort: im Wald von Thüringen
75 Beiträge
 
Delphi 6 Enterprise
 
#3

Re: Problem mit MenuItems - Werte übergeben?

  Alt 6. Dez 2004, 16:36
Zitat von jim_raynor:
1. Was sind das für Instanzen? Sind das sichtbare COntrols? Nur dann funktioniert das mit FindComponent.
Oh, das wusste ich nicht. Ich dachte, dass findComponent immer geht. Es sind im übrigen Instanzen einer selbst erstellten Klasse. Geht also nicht mit findComponent

Zitat von jim_raynor:
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)
Das ist natürlich ne sehr gute Möglichkeit. Dann werde ich das wohl so machen müssen.

Zitat von jim_raynor:
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.
Gut zu wissen. Auch wenn es mir hier nicht hilft. Danke für deine Antwort!
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:55 Uhr.
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