23 Detaljnije tumacenje skripti i funkcija  upotrebljenih u skript fajlu Sound Recorder.jss. (nastavak 3.)

Skripta "ScreenSensitiveHelp" izgleda ovako:

Script ScreenSensitiveHelp()
var
	int TheID,
	int TheType
let TheID = GetControlID (GetCurrentWindow())
let TheType = GetWindowtypeCode (GetCurrentWindow())
If UserBufferIsActive () then
	 UserBufferDeactivate ()
	 SayFormattedMessage (OT_USER_BUFFER, cMsgScreenSensitiveHelpBuf)
	 Return
EndIf
if (TheType == WT_BUTTON) && (StringContains (GetWindowName(GetRealWindow(GetCurrentWindow())), swn1)) then
	SayFormattedMessage(OT_USER_BUFFER, msgScreenSensitiveHelp1_L)
	AddHotKeyLinks ()
	return
else
	PerformScript ScreenSensitiveHelp ()
endif
EndScript

Na pocetku skripte su deklarisane dve celobrojne promenljive. Ovim promenljivama su dodeljene vrednosti u sledeca dva reda:
let TheID = GetControlID (GetCurrentWindow())
let TheType = GetWindowtypeCode (GetCurrentWindow())

Promenljiva TheID dobija vrednost koju funkcija "GetControlID" ima kao svoju povratnu vrednost. Ova funkcija daje jedinstven identifikacioni broj neke kontrole u dijaloskom prozoru. Kao parametar ima handle prozora te kontrole. Ovde je za dobijanje tog handle-a upotrebljena funkcija "GetCurrentWindow", koja kako smo vec pomenuli na prethodnom casu, daje handle za prozor u kome se nalazi aktivni kursor. I ponovo da istaknemo da je treba razlikovati od funkcije "GetFocus", koja je takodje objasnjena na proslom casu.

Promenljiva TheType dobija vrednost koju funkcija "GetWindowtypeCode" ima kao svoju povratnu vrednost. Ova funkcija nam daje broj koji predstavlja tip odredjene kontrole. To moze biti broj koji nam ukazuje da je kontrola tipa dugmeta, polja za upis, liste, komboboksa i slicno. Konstante koje se odnose na tip prozora kontrole, definisane su u "HJCONST.JSH" fajlu. Parametar funkcije je kao i u prethodnom redu, handle dobijen funkcijom "GetCurrentWindow".

U sledecim redovima:
If UserBufferIsActive () then
	 UserBufferDeactivate ()
	 SayFormattedMessage (OT_USER_BUFFER, cMsgScreenSensitiveHelpBuf)
	 Return
EndIf

ispituje se da li je virtualni preglednik mozda vec aktiviran, pa ako jeste, to znaci da je korisnik u virtualnom pregledniku ponovo trazio pomoc. Tada se postojeci preglednik deaktivira, a na njegovo mesto dolazi prikaz novog preglednika koji sada sadrzi poruke sa uputstvima o upotrebi samog preglednika. Ove poruke su definisane u konstanti, odnosno poruci cMsgScreenSensitiveHelpBuf, u fajlu "Common.jsm". Nakon zatvaranja preglednika, nailazi programska rec "return" i skripta se napusta.
Medjutim, ukoliko virtualni preglednik nije vec aktivan, gornji redovi ce biti preskoceni i preci ce se na izvrsenje sledece "If... Then... Else... EndIf" strukture:
if (TheType == WT_BUTTON) && (StringContains (GetWindowName(GetRealWindow(GetCurrentWindow())), swn1)) then
	SayFormattedMessage(OT_USER_BUFFER, msgScreenSensitiveHelp1_L)
	AddHotKeyLinks ()
	return
else
	PerformScript ScreenSensitiveHelp ()
endif

Slozeni uslov koji se posmatra:
(TheType == WT_BUTTON) &&
(StringContains(GetWindowName(GetRealWindow(GetCurrentWindow())), swn1))

sastoji se od dva uslova povezana logickim operatorom "i", (&&). Citav uslov je ispunjen samo u slucaju da su oba uslova ispunjena.
Prvi uslov:
(TheType == WT_BUTTON) 

sluzi za uporedjivanje tipa aktuelne kontrole koji smo smestili u promenljivu TheType, sa konstantom WT_BUTTON, sto je brojcana vrednost za prozor dugmeta.

Drugi uslov:
(StringContains(GetWindowName(GetRealWindow(GetCurrentWindow())), swn1))

objasnjen je na proslom casu kao prvi od cetri tamo objasnjena uslova, a jedina je razlika u tome sto je ovde upotrebljena funkcija "GetCurrentWindow" umesto funkcija "GetFocus".

Ako je uslov ispunjen, izvrsice se prvi blok naredbi:
	SayFormattedMessage(OT_USER_BUFFER, msgScreenSensitiveHelp1_L)
	AddHotKeyLinks ()
	return

gde red:
	SayFormattedMessage(OT_USER_BUFFER, msgScreenSensitiveHelp1_L)
prikazuje sadrzaj poruke msgScreenSensitiveHelp1_L, definisane u "SndRec32.jsm" fajlu.

A red:
	AddHotKeyLinks ()
poziva ovu funkciju koja je zaduzena za upis standardnog linka i poruke kojom se zavrsava svaki virtualni preglednik namenjen ovoj vrsti pomoci.
Red u kome se nalazi "return" programska rec, sluzi za napustanje skripte, ali u ovom kontekstu nije neophodan jer ce skripta i onako naici na zavrsni red kao sledeci, posto preskoci drugi blok uslovne strukture.

U drugom bloku se poziva na izvrsenje standardna "ScreenSensitiveHelp" skripta.

Time bi smo zavrsili detaljniji opis funkcija i skripti opste namene iz prve grupe, a na sledecem casu cemo preci na one koje rade konkretne poslove vezane za Sound Recorder.
 "Lekcija 24."

 "Skok na sadrzaj "