AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Menü.Untermenü.Checked := true

Ein Thema von newuser01 · begonnen am 11. Sep 2006 · letzter Beitrag vom 12. Sep 2006
Antwort Antwort
newuser01

Registriert seit: 31. Aug 2006
248 Beiträge
 
Delphi 7 Professional
 
#1

Menü.Untermenü.Checked := true

  Alt 11. Sep 2006, 21:54
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" ???
Gruß: Holger

[Hobby-Programmierer]
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Menü.Untermenü.Checked := true

  Alt 11. Sep 2006, 22:07
.FormCreate ist zu früh, nimm lieber .Loaded.
Zitat:
ich weiß nur nicht genau wie ich das Menü genau ansprechen muss
Ich weiß nicht genau was du mit Untermenü meinst.
Die Punkte sind eigene Klassen vom Typ MenuItem
Markus Kinzler
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#3

Re: Menü.Untermenü.Checked := true

  Alt 11. Sep 2006, 22:57
Zitat von mkinzler:
.FormCreate ist zu früh, nimm lieber .Loaded.
TForm.Loaded wird aufgerufen, bevor das OnCreate-Ereignis des Formulars ausgelöst wird.

Gruß Hawkeye
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Menü.Untermenü.Checked := true

  Alt 11. Sep 2006, 23:00
Zitat:
TForm.Loaded wird aufgerufen, bevor das OnCreate-Ereignis des Formulars ausgelöst wird.
Ich bin immer davon ausgegangen, das es andersherum sei.
Markus Kinzler
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#5

Re: Menü.Untermenü.Checked := true

  Alt 12. Sep 2006, 07:35
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
Angehängte Dateien
Dateityp: zip menu-test_268.zip (1,8 KB, 11x aufgerufen)
  Mit Zitat antworten Zitat
newuser01

Registriert seit: 31. Aug 2006
248 Beiträge
 
Delphi 7 Professional
 
#6

Re: Menü.Untermenü.Checked := true

  Alt 12. Sep 2006, 11:51
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:
 

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;
und ein Danke für eure Hilfe !
Gruß: Holger

[Hobby-Programmierer]
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:44 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz