Novo

Forum kao aplikacija na telefonu

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

  • 8 odgovora
  • 3.206 pregleda

Najnovija ↓

Pristup promenljivoj preko refleksije 04.12.2008. u 11:17 · pre 218 meseci #1

Potrebno mi je da preko imena stavke u meniju na formi promenim promenljivu u stavki.

Tj ako mi je dat meni, koji sadrzi redom drop-down stavke "O programu", "Help","Test",... Da preko imena
stavke, helpToolStripMenuItem, promenim vrednost promenljive "Visible".


I naravno sve to preko refleksije.


Moguce je odraditi preko iteracije kroz stavke menija, ali mi je to neprakticno jer neke stavke imaju vise nivoa, pa bih morao koristiti rekurziju, sto bi mi bilo jako neprakticno. Pretpostavljam da se preko refleksije resavau 2-3 reda.
Re: Pristup promenljivoj preko refleksije 04.12.2008. u 11:56 · pre 218 meseci #2
Ja te uopste nisam razumeo. Da promenis svojstvo "Visible" na cemu?

Potpis
Nije važno stići prvi. Važno je prvo da stigneš.
Re: Pristup promenljivoj preko refleksije 04.12.2008. u 12:12 · pre 218 meseci #3
Mozda je bolje da primer i sliku.



Pitanje:

Kako preko refleksije promeniti vrednost Visible na "About Mozila Firefox" ako imam samo ime te promenljive,
tj. aboutToolStripItem. (string)


Re: Pristup promenljivoj preko refleksije 04.12.2008. u 12:28 · pre 218 meseci #4
Hoces da promenis Visible te stavke menija?

Ako je tako
Code:
this.Menu.MenuItems[aboutToolStripItem].Visible = false 


Ako je ovo, zasto refleksijom?
Potpis
Nije važno stići prvi. Važno je prvo da stigneš.
Re: Pristup promenljivoj preko refleksije 04.12.2008. u 12:44 · pre 218 meseci #5
Snimam u bazu podatke vezane za vidljivost menija, svaki korisnik ima privilegije i na osnovu njih ima pristup opcijama programa. E sad da bih sakrio stavke menija koristim imena promenljivih.


Na tvoj nacin, koliko sam sad isprobao, mogu tako pristupiti samo pocetnim stavkama, tj. File,Edit,View,....


Inace glavni meni je tipa MenuStrip. I ima samo clan Items. Nema clan MenuItems.

Re: Pristup promenljivoj preko refleksije 04.12.2008. u 14:28 · pre 218 meseci #6
Da odgovorim samom sebi:

Code:


 ((ToolStripMenuItem)typeof(GlavnaForma).GetField(opcija, System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance).GetValue(this)).Visible = false;

Re: Pristup promenljivoj preko refleksije 04.12.2008. u 15:58 · pre 218 meseci #7
Citat:
Igor Gajic: Snimam u bazu podatke vezane za vidljivost menija, svaki korisnik ima privilegije i na osnovu njih ima pristup opcijama programa. E sad da bih sakrio stavke menija koristim imena promenljivih.


Na tvoj nacin, koliko sam sad isprobao, mogu tako pristupiti samo pocetnim stavkama, tj. File,Edit,View,....


Inace glavni meni je tipa MenuStrip. I ima samo clan Items. Nema clan MenuItems.


za svakog korisnika u bazi napravi privilegije za stavke menu-a, i sa običnim "selectom" učitaš stavke i kreiraš menu.

kad ti netko klikne na stavku proslijediš string, u bazu stavime ime dll file i ime forme koja se nalazi u tom dll file-u.

proslijediš string učitaš dll te sve objekte i pozoveš formu koja je dodana u bazi za određenu stavku.
Re: Pristup promenljivoj preko refleksije 04.12.2008. u 16:12 · pre 218 meseci #8
@MarkoBalkan

Zanimljivo. Na taj nacin se onda dobija potpuno modularna aplikacija. Tj. korisnik moze da kupi delove programa(DLL) koji mu omogucuju odredjenu funkcionalnost i ako ima taj dll onda mu pokaze meni za te opcije i ima potpunu funkcionalnost...
Re: Pristup promenljivoj preko refleksije 04.12.2008. u 20:31 · pre 218 meseci #9
recimo imaš tablicu menu u bazi, sa popisom i strukturom.


onda ti treba tablica, korisnici,
pa tablica privilegije
pa tablica sa popisom dll fileova i formi (1 ili 2 tablice)

i nakraju tablice koje sadrže ono što ti treba.

sad je MS izdao scsf (smart client software ....) upravo za ovakvu namjenu, kažem svaki može koristiti svoju ideju.
dll fileovi se pokupi kad korisnik klikne na neku stavku u menu-u i time preko refleksije pozove dll i pozove formu iz dll file-a.



drugi način je da posebno napraviš dll file-ove i ubaciš kao reference, sve ostalo isto, ali onda ti ne treba refleksija.



recimo kod pythona nemaš refleksije imaš ali za takve stvrai se ne koristi jer ne treba.

dovoljno je samo imports modula i to je to i imaš pristup onome što ti treba.

a kod .net, prvo referenca pa onda još imports.
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme