Autor Beitrag
Mia9
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Mi 22.12.10 13:54 
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
Einloggen, um Attachments anzusehen!
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10185
Erhaltene Danke: 1261

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: 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. ;)

_________________
There are 10 types of people - those who understand binary and those who don´t.
Mia9 Threadstarter
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Mi 22.12.10 14:01 
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1248
Erhaltene Danke: 187

XP - Server 2008R2
D2 - Delphi XE
BeitragVerfasst: Mi 22.12.10 14:14 
da ist ein Ampersand drin
ausblenden 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...

_________________
Das Problem liegt üblicherweise zwischen den Ohren H₂♂
DRY DRY KISS
Gerd Kayser
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 632
Erhaltene Danke: 121

Win 7 32-bit
Delphi 2006/XE
BeitragVerfasst: 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:
ausblenden 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 Threadstarter
Hält's aus hier
Beiträge: 7



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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:
ausblenden 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;