[Delphi] Enabled:=False na wszystkich elementach menu

0

No właśnie, czy jest możliwość szybkiego deaktywowania wszystkich elementów MainMenu?
Chodzi mi o coś w stylu:

with MainMenu do
...

0

może być coś takiego ?

for i:=0 to ComponentCount-1 do
    if (components[i] is TMenuItem) then (components[i] as TMenuItem).Enabled:=false;
0

Ewentualnie coś tekiego :

for i:=0 to ComponentCount-1 do
    if (components[i] is TMenuItem) then
      begin
      if not ((components[i] as TMenuItem).GetParentComponent=mainmenu1) then
       (components[i] as TMenuItem).Enabled:=false;
      end;
0

A jeśli zdarzenie znajduje się na innej formatce niż MainMenu?

0

zmieniasz na odpowiednie np. mainmenu321 zamiast mainmenu1 i hulo

e:

no to dorzuć kilka ifów żeby obsłużyć tylko to co cię interesuje i git ?

0

raczej na form1.mainmenu1 ale wtedy podkreśla mi wszystkie TMenu

e:
Chyba brakuje mi doświadczenia kolego. Byłbyś tak dobry i zmodyfikował procedurę tak by obsługiwała komponent o nazwie MainMenu znajdujący się na formatce f_main ?

(tak jak pisałem, zdarzenie znajdować się będzie na innej formatce)

0

no to tak to ma wyglądać ?

for i:=0 to f_main.ComponentCount-1 do
    if (f_main.components[i] is TMenuItem) then
      begin
      if not ((f_main.components[i] as TMenuItem).GetParentComponent=f_main.MainMenu) then
       (f_main.Components[i] as TMenuItem).Enabled:=false;
      end;

i chyba nie musze ci mówić że trzeba dodać do uses unit powiązany z f_main?

I jeszcze jest kwestia taka że ten kod blokuje tylko poditemy, czyli te główne działają. Jeśli chcesz jeszcze blokować tamte to musisz pokombinować, lub zastosować kod z 2 postu.

0
for i:=0 to Form1.ComponentCount-1 do...

Jesli chodzi o Form1.

itd.

0

dziękuję koledzy

1 użytkowników online, w tym zalogowanych: 0, gości: 1