![]() |
Vereinfachung bei MainMenü mit Hackerl (check)
Hallo,
gibt es eigentlich eine möglichkeit diesen Quellcode zu verkürzen?? Ein Schleife?? Mir fällt nämlich nichts ein....
Delphi-Quellcode:
Es handelt sich hierbei um ein TMenueItem das fünf unter TMenueItem hat.
procedure TForm1.KIClick(Sender: TObject);
begin // Check von allen entfernen ki_SehrLeicht.Checked:=false; ki_Leicht.Checked:=false; ki_normal.Checked:=false; ki_schwer.Checked:=false; ki_sehrschwer.Checked:=false; // Check beim Sender machen if sender=ki_SehrLeicht then ki_SehrLeicht.Checked:=true else if sender=ki_leicht then ki_Leicht.Checked:=true else if sender=ki_normal then ki_normal.Checked:=true else if sender=ki_schwer then ki_schwer.Checked:=true else ki_sehrschwer.Checked:=true; end; Der Benutzer soll einfach einstellen können wie stark die KI ist, vor die gewählte Schwierigkeit kommt ein Hackerl..... Ferby |
Re: Vereinfachung bei MainMenü mit Hackerl (check)
Hallo,
packe Deine Menue-Items in eine Actionlist und stelle dort die Eigenschaft "AutoCheck" auf True und die Eigenschaft "GroupIndex" auf einen Wert größer 0. |
Re: Vereinfachung bei MainMenü mit Hackerl (check)
Die Lösung für dein Problem ist die Funktion
![]() Du könntest das wie folgt schreiben:
Delphi-Quellcode:
procedure TForm1.KIClick(Sender: TObject);
const { Einträge im MainMenu oder Popup } mItems : array[0..4] of String = ('ki_SehrLeich','ki_Leicht','ki_Normal','ki_Schwer','ki_SehrSchwer'); var i : Integer; nItem : TMenuItem; begin for i := 0 to 4 do begin nItem := (FindComponent(mItems[i])) as TMenuItem; // Holen des Eintrages if (Sender = nItem) then begin nItem.Checked := True; end else nItem.Checked := False; end; end; |
Re: Vereinfachung bei MainMenü mit Hackerl (check)
Schnellere Variant ohne FindComponent währe im Create alle 5 Menüs in einem Array abzulegen. Und dann kannst du diese unfreundliche Zeile ersetzen.
Delphi-Quellcode:
nItem := (FindComponent(mItems[i])) as TMenuItem; // Holen des Eintrages
|
Re: Vereinfachung bei MainMenü mit Hackerl (check)
Hallo,
Ich werde mir mal die verschiedenen Lösungen ansehen, daweil habe ich auch selbst was im Forum gefunden:
Delphi-Quellcode:
// KI
procedure TForm1.KIClick(Sender: TObject); begin // Check von allen entfernen ki_aus.Checked:=false; ki_Leicht.Checked:=false; ki_normal.Checked:=false; ki_schwer.Checked:=false; ki_sehrschwer.Checked:=false; (Sender as TMenuItem).Checked := true; end; |
Re: Vereinfachung bei MainMenü mit Hackerl (check)
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Ferdinand,
wenn du die Einstellung des Schwierigkeitsgrades in einem Untermenü vornimmst, dann musst du nur die OnClick() Ereignisse der Menüpunkte geschickt verwenden. In meiner Demo arbeite ich mit einer Abbildung des Schwierigkeitsgrades auf die Ordnungszahl des Menüpunkts. Grüße vom marabu |
Re: Vereinfachung bei MainMenü mit Hackerl (check)
Hai ferby,
Das was Du machen möchtest ist ja der selbe Efekt wie bei TRadioButtons (nur einer kann ausgewählt werden). Genau dafür haben Menüitems ja die Eigenschaft ![]()
Delphi-Quellcode:
(Sender as TMenuItem).Checked := true;
|
DP-Maintenance
Dieses Thema wurde von "Sharky" von "Object-Pascal / Delphi-Language" nach "VCL / WinForms / Controls" verschoben.
Schwupp nach VCL ;-) |
Re: Vereinfachung bei MainMenü mit Hackerl (check)
Hallo,
ich glaube diese Variante Zitat:
danke an alle die mir geholfen haben, ferby |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:42 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-2025 by Thomas Breitkreuz