|
Cuprins lab 8
Nume formular ce apare la pornire
Daca fereastra bazei de date va fi vizibila
Aparitia pe ecran a barei de stare
Aparitia pe ecran a truselor de instrumente
Aparitia pe ecran a meniurilor
Posibilitatea utilizatorului de a lua pauze in relatia cu serverul
Posibilitatea utilizatorului de a folosi cheile speciale
Posibilitatea utilizatorului de a folosi cheia de ByPass
Verificarea existentei proprietatii
Parametrii functiei ChangeProperty
Taste speciale
1. Scrieti o subrutina care prin program sa faca setari cu privire la:
formularul ce va apare pe ecran la deschiderea ferestrei bazei de date
aparitia pe ecran a ferestrei bazei de date
aparitia pe ecran a barei de stare
aparitia pe ecran a truselor de instrumente specifice aplicatiei Access
aparitia pe ecran a meniurilor
posibilitatea utilizatorului de a lua pauze in relatia cu serverul
posibilitatea utilizatorului de a folosi cheile speciale (vezi anexa 1)
posibilitatea utilizatorului de a folosi cheia de ByPass.
2. Rulati subrutina elaborata la punctul 1 si urmariti care este efectul schimbarii diferitelor optiuni. Aveti grija sa nu pierdeti definitiv controlul asupra ferestrei bazei de date. Acest lucru este posibil daca cererea de suspendare a ferestrei bazei de date este insotita de instalarea unui meniu care este programat sa ia locul meniului Access si de setarea care nu permite utilizarea cheii de shuntare.
Aceasta situatie poate fi dorita de furnizorii de programe destinate spre vanzare, care vor sa pastreze proprietatea asupra programelor sursa, dar nu este de dorit in cazul unei baze de date aflata in curs de perfectionare.
De regula este bine ca inainte de a incepe sa testam subrutina de la punctul 1 sa facem o copie de rezerva a bazei de date pentru ca in cazul ca am pierdut baza de date sa avem un inlocuitor al acesteia.
3. Modificati meniul elaborat in lucrarea de laborator nr. 6 (atasat formularului fundal din lucrarea nr. 7), astfel incat din acest meniu sa puteti rula si subrutina elaborata la punctul 1. Ca urmare la urmatoarea pornire a bazei de date ar trebui sa se execute toate setarile din subrutina, inclusiv aceea de a suspenda fereastra bazei de date, de a afisa in locul ei formularul fundal si de a afisa meniul atasat acestui formular, dar fara a inlocui meniul Access.
5. Verificati daca la urmatoarea pornire va functioneaza tasta de shuntare.
6. Multiplicati subrutina de la punctul 1 si in exemplarul 2 al acestei subrutine, caruia o sa-i dati un alt nume, faceti toate modificarile ce se impun pentru a anihila toate setarile de mai sus ale exemplarului original. Modificati meniul astfel incat sa mai aveti un buton care ruleaza si cea de a doua varianta a subrutinei.
In aceste conditii, din meniu, veti avea controlul total asupra comportamentului ferestrei bazei de date la urmatoarea pornire si eliminati orice risc cu privire la pierderea controlului asupra ferestrei bazei de date.
Proprietatilor din fereastra StartUp li se pot atribui valori atat direct cat si prin program. Cand le atribuim valori prin program, daca unor proprietati nu le-au fost atribuite niciodata in prealabil, valori prin meniul Tools/Startup, este posibil ca acele proprietati sa nici nu fi fost create. De aceea subrutina care modifica proprietatile din fereastra StartUp (numita in aceasta anexa SetarePropStartup) va apela pentru fiecare proprietate o functie (de exemplu Functia ChangeProperty ) care este capabila sa identifice care este situatia unei proprietati din acest punct de vedere si daca nu a fost creata sa o creeze si apoi sa o seteze cum i se specifica prin apelul sau de catre subrutina SetarePropStartup.
Daca a fost creata, indiferent daca in momentul deschiderii bazei de date ea are o valoare sau nu, trebuie sa figureze printre proprietatile obiectului de tip database. Aceste proprietati se gasesc in colectia numita Properties.
Functia numita ChangeProperty primeste ca parametrii:
strPropname - numele proprietatii ce urmeaza a fi setata (trebuie sa fie un cuvant rezervat, nu putem sa-i dam noi orice nume. A noastra este StartupForm);
varPropType - tipul valorii ce i se va atribui (pentru StartupForm tipul este string);
varPropValue _ valoarea ce i se va atribui (in cazul nostru numele formularului ce dorim sa se deschida la deschidereea bazei de date).
Aceasta functie incearca sa atribuie proprietatii strPropname, valoarea varPropValue
si daca nu gaseste proprietatea printre cele din colectia Properties a bazei de date curente, atunci apeleaza o metoda a bazei de date numita Create property cu ajutorul careia nu numai ca se creaza proprietatea, dar i se si atribuie toate datele cu care am apelat functia (numele proprietatii, tipul valorii ce i se va atribui si valoarea acelei proprietati).
Utilizarea procedurii SetarePropStartup pentru mai multe proprietati este justificata pentru ca in general cand vrem sa introducem un formular care sa ia locul ferestrei bazei de date, avem de completat o serie intreaga de alte optiuni. Printre acestea se afla:
cea privitoare la deschiderea sau nu a ferestrei bazei de date (true daca se deschide);
cea privitoare la deschiderea sau nu a barei de stare (true daca se deschide);
cea privitoare la permisiunea de a folosi truse de instrumente (true daca se permite);
cea privitoare la permisiunea de a folosi meniul Access (true daca se permite);
cea privitoare la permisiunea de a lua pause in executarea programelor (true daca se permite);
cea privitoare la permisiunea de a folosi taste speciale (true daca se permite);
Taste speciale sunt:
F11 sau ALT+F1: aduc fereastra bazei de date in fata; cuprinsul lucrarii 8
CTRL+G: aduc in fata fereastra imediata;
CTRL+F11: penduleaza intre bara de meniu a utilizatorului si cea a lui Access;
CTRL+BREAK: opreste Access sa mai primeasca date de la server.
cea privitoare la permisiunea de a folosi tasta de shuntare (true daca se permite).
Un exemplu de tasta de shuntare este tasta SHIFT pe care daca o tinem apasata cand deschidem baza de date, toate setarile care priveau optiunile de mai sus, sunt ignorate. Aceasta posibilitate pare sa fie destul de grava pentru securitatea bazei de date aflata in exploatare curenta, dar pe timpul testarii programelor ea este binevenita.
Sub SetarePropStartup()
Const DB_Text As Long = 10
Const DB_Boolean As Long = 1
ChangeProperty 'StartupForm', DB_Text, '(none)'
ChangeProperty 'StartupShowDBWindow', DB_Boolean, True
ChangeProperty 'StartupShowStatusBar', DB_Boolean, True
ChangeProperty 'AllowBuiltinToolbars', DB_Boolean, True
ChangeProperty 'AllowFullMenus', DB_Boolean, True
ChangeProperty 'AllowBreakIntoCode', DB_Boolean, True
ChangeProperty 'AllowSpecialKeys', DB_Boolean, False
ChangeProperty 'AllowBypassKey', DB_Boolean, False
End Sub
Function ChangeProperty(strPropName As String, varPropType As Variant, varPropValue As Variant) As Integer
Dim dbs As Object, prp As Variant
Const conPropNotFoundError = 3270
Set dbs = CurrentDb
On Error GoTo Change_Err
dbs.Properties(strPropName) = varPropValue
ChangeProperty = True
Change_Bye:
Exit Function
Change_Err:
If Err = conPropNotFoundError Then ' Property not found.
Set prp = dbs.CreateProperty(strPropName, _
varPropType, varPropValue)
dbs.Properties.Append prp
Resume Next
Else
'Eroare neidentificata.
ChangeProperty = False
Resume Change_Bye
End If
End Function