Pagina 7 din 10
Research it (scripting parse)
Scris: 18 Mar 2010, 15:35
de Manu
grifnas scrie:Sper ca, desi este vorba de Jaws 11, faptul ca, ceea ce vreau sa va prezint are legatura si cu scripting-ul, nu fac o greseala prea mare inserand acest mesaj in topicul "Aplicatii practice"... (...}
Am citat mesajul despre utilizarea Research It cu tot cu fisierele pentru RO Wikipedia si RO Wictionary si in topicul JAWS 11.
Aici insa putem continua discutia cu cateva informatii despre realizarea fisierelor de interogare, cele care stau la baza Research It.
Exista la Freedom Scientific pe site un ghid care explica cum stau lucrurile.
La prima vedere ar fi destul de simplu, doar ca trebuie cunoscute cateva lucruri: HTML, cate ceva despre XML, iar pentru a face parse sunt disponibile functii XQilla si XLT. Sincer sa fiu nu sunt familiarizat cu acestea din urma, dar cred ca functiile pot fi intelese cu putina rabdare, citind
Ghidul pentru dezvoltare Research It si de acolo mers la SourceForge.net pentru
functiile XQilla.
Practic se poate face parse pentru orice site, mai cu seama daca datele sunt extrase din XML, cum procedeaza de obicei site-urile de tip vreme, scoruri etc.
Poate reusim in viitor ceva pentru Dexonline.ro, Livescores.com... in prezent in ceea ce priveste rezultate sportive sunt mai mult chestii in gen american.
Re: Research it (scripting parse)
Scris: 19 Mar 2010, 14:29
de Ciprian Brahas
Din nou un Salut de la Ciprian tuturor. Imi cer scuze daca nu ma voi exprima prea bine si pentru faptul ca nu am plasat mesajul bine. Am scris mai inainte un mesaj dar la Link raspunde la subiect si dupa ce l-am trimis nu l-am gasit, inseamna ca nu l-am plasat bine. Pentru a fi mai sigur l-am pus la raspunde cu citat. Cu ocazia asta il rog pe Manu sa-mi mai spuna mai multe lucruri privind plasarea mesajelor, Multumesc! As dori sa-mi exprim placerea ca am rezolvat cronometru, deasemeni, fara sa ma mai inspir de pe alte pagini, inafara de pagina 1 de mesaje, unde se vorbeste de acel ceas virtual, aceasta pagina am vazut-o ieri, deci, am mai creat un script cu care putem sari direct la timpul dorit. E vorba de un script in care avem si trei InputBox-uri unde vom introduce doar in cifre ora, ziua si saptamana. Deci pentru ora vom scrie un numar de la 0 la 23, pentru zi vom introduce un numar de la 1 la 7, 1 este pentru Luni si 7 este pentru Duminica, iar, pentru saptamana un numar de la 1 la 5, 1 este pentru prima saptamana si 5 este pentru saptamana a cincea. Daca vom actiona scriptul SayCurrentPontesTime, dupa ce am introdus datele in acele trei InputBox-uri, vom observa ca suntem plasati la timpul dorit de noi. Daca vom actiona, apoi, scriptul TimeForward, timpul va inainta asa dupa cum e facuta functia PontesTime. Pentru mai multa siguranta am sa pun intregul cod, nu doar scriptul, deoarece am vazut, ieri, pe pagina ca ar fi fost aduse ceva inbunatatiri. Pentru a fi sigur cu care din ele am lucrat, am sa pun intreg codul care contine cele trei functii si anume: AutoStartEvent (), PontesTime () si SayPontesTime. Deasemeni vor fi cele doua scripturi: TimeForward () si SayCurrentPontesTime (), impreuna si cu scriptul adaugat de mine. As vrea sa recunosc ca mi-a fost destul de usor ca am lucrat cu functiile acelea si cu acele doua scripturi in fata, dar, nu m-am inspirat si din alta parte. Eu ma consider inca un copilas in scripting si daca stiu 10 sau 15 functii si acelea pe bajbaite sau dupa ureche, e bine, dar, asta e. Primul cod va fi cu cronometru rezolvat, unde jaws nu mai are probleme. As dori ca in loc de functia Beep () si apoi SayString ("Avvertimento!"), sa folosesc functia PlaySound (), care are obligatoriu un parametru. M-am uitat in descriere, am incercat dar nu am reusit. Va rog mult sa-mi dati cateva exemple insotite de ceva explicatii, cat e posibil detaliate, pentru a folosi aceasta functie, Multumesc anticipat! As dori sa intreb cum ramane cu problema aceea care in momentul apasarii unei taste se opreste cronometru. Am observat, pentru ca eu am lasat promterul sa vorbeasca, deci, daca apasam o tasta, promterul vorbeste, ramanand afectata doar functionarea cronometrului. Trebuie sa fie el o functie, sa-i spunem, dubla, deci, jaws sa functioneze si in conditia in care functia While lucreaza in acel moment. Referitor la avertizare, ma gandeam ca daca la cronometru am avea inclus SayInteger (iUrca), la ce bun mai serveste acel Beep, sau avertisment? Poate eu as avea nevoie sa ma avertizeze, de exemplu, la fiecare doua minute si jumatate, sa zicem. Eu am incercat, cat posibil, sa imit un cronometru vocal al unui ceas italian. E un cronometru vocal care functioneaza 24 de ore, si anunta dupa cum spuneam: numara pina la zece, apoi din zece in zece, apoi din minut in minut pina la zece si asa mai departe sau fiecare il programeaza dupa cum doreste. Oricum mie mi s-ar parea obositor sa numere in continuu, dealtfel nu ar mai avea rost avertismentul. Cred ca am palavragit cam mult. Voi pune mai jos cele doua coduri, primul va fi cronometru si al doilea cel cu ceasul virtual. Sigur ca daca voi vedea, incetul cu incetul, pe paginile de forum, voi gasi deja rezolvarea la ceea ce am facut eu mult mai bine si mult mai clar. Cu ocazia asta imi cer scuze si fata de cei avansati pentru care ar putea fi un lucru foarte plictisitor, deci, Mii de Scuze! Astept, totusi, un raspuns de la cineva, cu multumirile de rigoare cu privire la cronometru si parerea de acel script. In special m-ar interesa sa stiu destul de repede posibil, folosirea functiei PlaySound () am incercat si nu am reusit, dealtfel nici nu sunt sigur ca in cazul cronometrului ar functiona, dar voi vedea. Toate cele bune!
InceputCod
Globals
String sStop,
Int iStop,
String sSegnale,
Int iSegnale,
Int iSalli
Script Cronometro ()
InputBox ("Digita quanto vuoi per il cronometro", "Cronometro", sStop)
InputBox ("Digita quando vuoi essere avvertito! Caso mai, se no, premi anulla!", "Avvertimento", sSegnale)
Let iStop = StringToInt (sStop)
Let iSegnale = StringToInt (sSegnale)
Let iSalli = 0
Delay (25)
SayString ("Start!")
While iSalli < iStop
Delay (10)
Let iSalli = iSalli +1
If iSegnale == 0 then
Let iSegnale = iStop + 1
EndIf
If iSalli % iSegnale == 0 then
Beep ()
SayString ("Avvertimento!")
EndIf
If iSalli % 1 == 0 && iSalli < 10 then
SayInteger (iSalli)
EndIf
If iSalli % 10 == 0 && iSalli < 60 then
SayInteger (iSalli)
EndIf
If iSalli % 60 == 0 && iSalli < 601 then
SayInteger (iSalli / 60)
SayString ("Minuti.")
EndIf
EndWhile
SayString ("Il cronometro, รจ finito!")
EndScript
SfarsitCod
InceputCod
Globals
String sOra,
Int iOra,
Int iZi,
String sZi,
Int iSaptamana,
String sSaptamana
Const
sZile = "Luni|Marti|Miercuri|Joi|Vineri|Sambata|Duminica",
sSaptamani = "Prima saptamana|A doua saptamana|A treia saptamana|A patra saptamana|A cincea saptamana"
Function AutoStartEvent ()
Let iOra = 0
Let iZi = 1
Let sZi = StringSegment (sZile, "|", iZi)
Let iSaptamana = 1
Let sSaptamana = StringSegment (sSaptamani, "|", iSaptamana)
EndFunction
Function PontesTime ()
Let iOra = iOra + 1
If iOra == 24 Then
Let iOra = 0
Let iZi = iZi + 1
Let sZi = StringSegment (sZile, "|", iZi)
EndIf
If iZi == 8 Then
Let iZi = 1
Let iSaptamana = iSaptamana + 1
Let sZi = StringSegment (sZile, "|", iZi)
Let sSaptamana = StringSegment (sSaptamani, "|", iSaptamana)
EndIf
If iSaptamana == 6 Then
AutoStartEvent ()
EndIf
EndFunction
Function SayPontesTime ()
SayString (IntToString (iOra))
Pause ()
SayString (sZi)
Pause ()
SayString (sSaptamana)
EndFunction
Script TimeForward ()
PontesTime ()
SayPontesTime ()
EndScript
Script SayCurrentPontesTime ()
SayPontesTime ()
EndScript
Script AjungeLa ()
Let sOra = IntToString (iOra)
Let sZi = IntToString (iZi)
Let sSaptamana = IntToString (iSaptamana)
InputBox ("Digita l'ora da saltare.", "Scrivi l'ora", sOra)
InputBox ("Digita il giorno da saltare.", "Scrivi il giorno", sZi)
InputBox ("Digita la settimana da saltare.", "Scrivi la settimana da saltare", sSaptamana)
Let iOra = StringToInt (sOra)
Let iZi = StringToInt (sZi)
Let sZi = StringSegment (sZile, "|", iZi)
Let iSaptamana = StringToInt (sSaptamana)
Let sSaptamana = StringSegment (sSaptamani, "|", iSaptamana)
EndScript
SfarsitCod
Scris: 19 Mar 2010, 15:49
de Manu
Ciprian Brahas scrie:Am scris mai inainte un mesaj dar la Linkul raspunde la subiect si dupa ce l-am trimis nu l-am gasit, inseamna ca nu l-am plasat bine. Pentru a fi mai sigur l-am pus la raspunde cu citat. Cu ocazia asta il rog pe Manu sa-mi mai spuna mai multe lucruri privind plasarea mesajelor.
Poti raspunde oricand si prin link-ul Raspunde cu citat, dar daca nu vrei sa ramana si citatul, trebuie sa dai un Control + A si Delete in campul de editare. Am corectat eu mesajul tau, adica am sters citatele de deasupra.
Ciprian Brahas scrie:As dori ca in loc de functia Beep () si apoi SayString ("Avvertimento!"), sa folosesc functia PlaySound (), care are obligatoriu un parametru. M-am uitat in descriere, am incercat dar nu am reusit. Va rog mult sa-mi dati cateva exemple insotite de ceva explicatii, cat e posibil detaliate, pentru a folosi aceasta functie.
Functia PlaySound () porneste un sunet WAV. Parametrul necesar este numele fisierului cu tot cu calea catre el. Pentru cale, intre numele folderelor se foloseste un dublu back slash. De exemplu, pentru a localiza un fisier imaginar "pontes.wav" aflat pe partitia D, in folderul sunete, functia va arata astfel:
PlaySound ("D:\\sunete\\pontes.wav")
Asadar, parametrul functiei PlaySound este de tip string, iar pentru a il crea trebuie folosite ghilimelele cand nu e vorba de exprimare prin variabila.
Exista cateva functii care ne pot ajuta pentru a gasi un sunet in mod mai sintetic. De exemplu, pentru sunetele din folderul Sounds aflat in Shared Settings, adica in ENU general, putem lua in considerare urmatorul script care va da play la o clapa de pian:
Inceput cod
Script Player ()
Var
String sCaleFolderSounds
Let sCaleFolderSounds = GetSharedSettingsDirectory () + "\\SOUNDS\"
PlaySound (sCaleFolderSounds + "Piano1-C.wav")
EndScript
Sfarsit cod
Deci, am folosit o functie, GetSharedDirectory (), care aduce ca string calea catre ENU principal, la care am mai lipit folderul SOUNDS. Ca parametru al functiei PlaySound (), am folosit variabila cu calea completa la folderul cu sunete, plus numele fisierului intre ghilimele.
Cea mai buna solutie pentru a da play la un sunet aflat in folderul SOUNDS al JAWS-ului, ar fi prin scriptul urmator:
Inceput cod
Script Player2 ()
Var
String sFisier
Let sFisier = GetSoundFileLocation ("Piano1-C.wav")
PlaySound (sFisier)
EndScript
Sfarsit cod
Functia GetSoundFileLocation () cauta fisierul al carui nume este parametrul de tip string in folderul SOUNDS din ENU personal, iar daca nu se afla acolo, se uita in folderul SOUNDS din ENU principal. Deci, intai se cauta in My Settings, apoi in Shared Settings.
Sper ca am fost destul de clar, daca nu astept intrebari suplimentare.
In legatura cu codurile puse de tine, denota ca te descurci foarte bine, trebuie doar chef, imaginatie, creativitate pentru a face cat mai multe. Daca stii sa folosesti 15 functii de tip diferit bine, inseamna ca dupa incercari poti folosi oricate altele.
Scris: 20 Mar 2010, 12:55
de Ciprian Brahas
Multumesc mult, am copiat codurile si le voi pune in practica. Usor, usor ma voi inspira, de acum, pentru moment, de pe pagina cu aplicatii practice, cat timpul imi va permite. Manu, as dori sa te intreb daca ai avut timp, cumva, sa probezi codul acela cu care sari direct la timpul dorit, referitor la acel ceas virtual de pe pagina unu de aplicatii practice. As mai dori sa te intreb daca ai auzit si folosit comanda pentru jaws care este windows plus tabb, aceasta comanda este valabila in momentul cand ai multe aplicatii deschise in momentul acela. Mie personal mi se pare mult mai utila, comanda aceasta, decat alt plus tabb. In momentul cand dai windows plus tabb, cu sageata sus jos, vei gasi toate aplicatiile deschise de tine, insa in ordinea in care le-ai deschis, ajungand in dreptul uneea dai spatiu sau enter. Cer scuze daca mesajul acesta nu e potrivit pentru pagina asta. Deci, comanda alt plus tabb, este buna in momentul cand, avand mai multe aplicatii deschise, sa zicem, 5 sau 7, dar tu ai nevoie intr-un anumit timp, sa zicem, 10 minute, doar de doua. Cu siguranta ca se stie cum se face sa se aduca ultimile doua aplicatii, insa dorite de noi. Dar daca se intampla sa-ti scrie cineva in momentul acela, mai buna ar fi comanda windows plus tabb, vei gasi cu sageata numele aceluia care ti-a scris, cum mi s-a intamplat, astazi mie la skype. Si asa mai departe. Eventual, daca vei considera necesar, o vei incerca si vei plasa mesajul asta cu comanda windows plus tabb intr-o alta pagina mai potrivita pentru acest subiect. Multumesc anticipat si pentru asta, lucrul asta te voi ruga pina voi incepe si eu sa ma deprind mai bine cu forum-ul. Din nou Salut cu Respect toti colaboratorii Pontes, Ciao! Toate cele bune!
Scris: 20 Mar 2010, 13:38
de Manu
Am citat mesajul cu Windows + Tab in topicul JAWS for Windows, trucuri, posibilitati, acolo merge cel mai bine.
In legatura cu scriptul de salt la un anume timp pentru jocul de Trucker, ar fi chiar buna ideea, sa fie o optiune sa te muti in timp, dar asta va depinde de scopul si stilul final al jocului. Deocamdata stagneaza, nu m-a mai prins atat de tare crearea lui, dar... sigur se va face in viitor.
Deci, codul pare a fi OK. Poate te uiti pe la scripturile de agenda care au mai fost lucrate si in final facem o agenda complexa.
Tocmai ma chinui cu un joc de carti Blackjack, adica 21, pe acesta sa il pun ca ultim in versiunea 2.0 la Casino.
Scris: 20 Mar 2010, 21:28
de Emanuel.Selaru
Imi cer scuze, care este tasta JAWS?
Scris: 21 Mar 2010, 13:42
de Manu
Tasta Insert este denumita JAWS Key de catre Freedom Scientific. De multe ori indicatile lor sunt mentionate in felul acesta, Press JAWS Key + Shift + B pentru a vedea statusul bateriei etc.
La Nuance Talks exista de asemenea o tasta denumita Talks Key.
Prin analogie, atat la Talks, cat si la JAWS, tasta Talks/JAWS + sageata in jos citeste textul incepand din acel loc.
Scris: 21 Mar 2010, 16:21
de Emanuel.Selaru
Multumesc mult Manu. Stiam ca este insert, insa JAWS+insert+tab nu mi-a mers deloc mie si am crezut ca nu mai stiu eu. Pe semne ca de la tastatura mea USB. Spun asta pentru ca de exemplu i-am pus o scurtatura de pornire JAWS-ului insa nu functioneaza deloc. Lucrul acesta m-a cam mirat. O alta scurtatura ce mie nu imi merge este si JAWS+CTRL+s.
Log porniri JAWS
Scris: 05 Apr 2010, 00:57
de Manu
Ca sa nu stagneze prea tare topicul Aplicatii practice, am facut un scriptulet care sa inregistreze toate pornirile JAWS pe un calculator.
Practic se va crea un fisier numit "log.txt", aflat in ENU personal, loc in care se ajunge din Programs, Jaws, Explore, My Settings. Daca se deschide fisierul numit "log.txt" apar cronologic, cu data si ora, toate pornirile aplicatiei JAWS.
De asemenea, la pornirea JAWS-ului, ca sa mai diversificam mesajul, nu vom auzi doar "JAWS for Windows is ready", ci si un mesaj in care ni se spune a cata pornire este incepand cu data primeia.
Pentru a instala scriptul cu pricina, trebuie deschis Script Managerul cu fisierul "Default.JSS". Se da Insert + 0, apoi Control + Shift + D.
Aici, trebuie la sfarsitul functiei AutoStartEvent () pus urmatorul rand:
WriteLogStartJAWS ()
Pentru a ajunge la sfarsitul functiei AutoStartEvent (), se poate da in Script Manager de doua ori F2, apoi sageata in sus pana deasupra randului EndFunction. Deci, a se crea un rand liber deasupra lui EndFunction, si acolo paste la randul de cod mentionat mai sus.
Se merge apoi la sfarsitul fisierului "Default.JSS" cu Control + End, iar acolo se da paste la tot codul de mai jos, aflat intre randurile de delimitare cod.
Inceput cod
Function WriteLogStartJAWS ()
Var
String sTime,
String sDate,
String sDateAndTime,
String sKey,
String sFirstDate,
String sMessage,
String sNRKeys,
Int iNRKeys
Let sTime = SysGetTime ("HH:mm:ss")
Let sDate = SysGetDate ()
Let sDateAndTime = sDate + "|" + sTime
Let iNRKeys = StringSegmentCount (IniReadSectionKeys ("LogJAWS", "log.txt"), "|")
Pause ()
Let iNRKeys = iNRKeys + 1
IniWriteString ("LogJAWS", IntToString (iNRKeys), sDateAndTime, "log.txt")
Pause ()
Let sFirstDate = IniReadString ("LogJAWS", "1", "0", "log.txt")
Pause ()
Let sFirstDate = StringSegment (sFirstDate, "|", 1)
Let sNRKeys = IntToString (iNRKeys)
Let sMessage = "Incepand cu " + sFirstDate + ", au fost inregistrate " + sNRKeys + " porniri ale JAWS."
Say (sMessage, OT_JAWS_MESSAGE)
EndFunction
Sfarsit cod
Scris: 30 Iul 2010, 01:15
de Stefan_Ilioaica
salut tuturor!
tocmai m-am apucat si eu de Jaws scripting si mi se pare foarte interesant.
am ajuns pe la lectia 4, cea in care se vorbeste despre cum poti crea un program care sa iti spuna data nasterii.
in data ce ma voi prinde bine cum stau treburile, voi posta aici codul acelui script.
Scris: 30 Iul 2010, 11:42
de Manu
Bine faci, e un exercitiu foarte bun de gandire, iar daca tu inca din gimnaziu reusesti sa intelegi cat de cat limbajul si sa faci chiar si lucruri simple doar, inseamna ca in viitor ai putea ajunge un programator.
Cred ca programarea ar fi una din solutiile pentru nevazatori, e un lucru pe care acestia l-ar putea face la un nivel egal cu ceilalti.
Baza de selectie este insa foarte mica, probabil 2 sau 3 din tara ar putea ajunge buni pe treaba asta, dar e nevoie de pasiune si lucru mult individual pentru a completa informatiile care apar in diverse cursuri.
Tu ai inteles cum stau lucrurile cu variabilele? Despre ele se vorbeste parca in a patra inregistrare. Daca intelegi bine variabilele, adica ce sunt ele in principiu, e foarte simplu de fapt, atunci inseamna ca esti pe calea cea buna si de aici nu mai sunt impedimente.
Daca e nevoie, eventual voi mai explica si aici putin variabilele ca idee.
In orice caz, ma bucur foarte mult cand vad ca este interesata mai multa lume, cunosc deja destui care incearca saua u incercat sa lucreze putin cu scripting-ul. Nu ma bucur neaparat pentru utilitate, ci pentru ca astfel se mai creeaza cate o pasiune de moment, o ocupatie..
Nou in scripting: Arrays, Colections, For si ForEach
Scris: 01 Aug 2010, 02:00
de Manu
Din intamplare am intrat pe site-ul FreedomScientific si am descoperit la noutati ca au imbunatatit putin Scriptingul in ultima versiune de Jaws 11.
Chiar ma intrebam daca se mai face ceva la aceasta parte si se pare ca au hotarat sa il mai apropie de un limbaj complet de programare, adica sa ii adauge ceea ce oricare altul avea, este vorba de Array, For, ForEach.
Au mai facut sa se poata atribui o valoare unei variabile, direct pe randul in care aceasta este declarata, lucru pe care cred ca il are orice limbaj de programare.
Daca de exemplu am avea nevoie ca variabila de tip integer iMyNumber sa aiba valoarea 5 la inceputul unui script oarecare, inainte faceam astfel:
Int iMyNumber
Let iMyNumber = 5
Acum este suficient sa scriem:
Int iMyNumber = 5
Mai scriu si despre
For care are aici o infatisare putin diferita de cea standard din PHP sau C++. De fapt tot scriptingul de la JAWS este oarecum simplificat ca scriere, se folosesc mai multe cuvinte pentru a fi mai usor de urmarit cu vocea sintetica; probabil ca daca se mergea pe calea display-ului Braille de catre cei mai multi, si limbajul ar fi fost mai cod.
For practic este un
While in care nu trebuie sa mai specificam incrementarea in interior, ci totul este declarat pentru durata de desfasurare in prima linie, in rama fiind orice alte instructiuni ce sunt dorite.
Un exemplu arata astfel:
For x = start to end
Aici actiuni
EndFor
X este o variabila care va fi incrementata intre Start si End.
Mai explicit:
For x = 1 to 100
Aici actiuni
EndFor
Se vor executa actiunile din corpul blocului de o suta de ori, pana ce X se incrementeaza de la 1 la 100.
Pentru a avea o decrementare, se adauga cuvantul
descending la sfarsitul primului rand:
for x = start to end descending
Aici actiuni
EndFor
Pentru toate aceste noutati, mai este Array, Colection si ForEach, se poate citi manualul
Basics of Scripting - completat, in capitolul
Variables.
O sa explic eventual Array-urile intr-un post ulterior, cu acestea se simplifica mult lucrul cand e nevoie de multe variabile, cum ar fi o tabla de sah cu 8 pe 8 casute. In loc sa stam si sa declaram 64 de variabile, pe un rand am rezolva totul:
Let sTabla = new StringArray[8,8]
M-ar fi bucurat mult aceste noutati daca apareau inainte de a ma apuca de celalalt limbaj.
Pacat ca nu erau sa le surprindem in cursurile facute la inceputul anului si sa ramana inregistrate.
Oricum, si fara ele se pot face lucruri la fel de complexe, doar ca uneori ar simplifica anumite probleme.
jaws scriptingincep
Scris: 03 Aug 2010, 15:30
de Silviu
cum as putea sa incep si eu cu ceva simplu in jaws scripting? vreau si eu sa inteleg cum se lucreaza in jaws scripting si de unde as putea sa iau un document cu ceva instructiuni?
Scris: 03 Aug 2010, 15:48
de Manu
Ar fi in total vreo trei surse:
Spor, incearca primele doua lectii, asa iti dai seama cat de cat ce e JAWS Scriptingul, apoi mai vezi tu daca vei continua.
Microsoft Access, Table in Design View
Scris: 15 Sep 2010, 12:17
de Manu
Nu s-a mai scris iar de ceva vreme pe aici.
Duminica am fost rugat de un domn profesor de informatica de la bucuresti sa rezolv cumva problema in Microsoft Access unde in modul creare tabel in Design View nu era anuntat sub nici o forma capul de coloana, astfel existand posibilitatea, mai ales la elevii care invata ca incepatori, sa nu mai stie sigur la un moment dat daca sunt pe "Nume Camp", pe "Tip Date" sau pe "Descriere".
Ca tot e subiectul "aplicatii practice", m-am gandit sa pun si aici scriptul care sa detecteze acest lucru la o combinatie de taste setata de utilizator.
Scriptul nu este chiar atat de sintetic, la mine merge ok pe un Office 2003. Diferentele ar putea aparea la numarul de Next Line-uri din script, adica sa fie ori al cincilea rand, ori al patrulea cel cu celulele de la cap de coloane.
Poate in viitor va veni cineva cu o alta idee, pe scurt, scriptul de mai jos functioneaza astfel:
La apasarea combinatiei de taste setata, JAWS memoreaza pozitia unde se afla PC Cursor. Se muta apoi pe JAWS Cursor si memoreaza coordonata X a ecranului, adica pe al catelea pixel de la stanga spre dreapta se afla. Merge apoi pe al cincilea rand unde sunt capetele de tabel si memoreaza coordonata Y, adica al catelea pixel de sus in jos este.
In cele din urma se foloseste functia MoveTo (X, Y), deci ramane pe randul cu capetele de tabel, dar merge exact pe pozitia X, adica in locul unde era mai jos pe celula si memorase pe al catelea pixel de la stanga era JAWS Cursor in urma unui RouteJawsToPC (). De acolo citeste la dreapta urmatorul field, ceea ce inseamna exact titlul coloanei care intereseaza.
Este mai bine in acest fel pentru ca fereastra poate fi fie Maximized, fie Restored.
Mai exista si un If care verifica daca la apasarea combinatiei de taste setata, utilizatorul se afla in locul care trebuie, adica in modul "Creare tabel in Design View".
Inceput cod:
Script SpuneCampInDesignView ()
var
Int iX,
Int iY
If GetWindowClass (GetFocus ())=="OKttbx" Then
PCCursor ()
SaveCursor ()
InvisibleCursor ()
RouteInvisibleToPc ()
Let iX = GetCursorCol ()
Pause ()
JAWSTopOfFile ()
JAWSHome ()
NextLine ()
NextLine ()
NextLine ()
NextLine ()
Pause ()
Let iY = GetCursorRow ()
MoveTo (iX, iY)
NextWord ()
SayField ()
RestoreCursor ()
SayField ()
Else
SayString ("Nu este fereastra Design View!")
EndIf
EndScript
Sfarsit cod.