Hallo,
um den Ordinaltyp kommst du bei der CASE-Anweisung nicht drum herum. Entweder du machst es so, wie dir Jens in Beitrag #3 gezeigt hat oder du musst tricksen: Weise der Tag-Property der MenuItems jeweils eine eindeutige Konstante zu und werte diese dann aus (siehe Beitrag #7) oder verwende die Eigenschaft Command eines MenuItems, welche abhängig von der Position des Items im MainMenu ist. Noch eine Alternative wäre die Funktion AnsiIndexText():
Delphi-Quellcode:
procedure TForm1.Action1Execute(Sender: TObject);
var
vName: String; // Variable die nachher vom Case of überprüft werden soll
begin
with Sender as TAction do
if ActionComponent is TMenuItem then
begin
vName := TMenuItem(ActionComponent).Name;
Label1.Caption := vName;
case AnsiIndexText(vName, [MenuItem1.Name, MenuItem2.Name]) of
0: {MenuItem1};
1: {MenuItem2};
end;
end;
end;
Mit dieser Funktion kannst du den benötigten Ordinaltyp über die Positionsbestimmung in einem String-Array erhalten.
Freundliche Grüße