Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - MenuItem Aufschrift wechseln


Mia9 - Mi 22.12.10 13:54
Titel: MenuItem Aufschrift wechseln
Hallo!
In meinem Programm möchte ich eine Pause-Funktion einbauen, dazu verwende ich ein MainMenu. Das Problem ist, dass ich die Menüaufschrift wechseln lassen möchte, d.h. wenn ich Pause drücke soll da fortfahren stehen und umgekehrt. Habe gedacht ich mache das mit MainMenu.Item[].Caption, das funktioniert aber nicht.
Gibt es dazu i-eine Möglichkeit wie ich das hinbekommen kann?
Danke!


Moderiert von user profile iconNarses: Topic aus Sonstiges (Delphi) verschoben am Mi 22.12.2010 um 12:55


Narses - Mi 22.12.10 13:57

Moin und :welcome: im Forum!

Du hast die compilierte EXE-Datei hochgeladen, leider hilft uns das nicht, dir zu helfen. Wir bräuchten den entscheidenden Abschnitt aus dem Quelltext, am besten direkt hier mit den Delphi-Tags in den Beitrag geschrieben. Wenn du den richtigen Abschnitt nicht finden kann, dann packe bitte alle *.pas, *.dfm und die *.dpr-Datei in ein ZIP-File hier in den Anhang. :idea: (btw: es würde mich nicht wundern, wenn überhaupt nur sehr wenige Leute eine EXE-Datei aus einer unbekannten Quelle runterladen und starten... :nixweiss:)

cu
Narses

//EDIT: Ah, du hast es schon gemerkt. ;)


Mia9 - Mi 22.12.10 14:01


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
procedure TForm1.Pause1Click(Sender: TObject);
begin
if MainMenu1.Items[0].Caption='Pause' then
begin
Timer1.Enabled:= False;
MainMenu1.Items[0].Caption:='Fortfahren';
exit;
end;
if MainMenu1.Items[0].Caption='Fortfahren' then
begin
Timer1.Enabled:= True;
MainMenu1.Items[0].Caption:='Pause'
end;


bummi - Mi 22.12.10 14:14

da ist ein Ampersand drin

Delphi-Quelltext
1:
if StripHotkey(MainMenu1.Items[0].Caption)='Pause' then                    

etc...
Du kannst statt über Items[x] auch über die Instanz des Items zugreifen.
Ich würde Dir gerne Actions ans Herz legen...


Gerd Kayser - Mi 22.12.10 14:27

user profile iconMia9 hat folgendes geschrieben Zum zitierten Posting springen:
Habe gedacht ich mache das mit MainMenu.Item[].Caption, das funktioniert aber nicht.

Beispiel:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
procedure TForm1.Pause1Click(Sender: TObject);
begin
  if Pause1.Caption = '&Pause' then
    Pause1.Caption := '&Fortsetzen'
  else
    Pause1.Caption := '&Pause';
end;

Wenn die Eigenschaft MainMenu.AutoHotKeys auf maManual steht, die "&"-Zeichen weglassen.


Mia9 - Mi 22.12.10 14:53

Danke, funktioniert jetzt. Denn das mit Pause1.Caption war auch meine erste und einfachere Idee, die hatte aber auch nicht funktioniert. Da ich jetzt aber auf maManual, wie Gerd Kayser gesagt hat, umgestellt habe, funktioniert es.


jaenicke - Mi 22.12.10 16:33

Speichere den Zustand besser außerhalb der visuellen Komponenten. Die Daten und Zustände in die GUI mit reinzubringen ist keine gute Idee.

Wenn es denn aber wirklich sein muss, dann benutze am besten Tag:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
procedure TForm1.Pause1Click(Sender: TObject);
begin
  if Pause1.Tag = 0 then
  begin
    Pause1.Caption := 'Fortsetzen';
    Pause1.Tag := 1;
  end
  else
  begin
    Pause1.Caption := 'Pause';
    Pause1.Tag := 0;
  end;
end;