|
Škola Accessa |
|
|
Čas 9 - Funkcije komandne tableRazvoj jednostavne aplikacije namenjene poslovanju biblioteke ulazi u završnu fazu. Paralelno sa "šminkom" razvićemo odgovarajuće upite (za izdvajanje podataka po nekom kriterijumu) i izveštaje bazirane na upitima. Tasterima na komandnoj tabli dodelićemo odgovajuće nazive, tasterske prečice i programske akcije. Komanda tabla, kao centralni deo aplikacije, povezuje ostale elemente baze, odnosno programa.
O osnovama ovog elementa aplikacije više možete pročitati na prethodnom
času Otvorimo formu frmKomandnaTabla u režimu izmene dizajna. Tasterima ćemo prvo dodeliti nazive i prečice sa tastature za brz pristup. Na prošlom času napravljeni plan za raspored tastera ćemo dopuniti na sledeći način, predviđajući naziv tastera i tekst koji će se nalaziti na njemu:
Osobina Name je naziv tastera čije se ime upotrebljava u programu, dok je Caption tekst koji će se ispisivati na tasterima. Znak & (tzv. ampersend) ispred određenog karaktera označava prečicu sa tastature za pristup tom tasteru. U našem primeru ispred karaktera "d" na tasteru "Pregled &dužnika" stoji znak &, što Accessu (ovo je standardizovano na nivou operativnog sistema) govori da se pritiskom na tastaturu, na slovo "d" aktivira odgovarajući taster na formi, kao da smo levim klikom miša kliknuli na njega. Obratite pažnju da, dok je forma u fokusu, nije neophodno kombinovati hot-key sa tasterom ALT. Za pretpostavku, ako se nekom od menija pristupa preko tastera sa &d i ako je u isto vreme aktivna forma koja na sebi ima taster sa &d, meniju ćemo pristupiti sa ALT+d, a tasteru na formi samo pritiskom na d. Valja obratiti pažnju da se na formi ne postavi isti hot-key za pristup dvoma komandnim tasterima: pri aktiviranju "vrućeg tastera" aktiviraće se prvi na formi. Postavimo osobinu fonta za taster "Kraj rada" na "bold". Sada komandna tabla treba da ima sledeći izgled: NAPOMENA: da bi datum u naslovu bio formatiran tačno kao na ovoj slici, potrebno je da u apletu Regional Settings u Control Panelu, na listu Date, u polje Long Date Style postavite masku datuma dddd, d. MMMM yyyy. Vratimo se u režim izmene dizajna za ovu formu i pođimo od jednostavnijih događaja. Prvo, za taster "Kraj" postavimo sledeći program u njegov događaj OnClick:
Klikom na taster "Kraj rada" ili pritiskom na taster (sa tastature!) k Access postavlja kontrolno pitanje. Odgovorom na Yes (ili samo y sa tastature) program završava rad. Odgovorom naNo (ili n) poništava se akcija, preskače se poruka o grešci koju Access generiše i program nastavlja rad. Kontrolno pitanje nije neophodno, ali sprečava slučajan izlazak iz programa, ako operater nehotice pritisne taster k na komandnoj tabli. Forma za pristup knjigama i čitaocima ćemo pristupati preko tastera "Citaoci" i "Knjige". Za taster "Citaoci" postavimo sledeći program u događaj OnClick:
Ova dva reda programa prvo minimizuju Komandnu tablu i prikazuju formu frmCitaoci. Nakon što operater zatvori formu frmCitaoci, Komandna tabla treba da vrati prvobitni oblik. Za taster "Citaoci" postavimo još jedan programski red u događaju OnGotFocus:
Nakon što snimite izmene i kliknete na taster "Citaoci", Komandna tabla se minimizuje i otvara se forma za rad sa čitaocima. Ali, kada na formi za rad sa čitaocima kliknemo na taster "Zatvori masku", aktivna forma se zatvara, a Komandna tabla ostaje umanjena! Naime, nama je aktivan i prozor baze i on prvi dobija fokus nakon zatvaranja forme frmCitaoci. U normalnim okolnostima, prozor baze se drži sakriven i Komandna tabla će prva dobiti fokus, odnosno, aktiviraće se događaj OnGotFocus na tasteru "Citaoci" koji će vratiti formi prvobitnu veličinu. Ovo ponašanje će biti jasnije u kasnijoj fazi razvoja programa, kada budemo prozor baze držali sakrivenim. Proceduru opisanu za taster "Citaoci" sprovedimo i na njemu susedni - "Knjige" sa jednom izmenom: umesto frmCitaoci u događaju OnClick postavićemo frmKnjige. Ovim smo razrešili ponašanje tri tastera na komandnoj tabli. NAPOMENA: u programima sa mnogo formi ne praktikuje se stalno otvaranje i zatvaranje formi, jer se tako gubi na brzini rada aplikacije. Umesto metoda DoCmd.OpenForm i DoCmd.Close koriste se metode Hide i Show. Naime, sve forme se po startu aplikacije učitaju u memoriji i sakriju se od prikaza. Zatim se, po potrebi, promenom parametara Hide i Show menja njihova vidljivost. Ova operacija je praktično trenutna, ali po cenu povećane potrošnje radne memorije. Prvi izveštajPrvi izveštaj ćemo kreirati za taster Komandne table "Pregled svih knjiga". Izveštaj je jednostavan i ne zahteva posebne kriterijume upita, jer prikazuje sve knjige u našoj biblioteci.
Pre nego što pređemo na dizajniranje izveštaja i raspoređivanje polja, objasnićemo izgled "sirovog", praznog izveštaja. Osnovni izveštaj je podeljen na tri sekcije. U prvu, gornju, pod nazivom Page Header se postavlja naslov izveštaja, eventualno datum i neki drugi sličan sadržaj koji se pojavljuje samo na prvo strani. U drugu sekciju pod nazivom Details se postavljaju polja koji su nosioci podataka. Tu se može postaviti i tekst, ali će se on za svaki zapis iz tabele ili upita ponavljati za svaki prikazani slog. U poslednju sekciju Page Footer postavlja se sadržaj koji se nalazi samo na kraju izveštaja. Izveštaj treba da je pregledan i jednostavan, uz minimalnu količinu dodatnih informacija. Ako nije neophodno postaviti vreme i datum štampanja to ne treba ni raditi. U našem slučaju interesuje nas sa koliko ukupno knjiga raspolaže biblioteka i kog datuma je izveštaj sačinjen. U sekciju Page Header postavićemo jednu labelu u kojoj ćemo upisati Pregled svih knjiga. Za font i veličinu predlažem Arial, 16, bold. Uravnajmo centralno u odnosu na list ovu labelu. Postavimo još jednu labelu u gornjem levom uglu hedera i u nju upišimo Biblioteka: ovde dođe naziv!. Iz liste polja tabele Knjige selektujmo prvu stavku ID_Knjiga i prevucimo je na izveštaj u drugu sekciju - Details: Selektujmo labelu ID_Knjiga i obrišimo je, tako da ostane samo polje sa podacima ID_Knjiga. Ovo polje umanjimo i premestimo ga u gornji levi ugao sekcije Details. Zatim u sekciji Page Header postavimo novu labelu, u nju upišimo ID i uravnajmo ispis teksta centralno. Ovu labelu postavimo tik iznad sekcije Details iznad polja ID_Knjiga, tako da po veličini bude jednaka sa poljem: Uradimo to i za preostala polja tabele Knjige: Sada "dovucimo" sekciju Page Footer do polja iz tabele Knjige: Kako smo rekli da je datum veoma bitan za ovakvu vrstu izveštaja, postavimo jedan Text Box u sekciju futera, obrišimo njegovu labelu i za vrednost upišimo =Date(). Ova funkcija daje vrednost trenutnog datuma. Način ispisa možemo podesiti na kartici osobina za ovo polje, a ja predlažem da bude tipa Long Date, gde se ispisuje datum u obliku poput Ponedeljak, 5. Mart 2001. Uravnajmo ovo polje uz desnu ivicu izveštaja i ispis teksta postavimo na desno uravnanje. Konačno, snimimo izveštaj pod imenom rptPregledSvihKnjiga i proverimo njegov izgled pritiskom na taster Preview. Vratimo se Komandnoj tabli i događaju On Click pridružimo sledeći programski red:
U događaj On Got Focus postavimo:
Obratite pažnju da ako u programskom redu izostavite acViewPreview klik na taster će štampati izveštaj, umesto da ga prikaže na ekran. Kako su događaji ostalih tastera neposredno vezani za modul izdavanja i vraćanja knjiga njih ćemo obraditi na sledećem času, jer prvo moramo osmisliti najefikasniji način rada sa zaduživanjem i razduživanjem. Ako ste pažljivo pratili sve prethodne časove, verovatno ćete naći "rupu" u programu. Nešto što je veoma bitno za rad biblioteke, a na neki način je ispušteno, odnosno, na formama nije predviđeno da se nađe. Ako ste sami uspeli da dođete do pitanja i odgovora, možete opušteno sačekati sledeći čas. A ako niste, ne budite nestrpljivi! Odgovor ćete naći u jednom od sledećih časova. Do tada možete sami proširiti Komandnu tablu tasterom "Pregled svih čitalaca", uz koga ćete kreirati izveštaj za čitaoce. Na sledećem času počinjemo od modula za izdavanje i vraćanje knjiga na koga će se nadovezati ostale funkcije Komandne table.
REZIME ČASA 9Nakon što smo u prvom delu kursa pažljivo razradili strukturu baze biblioteke i samo definisali par formi, odjednom smo prešli na suprotni kraj, definišući komandnu tablu koja je "najviši" sloj aplikacije; tek smo onda počeli da se bavimo operativnim jezgrom aplikacije. Neka vas to ne začudi, pošto je to uobičajena metoda brzog razvoja aplikacija (RAD - rapid application development). Malo smo pričali o povezivanju događaja sa tasterima komandne tabele, a potom krenuli sa još jednim važnim elementom aplikacije - izveštajima. Potrudite se da savladate elementarne tehnike povezivanja tabele i izveštaja, pošto izveštaji čine jedan od krajnjih ciljeva svake ozbiljne aplikacije.
Čas 10 - Izvršni moduli aplikacije
|
|
Vrh stranice Prethodna stranica Naslovna strana Mapa sajta Pretraga |
| AFORIZAM ZA DANAS | OVIH DANA SLUŠAMO... |
| Copyright © Praktikum na Webu, 2000-2011; Valinor Design; sva prava pridržana. |