Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Kako detektirati SUBMENU

[es] :: Pascal / Delphi / Kylix :: Kako detektirati SUBMENU

[ Pregleda: 2288 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

franjo_tahi
Franjo Tahi
Zagreb

Član broj: 34712
Poruke: 399
*.adsl.net.t-com.hr.



+1 Profil

icon Kako detektirati SUBMENU05.06.2009. u 23:08 - pre 181 meseci
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 :)

 
Odgovor na temu

savkic
Igor Savkić

Moderator
Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: Kako detektirati SUBMENU06.06.2009. u 11:01 - pre 181 meseci
> 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.


 
Odgovor na temu

franjo_tahi
Franjo Tahi
Zagreb

Član broj: 34712
Poruke: 399
*.adsl.net.t-com.hr.



+1 Profil

icon Re: Kako detektirati SUBMENU06.06.2009. u 12:55 - pre 181 meseci
Ž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?
 
Odgovor na temu

savkic
Igor Savkić

Moderator
Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: Kako detektirati SUBMENU06.06.2009. u 14:08 - pre 181 meseci
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;


 
Odgovor na temu

franjo_tahi
Franjo Tahi
Zagreb

Član broj: 34712
Poruke: 399
*.adsl.net.t-com.hr.



+1 Profil

icon Re: Kako detektirati SUBMENU06.06.2009. u 16:40 - pre 181 meseci
To je to, hvala.

Osim greške, vjerojatno kod kopiranja:
Code:

 TraverseMenu(AMenu[i]);


treba biti:
Code:

 DisableMenu(AMenu[i]);
 
Odgovor na temu

savkic
Igor Savkić

Moderator
Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: Kako detektirati SUBMENU06.06.2009. u 17:46 - pre 181 meseci
> 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.
 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: Kako detektirati SUBMENU

[ Pregleda: 2288 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.