Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 5 odgovora
  • 3.371 pregleda

Najnovija ↓

Kako detektirati SUBMENU 06.06.2009. u 00:08 · pre 211 meseci #1
Na formi imam tMainMenu kojiemu su neki od osnovih Items-a submenu-i.

Nakon logiranja korisnika neke stavke menu-a onemogučim npr: mnuMain.Items[2].Enabled := false

Koko odrediti da li je Items menu-a submenu i kako onemogučiti neke items-e submenu-a?

Npr: dio menu-a izgleda ovako:

"Analitika"
"Kartice"
"Kamata"
"Zaduženje"
...

Želim omogučiti items "Analitika" i items submenu-a "Kamata", a itemse: "Kartice" i "Zaduženje" onemogučiti.

Nadam se da razumijete što sam htio reči :)

Re: Kako detektirati SUBMENU 06.06.2009. u 12:01 · pre 211 meseci #2
> Koko odrediti da li je Items menu-a submenu i kako onemogučiti neke items-e submenu-a?
> Npr: dio menu-a izgleda ovako:
> "Analitika"
> "Kartice"
> "Kamata"
> "Zaduženje"
> Želim omogučiti items "Analitika" i items submenu-a "Kamata", a itemse: "Kartice" i "Zaduženje" onemogučiti.

> Nadam se da razumijete što sam htio reči :)

Ovako nešto misliš?

MainMenu1.Items.Find('Analitika').Enabled := True;
MainMen1.Items.Find('Kartice').Enabled := False;

Ako želiš proveriti da li neki meni sadrži podmenije, proveri da li je njegov Count veći od 0.

Inače ako si meni definisao u design time, onda sve stavke menija imaju odgovarajuću definiciju i u formi i možeš im direktno pristupiti (bez traženja sa Find).
MainMenu1: TMainMenu;
Analitika1: TMenuItem;
Kartice1: TMenuItem;

Ako komande imaš dostupne ne samo u obliku menija već i toolbara, buttona i slično, razmisli o upotrebi Actionsa za kontrolu svih njih.

Potpis
Do not be a help vampire (http://slash7.com/pages/vampires), use the google.

How to ask questions the smart way:
http://www.catb.org/~esr/faqs/smart-questions.html
http://solair.eunet.rs/~fangor...stions/smart-questions.sr.html
Re: Kako detektirati SUBMENU 06.06.2009. u 13:55 · pre 211 meseci #3
Želio bih, ako korisnik nije administrator - onemogučiti sve svake menu-a, pa onda enable onih kojima ima pristup.
Znam koji menu ili submenu moram postaviti na enable za svakog korisnika.

Kako prije toga, bez navođenja imena, u for i := 0 to .... napraviti disable svih stavki menu-a (i submenu-a).

Znači osnovni menu:

"Kraj" "Obrad" ... "Analitika"

Pritiskom na "Analitika" otvara se submenu


"Kartice"
"Kamata"
"Zaduženje"


Za osnovne item-e je jednostavno:
Code:

      for i := 0 to mnuMain.Items.Count -1 do
            mnuMain.Items[i].Enabled := false;


Kako odrediti da li je npr mnuMain.Items[3] submenu i ako je, kako doći do njegovih items-a?
Re: Kako detektirati SUBMENU 06.06.2009. u 15:08 · pre 211 meseci #4
Napraviš rekurzivnu proceduru koja prihvata jedan argument TMenuItem i u kojoj se ide kroz sve podstavke, disejbluju se i prosleđuju istoj toj metodi.

Code:

procedure DisableMenu(const AMenu: TMenuItem);
var
  i: Integer;
begin
  for i := 0 to AMenu.Count - 1 do
    TraverseMenu(AMenu[i]);

  AMenu.Enabled := False;
end;

begin
   DisableMenu(MainMenu1.Items);
end;

Potpis
Do not be a help vampire (http://slash7.com/pages/vampires), use the google.

How to ask questions the smart way:
http://www.catb.org/~esr/faqs/smart-questions.html
http://solair.eunet.rs/~fangor...stions/smart-questions.sr.html
Re: Kako detektirati SUBMENU 06.06.2009. u 17:40 · pre 211 meseci #5
To je to, hvala.

Osim greške, vjerojatno kod kopiranja:
Code:

 TraverseMenu(AMenu[i]);


treba biti:
Code:

 DisableMenu(AMenu[i]);
Re: Kako detektirati SUBMENU 06.06.2009. u 18:46 · pre 211 meseci #6
> To je to, hvala.
> Osim greške, vjerojatno kod kopiranja:

Zapravo u kucanju (direktno sam pisao), prvo sam nazvao proceduru TraverseMenu pa sam onda pomislio da je DisableMenu prikladnije, ali nisam svuda izmenio.
Potpis
Do not be a help vampire (http://slash7.com/pages/vampires), use the google.

How to ask questions the smart way:
http://www.catb.org/~esr/faqs/smart-questions.html
http://solair.eunet.rs/~fangor...stions/smart-questions.sr.html
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme