Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   mainmenu items ändern (https://www.delphipraxis.net/173067-mainmenu-items-aendern.html)

Hartfrid Krause 5. Feb 2013 16:49

mainmenu items ändern
 
Ich habe in delphi 8.0
ein mainmenue mit drei Utermenues:
schraffiert
farbig
Druck.

Ich möchte die beiden ersten quasi als Kippschalter benutzen:
wenn ich schraffiert anklicke, dann soll die Zeichnung schraffiert werden und die Anzeige springt auf farbig.
Wenn ich dann farbig anklicke, so soll die Grafik farbig werden und der Schalter lautet schraffiert.

Im Endeffekt hätte ich dann nur zwei Schalter:
schraffirt bzw. farbig und Druck

Popov 5. Feb 2013 16:57

AW: mainmenu items ändern
 
Guck dir in der OH beim Thema Menü folgenden vier Punkte an: AutoCheck, Checked, RadioItem und GroupIndex an. Je nachdem was du brauchst ist es in der Regel eine Kombination aus einigen der vier Punkte.

Hartfrid Krause 6. Feb 2013 08:33

AW: mainmenu items ändern
 
Da komme ich noch nicht weiter.
Ich stelle mir etwa vor:
if mainmenu1.items....='schraffiert' then
begin
schraffieren(sender);
....umbenennen des ersten items in farbe...
exit;
end;

if mainmenue1.items....='farbig' then
begin
farbig(sender);
....umbenennen von farbig in schraffiert...
end;

aber wie ich den Namen der items abfrage und wie ich jeweils einen spezifischen Namen verändere, das weiß ich nicht.
Die Hinweise führen mich nicht weiter.

Furtbichler 6. Feb 2013 08:59

AW: mainmenu items ändern
 
Im OnClick-Event des TMenuItem-Eintrags kannst Du über den Parameter 'Sender' das MenuItem abfragen, auf das geklickt wurde. Dort kommt dein Code rein.

Hartfrid Krause 6. Feb 2013 10:00

AW: mainmenu items ändern
 
Ich stehe weiterhin auf dem schlauch:
im Objektinspektor rufe ich in onclick die procedure schraffiertfarbigpruef auf.

Die Abfragen
a. wie der Name des tmenueitem ist, um eine weitere procedure aufzurufen und
b. wie ich den Namen verändern kann
gelingt mir noch nicht


procedure tform8.schraffiertFarbigPruef(sender:TObject);
begin
//if TmenuItem. sender =('schraffiert') then
begin
schraffieren(sender);
//....umbenennen des ersten items in farbe...
exit;
end;
{if mainmenue1.items....='farbig' then
begin
farbig(sender);
....umbenennen von farbig in schraffiert...
end; }
end;

DeddyH 6. Feb 2013 10:05

AW: mainmenu items ändern
 
Von Delphi.NET hab ich keinen Plan, aber so ungefähr könnte es doch gehen:
Delphi-Quellcode:
procedure TDeinForm.DeinMenuItemClick(sender:TObject);
begin
  if Sender = DeinMenuItem then
    begin
      FSchraffiert := not FSchraffiert;
      if FSchraffiert then
        begin
          (* Code *)
        end
      else
        begin
          (* Code *)
        end;
    end;
end;
Wobei man FSchraffiert auch als private Property deklarieren könnte, welche im Setter dann die Änderungen vornimmt.

uligerhardt 6. Feb 2013 10:27

AW: mainmenu items ändern
 
Zitat:

Zitat von Hartfrid Krause (Beitrag 1202169)
Ich möchte die beiden ersten quasi als Kippschalter benutzen:
wenn ich schraffiert anklicke, dann soll die Zeichnung schraffiert werden und die Anzeige springt auf farbig.
Wenn ich dann farbig anklicke, so soll die Grafik farbig werden und der Schalter lautet schraffiert.

Im Endeffekt hätte ich dann nur zwei Schalter:
schraffirt bzw. farbig und Druck

Die gängigere Variante dürfte IMHO sein, alle drei Items anzuzeigen, aber die ersten beide zu einer "RadioGroup" zusammenzufassen. Das sollte mit den von Popov aufgelisteten Properties schnell gemacht sein.


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:57 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 by Thomas Breitkreuz