Tutorials: Mala škola velikog BB2 II
Tonči A. LOŽIĆ pl-print@st.tel.hr



Umjesto predgovora


Ljeto je iza nas i nadamo se da ste od prošlog nastavka "male škole velikog BlitzBasica2" naučili kako otvoriti ekran (screen), prozor (window) te naučili rukovati s editorom i compilerom. U ovom nastavku, baš kao što smo i obećali, pozabavit ćemo se tkz. "padajućim izbornicima" (pulldown menu). Već nakon slijedećeg nastavka imat ćete dovoljno znanja da započnete pisati i vlastite programe ili igre. Dakle, tastaturu u ruke i na posao...

1. PullDown izbornici

Jedna od odlika Amige i njenog OS-a još od daleke 1985. i WB1.2 jesu padajući izbornici (PullDown menus). Korisniku se omogućava da pritiskom na desnu tipku miša dobije jedan ili više izbornika iz kojih može izabrati opciju odnosno uključiti tj. isključiti istu. Ova odlika AmigaOS-a se koristi ponajviše u ozbiljnijim aplikacijama, a nešto manje u igrama.
Prvo što morate učiniti (nakon što ste otvorili ekran i prozor) jest davanje imena izborniku. Za to Vam služi komanda: MenuTitle ml, mb, i$

   ml = broj liste (seta) izbornika
   mb = broj izbornika
   i$ = naziv izbornika

Primjer pravilnog dodjeljivanja imena izborniku bi glasila: MenuTitle 0,0,"test" čime otvarate prvi (zapavo nulti) set izbornika (objašnjeno kasnije), i prvi izbornik nazvan "test". Ako želite otvoriti više izbornika tada dodajete komadu MeniTitle ali s nešto drugačijom sintaksom:
MenuTitle 0,1,"test2"
tako da u tom slučaju imate izbornik 0 nazvan test i izbornik 1 nazvan test2

Nadalje, treba izbornik popuniti, odnosno dati mu opcije koje će korisniku biti na raspolaganju. To se postiže komandom MenuItem čija bi sintaksa izgledala ovako:

MenuItem ml, fl, mb, it, t$, sc gdje su:

   ml = broj liste izbornika
   fl = flag, odnosno stanje/vrsta opcije
   mb = izbornik broj #
   it = broj opcije tj. izbora
   t$ = naziv opcije tj. izbora
   sc = tipka koja će vršiti tkz. "shortcut" za dotičnu opciju

Primjer bi izgledao ovako: MenuItem 0,0,0,0,"kraj"
Ovom komandom (gledajući prethodnu) ste otvorili izbornik 0 nazvan test i opciju nazvanu kraj.

Slijedeći potez je aktiviranje seta izbornika. Što je to set? Dobri programeri se uvijek koriste tkz. modularnim programiranjem, tako da glavni program podjele u nekoliko nezavisnih modula koji zajedno tvore program. Recimo da vam za svaki takav modul trebaju drugačiji pull-down izbornici. BlitzBasic vam omogućava da unaprijed definirate izbornike za svaki takav modul, a pull-down izbornik za svaki taj modul se naziva set odnosno lista.
Aktiviranje seta izbornika se vrši s komandom SetMenu ml gdje je ml broj liste izbornika, odnosno broj seta izbornika kojeg želimo aktvirati.

Za početak jedan jednostavan primjer koji ima jedan padajući izbornik nazvan "Test!" s dvije opcije, "Dozvoljen prekid?" i "Prekid". Kako program radi? Opcija "Dozvoljen prekid?" ima flag (oznaku vrste) 1 koja ga pretvara u tkz. "Check item" odnosno opciju koja se može uključiti tj. isključiti.
U navedenom programu s opcijom "Prekid" izlazite iz programa, ali tek kad uključite opciju "Dozvoljen prekid?" tj. kad s njegove lijeve strane bude vidljiv "Check" simbol kvačice (komanda ). Otkucajte i pokrenite program i vjerujem da će vam sve biti jasno.

MenuTitle 0,0,"Test!"
MenuItem 0,1,0,0," Dozvoljen prekid?"
MenuItem 0,0,0,1,"Prekid"

Screen 0,3

