![]() |
Menü.Untermenü.Checked := true
Hallo
Ich habe ein Hauptmenü (Optionen) und in diesem sind 3 Untermenüs (Untermenü1, Untermenü2, Untermenü3) wenn ich jetzt eines der Untermenüs anklicke soll das Untermenü Checked := true sein. Ich weiß das ich im Objektinspektor nur AutoCheck auf true setzen muss und die Sache funktioniert. Ich möchte aber das wenn das Programm bendet und neu gestartet wird der Checkedharken im letzten angeklickten Untermenü bleibt. Dazu möchte ich das Klickereignis zb: der Variable "sCheck" übergeben also sCheck := 'Untermenü1=true' und dieses in der Registry "Regist.WriteString('Menue','sCheck');" abspeichern. Wenn ich dann in "TForm1.FormCreate" wieder die Registrie auslese mit "sCheck := Regist.ReadString('Menue');" und auswerte also "if sCheck = 'Untermenü1=true' then" soll das entsprechende Untermenü1 wieder den Checkedharken bekommen. ich weiß nur nicht genau wie ich das Menü genau ansprechen muss "MainMenu1.Untermenü1.Checked := true" ??? |
Re: Menü.Untermenü.Checked := true
.FormCreate ist zu früh, nimm lieber .Loaded.
Zitat:
Die Punkte sind eigene Klassen vom Typ MenuItem |
Re: Menü.Untermenü.Checked := true
Zitat:
Gruß Hawkeye |
Re: Menü.Untermenü.Checked := true
Zitat:
|
Re: Menü.Untermenü.Checked := true
Liste der Anhänge anzeigen (Anzahl: 1)
Guten Morgen Holger.
Du hast ein Menu und darin mehrere Items, bei denen die Eigenschaft RadioItem auf True gesetzt wurde. Beim Neustart deines Programms soll das Item wieder markiert werden, welches der Benutzer in der vorigen Sitzung zuletzt markiert hatte. Dazu musst du dir diese Einstellung irgendwo merken. Das kannst du in der Registry vermerken, aber auch in einer Steuerdatei. Nehmen wir mal die Steuerdatei. Dazu verwendest du die Komponente TMemIniFile aus der Unit IniFiles. Eine Formvariable dieses Typs in der private section deiner Form erlaubt dir den Zugriff zu verschiedenen Zeitpunkten und von verschiedenen Methoden aus. Im Ereignis OnCreate() deiner Form lädst du die Steuerdatei und im Ereignis OnDestroy() kannst du sie wieder speichern, falls es nötig ist. Jedes MenuItem hat ein eindeutiges Merkmal - die Eigenschaft Command. Dieses Merkmal benutze ich in der angehängten Demo, ich speichere es und identifiziere damit das MenuItem beim Neustart des Programms, um seine Markierung zu setzen. Es sind nicht viele Zeilen Code. Mit der Online-Hilfe solltest du in der Lage sein jede einzelne Zeile nachzuvollziehen. Grüße vom marabu |
Re: Menü.Untermenü.Checked := true
Hallo marabu deine Idee ist auch nicht schlecht. Ich habe es aber bereits anders gelöst. Ich speicher die Sache in der Registry ab.
Delphi-Quellcode:
und ein Danke für eure Hilfe !procedure TForm1.Untermenue1Click(Sender: TObject); var Regist: TRegistry; begin try Regist := TRegistry.Create; Regist.Rootkey:=HKEY_CURRENT_USER; Regist.OpenKey('Software\ProgrammName',True); Regist.WriteString('Menue','0'); Regist.Free; MainMenu1.Items[1].Items[0].Items[0].Checked := true; except // end; end; //-------------------------------------------------------------------------------------------- procedure TForm1.FormCreate(Sender: TObject); var Regist: TRegistry; sMenueItem:String; i,iMenueItem,iMenueAnzahl:integer; begin iMenueAnzahl := 5; try Regist := TRegistry.Create; Regist.Rootkey:=HKEY_CURRENT_USER; Regist.OpenKey('Software\ProgrammName',True); sMenueItem := Regist.ReadString('Menue'); for i := 0 to iMenueAnzahl do begin if i = StrToInt(sMenueItem) then MainMenu1.Items[1].Items[0].Items[i].Checked := true; end;//for Regist.Free; except // end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:04 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