Window 0,0,12,320,DispHeight-12,$100f,"Izaberi izbornik",1,2

SetMenu 0

Repeat

  a.l=WaitEvent

  If a=256 AND ItemHit=1
    If MenuChecked(0,0,0)
      End
    Else
      WLocate 0,0
      Print "Prekid nije dozvoljen!"
    EndIf
  EndIf

Forever



Osim ovih osnovnih komandi, za pull-down izbornike BlitzBasic2 ima još dosta dodatnih komandi, kao što su one za definiranje boja opcija, definiranje podopcija u izborniku i sl.
Boju opcije određujete s komandom MenuColor #col gdje je #col broj boje iz trenutne palete u koju želite da vam se ispisuju izbornici.
Isto tako, ponekad će vam zatrebati i podopcije (kao što npr. Workbench ima pulldown izbornik Window koji između ostalog ima opciju nazvanu Snapshot, a koja u sebi ima dvije podopcije nazvane Window i All).

Za podopcije je namjenjena komanda SubItem čija sintaksa izgleda ovako:

SubItem ml, fl, mb, it, st, t$, sc

   ml = broj liste izbornika
   fl = flag, odnosno stanje/vrsta opcije
   mb = izbornik broj #
   it = broj opcije tj. izbora
   st = broj podopcije tj. podizbora
   t$ = naziv podopcije tj. podizbora
   sc = tipka koja će vršiti tkz. "shortcut" za dotičnu opciju

Vidljiva je sličnost komande SubItem s komandom Item. Razlika je samo u jednom dodatnom parametru za podopciju.

Evo jedan primjer jednostavnog programa koji ima 2 pulldown izbornika, 4 izbora/opcije od kojih jedan ima dva podizbora/podopcije:

MenuTitle 0,0,"1. izbornik"
MenuTitle 0,1,"2. izbornik"

MenuItem 0,0,0,0,"Izbor s podizborima "+Chr$(187)
SubItem 0,0,0,0,0,"Podizbor 1"
SubItem 0,0,0,0,1,"Podizbor 2"
MenuItem 0,0,0,1,"Izlaz"

MenuItem 0,0,1,0,"Izbor 1 "
MenuItem 0,0,1,1,"Izbor 2"
MenuItem 0,0,1,2,"Izbor 3"

Screen 0,3

Window 0,0,12,320,DispHeight-12,$100f,"Izaberi...",1,2
SetMenu 0

Repeat
Until WaitEvent=256 AND MenuHit=0 AND ItemHit=1


Sada znate gotovo sve o pulldown izbornicima; Kako ih otvoriti, promjeniti im boju, definirati opcije i podopcije. Za kraj je još ostalo ono najvažnije! Kako kontrolirati u svojim programima koju opciju tj. podopciju je korisnik odabrao?
Za to se koriste komande MenuHit, ItemHit i SubItemHit

Jednostavan primjer bi glasio:
If MenuHit=0 AND ItemHit=1 AND SubItemHit=2 then print "Gotovo"

Ovakav program bi ako korisnik odabere menu 0, opciju 1 i podopciju 2 ispisao tekst "Gotovo". Jednostavno, zar ne?

To bi bilo gotovo sve o "padajućim izbornicima" iako BlitzBasic2 dozvoljava još nekoliko zanimljivih stvari glede istih. Jedna od zasigurno najzanimljivijih jest ona koja dozvoljava da za pull down opciju možete upotrijebiti sliku tj. "brush" koji ste prethodno izradili u nekom grafičkom programu!
Međutim, o tome nešto više u idućem nastavku kada ćemo se posvetiti grafici u BlitzBasicu2.


Tonči A. Ložić
PL Print d.o.o Split
e-mail: pl-print@st.tel.hr
URL: http://www.pl-print.tel.hr/

Zaštićeni znakovi:
Amiga i AmigaOS su registrirani zaštitini znakovi u vlasništvu AmigaInc.
Blitz logo je registrirani zaštitini znak u vlasništvu Acid Software

Copyright:
Blitz, BlitzBasic, BlitzBasic2 i TED, Copyright (c) 1987-98 Acid Software, sva prava pridržana


Copyright (c)1994-99. PL Print d.o.o. Split, sva prava pridržana