Meniuri si bare de unelte
Interfata cu utilizatorul este o parte foarte importanta a oricarei aplicatii. Acest fapt are o pondere mult mai mare în proiectele dezvoltate în VBA deoarece aplicatiile gazda (Microsoft Office, Visio, Autocad etc.) dispun de interfete utilizator sofisticate de care trebuie sa se apropie orice noua componenta.
Problematica poate fi despartita în:
În acest capitol se discuta prima categorie de actiuni: tehnicile prin care se poate adapta, completa sau modifica interfata cu utilizatorul propusa în mod standard în aplicatiile Microsoft Office 97. Se prezinta atât actiunile permise de mediu (prin dialogul Customize – comun aplicatiilor Word, Excel, PowerPoint, Access) asupra meniurilor si barelor de unelte afisate, cât si actiunile programatice, din Visual Basic, asupra obiectelor respective.
Interfata cu utilizatorul prezenta în programele din Microsoft Office este formata din bare de meniu si bare de unelte. Ca raspuns la activarea unei comenzi din meniu sau a unei unelte se va realiza o actiune a aplicatiei gazda sau se va deschide un dialog pentru fixarea unor atribute ale actiunii dorite.
Exista doua posibilitati de adaptare a barelor de unelte si a meniurilor: dialogul Customize si Visual Basic. Desi dialogul difera usor de la o aplicatie la alta, obiectele programabile sunt aceleasi în toate aplicatiile Microsoft Office (cu exceptia Outlook).
Prin intermediul casetei de dialog Customize se pot efectua modificari ale interfetei utilizator în timpul proiectarii aplicatiei Visual Basic (pentru simplitatea exprimarii utilizam formularea design-time). Cu alte cuvinte, modificari efectuate înainte ca aplicatia sa se execute. Modificarile includ: adaugarea, stergerea, mutarea, restaurarea componentelor meniurilor si barelor de unelte. De asemenea stabilirea proprietatilor acestor componente, care nu se vor modifica în timpul executiei (cu formularea mai concisa run-time). Aceste modificari pot fi efectuate si în Visual Basic, dar daca exista ambele posibilitati de modificare, cele din design-time, direct în mediul aplicatiei gazda, se realizeaza mai usor.
Pentru afisarea dialogului Customize se urmeaza succesiunea: meniul View — Toolbars — Customize. Acelasi efect se obtine prin punctarea unei bare de unelte si click dreapta. Din meniul contextual se alege apoi Customize. Dialogul afisat este, cu mici diferente specifice, acelasî în toate aplicatiile Office 97. Forma afisata de Microsoft Word este data în figura alaturata.
Se observa cele trei fise si grupul de butoane din dreapta.
Particularitatile importante ale dialogului sunt:
Dupa deschiderea dialogului Customize se urmeaza aceeasi procedura pentru modificarea oricarui meniu sau toolbar, indiferent daca este predefinit sau construit de utilizator. Pasii uzuali sunt
Personalizarea meniurilor si barelor de unelte se poate efectua programatic utilizând portiunea reprezentând barele de comanda din modelul de obiecte, comuna tuturor aplicatiilor din Microsoft Office. Nivelul cel mai înalt este colectia CommandBars, returnata de proprietatea CommandBars în toate aplicatiile din Office. Fiecare bara de meniu, meniu contextual sau bara de unelte este reprezentata printr-un obiect CommandBar în aceasta colectie. Un obiect CommandBar contine o colectie CommandBarControls reprezentând elementele de control ale barei respective.
Ierarhia acestor obiecte, pentru cazul Microsoft Word (similara în toate celelalte aplicatii din Office), este prezentata în figura alaturata.
Utilizarea acestor obiecte este explicata, pentru principalele actiuni, în continuarea acestui capitol.
Se poate scrie cod care, executat o singura data, produce crearea sau modificarea elementelor de control din interfata utilizator. Codul simuleaza modificarile din design-time prin caseta Customize. Sunt si situatii în care este nevoie de o combinatie programare + personalizare pentru a realiza configurarea dorita a mediului aplicatiei:
Se poate scrie cod si pentru modificarea meniului sistem în timp ce aplicatia se executa (de exemplu inhibarea unor comenzi sau adaugarea unui meniu etc.). Aceste modificari sunt cunoscute drept modificari în run-time.
Fiecare aplicatie Microsoft Office utilizeaza reguli usor diferite privind unde si cum se salveaza modificarile aduse interfetei utilizator. Pentru un control corect al interfetei proiectate în aplicatia Visual Basic este importanta întelegerea domeniului de valabilitate al schimbarilor.
Se pot utiliza bare de meniu proprii sau meniuri contextuale proprii în trei moduri
Se pot utiliza una sau mai multe bare de unelte proprii într-o aplicatie. Se creeaza barele de unelte necesare si se alege pentru afisare una dintre metodele urmatoare:
Barele de meniu sau/si barele de unelte proprii pot fi salvate cu spatiul de lucru sau cu caietul. La parasirea aplicatiei Excel, barele de unelte din spatiul de lucru sunt salvate automat în fisierul Username8.xlb (unde Username este numele utilizatorului curent utilizat la intrarea în Windows 95). Daca utilizatorul nu este logged on, fisierul este Excel8.xlb. Barele de unelte salvate în caiet sunt memorate în fisierul caietului respectiv.
Meniurile si barele de unelte de la nivelul workbook permit proiectarea unei interfete pe masura oricarei a 424h74e plicatii (de exemplu un add-in) si distribuirea barelor si procedurilor atasate. Pentru distribuire, obiectele proiectate se vor atasa caietului, care contine aplicatia, încât barele de unelte sa fie memorate în acelasi fisier cu aplicatia.
Obiectul original, de la nivelul spatiu de lucru, poate fi eliminat în mod uzual actionând butonul Delete din dialogul Customize, fisa Toolbars.
Daca versiunea de la nivelul saptiului de lucru (workspace) nu este eliminata, aceasta poate fi modificata fara afectarea versiunii de la nivelul caietului. În aceasta situatie, obiectul este modificat la nivelul spatiului de lucru, aducerea versiunii din caiet la aceeasi configurare se realizeaza doar prin repetarea procedurii descrise, adica prin copierea versiunii din spatiu peste versiunea din caiet.
Dupa copierea unui obiect (meniu sau bara de unelte) în caiet, obiectul devine disponibil numai dupa ce utilizatorul în deschide. O versiune salvata în caiet retine nu numai numele si continutul, ci si asignarile de cod, locul, dimensiunea, forma, pozitia în ecran si atributul de vizibilitate (ascuns sau vizibil).
Versiunea salvata în caiet poate fi eliminata prin:
Observatie. Nu se poate utiliza Visual Basic pentru a atasa sau elimina obiecte bare de meniu sau de unelte la un caiet.
La deschiderea unui caiet care contine obiecte de interfata pe masura, Microsoft Excel determina mai întâi daca exista deja un obiect cu aceeasi denumire în spatiul de lucru. Daca nu, este creata un nou meniu sau bara de unelte în spatiul de lucru si se copie în acest nou obiect bara de meniu sau de unelte din caiet. În acest mod se dispune de un obiect care poate fi modificat, ascuns etc., obiect care îsi salveaza modificarile în spatiul de lucru la parasirea aplicatiei Excel.
Nu exista nici un mijloc prin care sa se redenumeasca un meniu sau toolbar, încât la redeschiderea caietului spatiul de lucru contine deja obiectul cu numele respectiv si Microsoft Excel utilizeaza copia creata anterior în locul obiectului din caiet. Procedurile atasate ramân totusi cele din caiet, adica aplicatia distribuita traieste în continuare prin intrarile de meniuri sau unelte pastrate în spatiul de lucru. Acest mod de operare are accentul pus pe actiunile utilizatorului, care are dreptul sa-si organizeze spatiul de lucru dupa voie.
Pentru a restaura versiunea originala distribuita, utilizatorul trebuie sa elimine copia din spatiul de lucru prin procedura explicata anterior.
Word memoreaza meniurile si barele de unelte în sabloane, similar macrourilor. La modificarea unui meniu sau toolbar, modificarile sunt memorate implicit în template-ul Normal si modificarile sunt accesibile în mod global, adica un asemenea obiect poate fi afisat chiar daca documentul este bazat pe un alt sablon.
Un toolbar memorat într-un alt template este disponibil doar daca sablonul respectiv este atasat documentului activ sau daca sablonul este încarcat ca un template global (a se vedea meniul Tools, comanda Templates and Add-ins).
Daca se memoreaza o bara de unelte în document, afisarea ei este posibila doar daca documentul respectiv este activ.
La distribuirea unei aplicatii Visual Basic cu meniuri si bare de unelte personale, aceste trebuie memorate într-un sablon propriu sau într-un document. Deoarece fiecare utilizator are propriul template Normal, aplicatiile Visual Basic nu trebuie sa modifice sablonul Normal. Este recomandat de asemenea sa se elimine obiectele personale din interfata la parasirea aplicatiei.
Daca doua obiecte toolbar cu acelasi nume sunt disponibile simultan (unul într-un sablon, altul în document), ambele sunt listate în dialogul Customize si pot fi afisate separat sau împreuna în acelasi timp.
În Visual Basic se poate adauga, modifica sau elimina bare meniu sau de unelte în orice document sau template. Totusi, deoarece proprietatea CommandBars se aplica doar obiectului Application, contextul trebuie fixat înainte de efectuarea modificarilor. Similar utilizarii zonei Store in din fisa Commands, dialogul Customize, în Visual Basic se va stabili valoarea proprietatii CustomizationContext pentru a specifica un obiect Document sau Template, reprezentând locul unde se executa modificari. Proprietatea CustomizationContext se fixeaza înaintea utilizarii proprietatii CommandBars ceea ce asigura returnarea unei referinte la colectia corecta (din document sau din template).
Obiectele personale sunt memorate întotdeauna în spatiul de lucru. La parasirea aplicatiei PowerPoint, barele de unelte din spatiul de lucru sunt salvate în fisierul Username.pcb (unde Username este numele logon al utilizatorului). Daca utilizatorul nu este logged on, fisierul este Powerpnt.pcb.
Deoarece obiectele din interfata nu sunt vizibile în timpul prezentarii, customizarea este limitata la schimbarea meniurilor si uneltelor accesibile în design mode. Se poate utiliza fie dialogul Customize, fie Visual Basic. Daca aplicatia Visual Basic ofera o interfata modificata pentru proiectarea prezentarilor, se va utiliza Visual Basic pentru modificarea interfetei si este o buna idee aceea ca la parasirea aplicatiei sa se elimine modificarile efectuate.
Meniurile sunt liste cu comenzi din care utilizatorul poate sa aleaga. Meniurile ofera un mod convenabil si consistent de a grupa comenzi asociate dupa functiuni si un mod simplu de acces al utilizatorului. Anumite comenzi pot sa determine afisarea unor submeniuri, pe diferite nivele de organizare. Exista de asemenea meniuri contextuale (shortcut menus) care ofera o modalitate de grupare a comenzilor uzuale aplicabile în contextul limitat al unei actiuni specifice.
Se pot asigna chei de acces pentru a permite afisarea imediata a unui meniu, ca si asignarea unor taste directe la comenzi. În plus, meniurile ocupa mai putin loc decât barele de unelte (nu toate comenzile sunt afisate permanent).
Barele de unelte contin controale care permit executarea comenzilor des utilizate. Barele de unelte sunt adecvate pentru prezentarea atributelor individuale (cum ar fi bold, italic etc.), pentru comenzile care se pot reprezenta vizual (cum ar chenare, dimensiunile liniilor etc.) si pentru comenzile pentru care se doreste accesul printr-un simplu click. Barele de unelte ramân mereu vizibile si acest fapt conduce la o parcurgere mai usoara pentru determinarea comenzii dorite. Dezavantajele includ necesitatea mouse-ului (controalele nu pot fi accesate din tastatura) si ocuparea spatiului de lucru în detrimentul documentului principal.
Pentru prezentarea unui set complex de optiuni se va utiliza o caseta de dialog. Daca se doreste plasarea unei unelte mai aproape de datele asociate, cea mai buna solutie poate fi plasarea unui control direct în document.
Mai multe informatii pot fi gasite în capitolul Controale ActiveX si dialoguri.
În fiecare aplicatie Microsoft Office, sistemul de meniuri este compus dintr-o multime de meniuri si câte o multime de intrari în fiecare meniu. Fiecare menu este fie un meniu, un submeniu sau un meniu contextual. În continuare termenul de componenta se refera în mod generic la un meniu sau o intrare într-un meniu.
O bara de meniu este o bara asezata în partea superioara a ferestrei active si care afiseaza numele tuturor meniurilor care sunt permise în aplicatie la un moment dat. O aplicatie din Microsoft Office poate sa modifice bara de meniu afisata ca urmare a modificarii ferestrei active (de exemplu editarea unui obiect chart) sau ca raspuns la instructiuni Visual Basic.
Un meniu este o lista de intrari care apare (se deruleaza) la click pe numele meniului din bara de meniu.
Un submeniu (child menu) este un meniu atasat de o latura a altui meniu (parent menu), adiacent unei captari particulare a submeniului, localizata în meniul parinte. Fiecare captare de submeniu este marcata cu o sageata punctând spre dreapta. Submeniurile se pot adauga si la meniurile contextuale. Un submeniu este afisat atunci când se puncteaza captarea corespunzatoare din meniul parinte.
Un meniu contextual este un meniu flotant în document si care contine un grup de comenzi adecvate pentru o anume actiune (de exemplu procesarea unui paragraf). Meniul contextual este afisat atunci când utilizatorul executa un click dreapta pe un obiect care are atasat un asemenea meniu.
Sistemul de meniuri se poate modifica într-o aplicatie Microsoft Office în diferite moduri:
În plus, în orice moment se poate restaura meniul sistem predefinit la starea implicita (cea afisata la instalarea aplicatiei).
Fiecare aplicatie din Office are un meniu sistem propriu. Componentele acestuia pot fi modificate sau se pot crea si modifica componente personale.
Se alege modificarea unui meniu predefinit atunci când interventia este minima (de exemplu includerea unui meniu care este legat de o macro).
Daca este necesara o interventie masiva, atunci se prefera crearea unei noi bare de meniu si adaugarea componentelor proprii pe aceasta bara.
Daca un meniu devine prea populat, atunci se impune împartirea comenzilor pe submeniuri. În acest mod se ofera utilizatorului mai putina informatie la un moment dat si aplicatia creste în claritate.
Organizarea submeniurilor se poate baza pe entitatile procesate (comenzi, clienti etc.) sau pe actiunile suportate de entitati (adaugare, editare etc.).
Daca se doreste ca utilizatorul sa aiba acces la comenzile (macar cele mai uzuale) aplicabile în contextul unui obiect selectat, comenzi care, în mod uzual, sunt dispersate în mai multe meniuri, solutia este oferita de meniurile contextuale. Comenzile dorite se vor adauga meniurilor contextuale built-in. În Microsoft Access se pot crea si meniuri contextuale proprii asociate unor obiecte din aplicatie.
Desi este posibil sa se adauge, prin cod Visual Basic, controale predefinite, sau proprii, de tip textbox, listbox sau combo, la meniuri de orice fel, asemenea controale sunt mai adecvate pentru plasarea în bare de unelte.Casetele text din meniuri pot fi utile în anumite situatii pentru afisarea sau returnarea unei proprietati. Aceeasi utilitate o poate avea un control de tip lista sau combo. Neajunsul principal este acela ca selectarea unei intrari dintr-o lista închide meniul (utilizatorul trebuie sa redeschida meniul pentru a revedea alegerea etc.).
Daca se doreste adaugarea controalelor de tipurile enumerate (built-in sau proprii) se vor utiliza tehnici descrise în sectiuni ale acestui capitol.
Modificarile descrise aici sunt cele efectuate înainte ca aplicatia sa se execute. Sunt incluse adaugarea, stergerea, mutarea, restaurarea componentelor din meniuri, ca si fixarea proprietatilor acestora.
În Microsoft Access exista posibilitatea adaugarii unei bare proprii de meniu atât în Visual Basic, cât si prin dialogul Customize. În Microsoft Excel, Word si PowerPoint adaugarea se poate efectua doar prin Visual Basic.
Noua bara de meniu este adaugata listei din caseta Toolbars a fisei Toolbars (caseta Customize).
Prin metoda Add a colectiei CommandBars se creeaza o noua bara de meniu; argumentul MenuBar al metodei Add determina când obiectul CommandBar creat poate fi afisat ca o bara de meniu. Exemplul urmator realizeaza aceasta operatiune:
Set cstm = CommandBars.Add(Name:="Custom Menu Bar", Position:=msoBarTop, _Se poate adauga un meniu la orice bara de meniu built-in sau proprie. Deoarece o aplicatie Office poate afisa diferite bare de meniu built-in în contexte diferite, este necesar uneori ca adaugarea sa aiba loc la mai multe bare de meniu, pentru ca utilizatorul sa aiba acces la meniul adaugat indiferent de contextul curent al aplicatiei.
La adaugarea unui meniu se poate specifica o cheie de acces, litera care apare subliniata la afisarea meniului.
Observatie.Desi o aplicatie Microsoft Office poate sa listeze barele de unelte cu meniurile contextuale din fisa Toolbars a dialogului Customize, utilizatorul nu poate nici adauga meniuri contextuale, nici sa stearga meniuri contextuale. Se pot doar adauga noi intrari, modifica intrarile existente sau elimina unele intrari din meniurile contextuale. Anumite operatiuni suplimentare sunt posibile totusi în Access si Excel, actiuni descrise ulterior.
Adaugarea comenzilor este descrisa ulterior în acest capitol.
Dialogul Customize ofera si posibilitatea de adaugare a unui meniu built-in la o bara de meniu proprie sau built-in. Comenzile adaugate pot fi personalizate fara ca originalul sa fie afectat.
Pentru adaugarea unui meniu se utilizeaza metoda Add a colectiei CommandBarControls. Prin aceasta se adauga un meniu la bara reprezentata de obiectul CommandBar implicat. Argumentul Type al metodei Add trebuie dat drept msoControlPopup pentru a indica afisarea unui meniu activarea controlului adaugat. Controalele care afiseaza meniuri sunt cunoscute drept controale pop-up. Argumentul Before indica pozitia noului meniu între cele deja existente.Proprietatea Caption a obiectului CommandBarPopup returnat de metoda Add este utilizata pentru stabilirea numelui si cheii de acces la noul meniu. Exemplul urmator adauga un nou meniu la bara meniu a unui caiet Excel:
Set cstmAccounting = CommandBars ("Worksheet Menu Bar").Controls _Dupa specificarea tastei de acces (prin &), numele poate fi specificat pentru referinta fie cu sau fara caracterul ampersand.
Un meniu (child menu) este un meniu atasat de o latura a altui meniu (parent menu), adiacent unei intrari din meniul parinte (titlul submeniului – submenu caption), afisat la selectarea titlului. Se pot adauga submeniuri la meniuri, alte submeniuri sau la meniurile contextuale. Similar cu definirea unui meniu, mai întâi se defineste un submeniu vid la care se adauga apoi intrarile dorite.
Adaugarea intrarilor se discuta în continuarea capitolului.
Adaugarea programatica este similara adaugarii unui meniu la o bara de meniu, difera doar nivelul din ierarhia de obiecte:
Set cstmAcctProduct = CommandBars("Worksheet Menu Bar").Controls("Accounting") _adaugarea are loc la meniul Accounting creat în exemplul de la meniuri. Cheia directa este litera "P". Se observa ca valoarea argumentului Type este tot msoControlPopup, argumentul Before, neutilizat în exemplu, permite fixarea pozitiei noului submeniu între intrarile meniului parinte. Este de remarcat ca titlul submeniului se insereaza o data cu submeniul si nu exista anterior.
Dupa definirea titlului submeniului acesta poate fi utilizat la obtinerea unei referinte atât cu ampersand. cât si fara.
Se poat adauga comenzi la orice meniu propriu sau built-in, modifica aspectul lor si separa vizual în grupuri logice.
Desi se pot adauga boxe text, boxe liste sau boxe combo la meniuri/submeniuri, ele nu sunt recomandate. Locul lor este de regula pe barele de unelte. Daca totusi se doreste o asemenea adaugare se va utiliza reteta data la discutarea barelor de unelte.
Pentru adaugarea unei comenzi built-in:
Se poate realiza copierea unei comenzi built-in prin afisarea meniului care o contine si tragerea comenzii simultan cu apasarea tastei CTRL.
Dialogul Customize ofera si posibilitatea de adaugare a unei comenzi proprii la o bara de meniu proprie sau biult-in. Cum fiecare aplicatie din Microsoft Office prezinta tehnici diferite pentru realizarea acestei operatiuni, în continuare se discuta separat fiecare aplicatie.
Adaugarea la un meniu a unei intrari care executa un macro se realizeaza dupa aceeasi procedura ca la adaugarea unei comenzi built-in la un meniu. În boxa Categories click All Macros. Se trage macro-ul dorit în pozitia sa din meniu.
Pentru adaugarea unei intrari care executa o procedura functie se urmeaza de asemenea aceeasi pasi ca la adaugarea unei comenzi built-in: în Categories se alege orice categorie si se trage o comanda oarecare pe meniul dorit. Dupa aceea, prin click dreapta si selectare Control Properties se deschide dialogul sinonim. În zona Caption se trece noul nume al comenzii iar în On Action se tasteaza o expresie care executa procedura Visual Basic de forma: =functionname().
Se urmeaza aceeasi pasi ca în procedura pentru adaugarea unei comenzi built-in la un meniu:; în caseta Categories click Macros si se trage Custom Menu Item din caseta Commands la pozitia dorita pe meniu. Click dreapta pe noua intrare si apoi click pe Assign Macro. În Macro Name din dialogul Assign Macro se precizeaza numele macroului atasat intrarii.
Se urmeaza aceeasi pasi ca în procedura pentru adaugarea unei comenzi built-in la un meniu:; în caseta Categories click Macros, în caseta Commands apare lista procedurilor atasate si se trage macroul dorit în pozitia adecvata din meniu.
Observatie. Daca în Word se scrie o procedura al carui nume coincide cu numele unei comenzi built-in (sau daca o procedura cu numele "MAIN" exista într-un modul cu nume identic comenzii), procedura va înlocui functionalitatea predefinita a comenzii built-in de fiecare data când modulul de cod este disponibil. Orice copie a intrarii de meniu (care activa comanda built-in), de pe orice meniu, va executa procedura înlocuitoare.
Se procedeaza la fel ca în Microsoft Word.
Pentru orice comanda de pe un meniu se poate afisa o imagine alaturata numelui comenzii. Controlul aspectului este obtinut prin meniul contextual afisat în timp ce dialogul Customize este activ. Stilul intrarii de meniu poate fi doar text sau text si imagine. Actiunile uzuale sunt
Comenzile asociate dupa functionalitate se pot grupa prin separarea între linii. Liniile însasi nu sunt intrari separate de meniu, aparitia lor fiind un atribut al comenzii care începe un nou grup. Pentru a începe un grup (prima intrare cu o linie deasupra):
Se utilizeaza metoda Add a colectiei CommandBarControls pentru adaugarea unei noi intrari la obiectul CommandBar care reprezinta un meniu sau un submeniu particular. Pentru adaugarea unei comenzi built-in se va specifica numarul ID al comenzii în argumentul Id al metodei Add.
Urmatorul exemplu adauga comanda Spelling la meniul numit "Quick Tools" de pe bara de meniu "Custom Menu Bar".
Set mySpell = CommandBars("Custom Menu Bar").Controls("Quick Tools") _Informatii suplimentare se gasesc în sectiunea "Identificarea intrarilor si controalelor din meniuri si bare de unelte".
Pentru adaugarea unei comenzi proprii, se adauga o intrare noua în meniu si se fixeaza proprietatea OnAction la procedura initiata de respectiva intrare. Argumentul Type al metodei Add va avea valoarea msoControlButton indicând o comanda.
Exemplul urmator, pentru Microsoft Excel, adauga un meniu Open Database la meniul File. Comanda adaugata executa procedura OpenDatabaseProc.
Set databaseItem = CommandBars("Worksheet Menu Bar").Controls("File") _Exista multe proprietati ale obiectelor reprezentând comenzile din meniuri, proprietati care pot fi fixate în Visual Basic. Pentru mai multe informatii se va studia obiectul CommandBarButton din Help.
Textul descriptiv afisat la punctarea controlului poate fi dat în proprietatea TooltipText. În DescriptionText se poate da un text afisat în bara de stare a aplicatiei etc.
Proprietatea Style stabileste tipul butonului, cu imagine atasata sau nu, constantele predefinite sunt (MsoButtonStyle): msoButtonAutomatic, msoButtonIcon, msoButtonCaption sau msoButtonIconandCaption.
Pentru a începe un grup se va fixa proprietatea BeginGroup a unui obiect CommandBarButton, CommandBarPopup, sau CommandBarComboBox la True. Atribuirea valorii False va elimina linia despartitoare de grupul precedent. Astfel
databaseItem.BeginGroup = Trueadauga o linie înaintea intrarii definite în exemplul precedent.
Se utilizeaza Control(index), unde index este titlul sau indexul unei intrari, pentru a returna obiectul care reprezinta intrarea.
Dintre metode mentionam doar metoda SetFocus prin care se stabileste focalizarea pe respectiva comanda (actionarea tastaturii are efect direct asupra controlului) si metoda Execute prin care se executa procedura atasata controlului.
Meniuri contextuale definite de utilizator pot fi create doar în Microsoft Access sau Excel. Aplicatiile Word si PowerPoint nu dispun de aceasta posibilitate.
Crearea meniurilor contextuale se poate efectua prin dialogul Customize (în Access) sau prin Visual Basic (în Access si Excel). În Access, meniurile contextuale pot fi asociate rapoartelor, formelor si controalelor dintr-o forma, un meniu contextual fiind afisat la click dreapta pe obiectul atasat. În Excel exista evenimentul BeforeRightClick la care se poate raspunde prin modificarea unui meniu contextual existent sau prin afisarea unui meniu contextual propriu.
Modificarea meniurilor contextuale predefinite de aplicatii se poate efectua în mod uzual în toate aplicatiile din Microsoft Office.
Pentru Microsoft Access se poate utiliza dialogul Customize pentru adaugarea unui meniu contextual:
Pentru afisarea noului menu contextual din dialogul Customize se va selecta checkboxul de la Shortcut Menus din fisa Toolbars. Meniul creat este listat ultimul în bara afisata.
Prin metoda Add a colectiei CommandBars se creeaza un nou meniu contextual daca se fixeaza valoarea msoBarPopup pentru argumentul Position al metodei, dupa modelul
Set cstm = CommandBars.Add(Name:="Shortcuts1", Position:=msoBarPopup, _Completarea cu comenzi, modificarea unui meniu contextual se efectueaza prin procedeele descrise la editarea meniurilor/submeniurilor. Prin CommandBars(name), unde name este numele meniului contextual, se returneaza obiectul CommandBar reprezentând meniul contextual. Operând cu elementele colectiei Controls disponibila din obiectul CommandBar se poate personaliza meniul contextual.
Se poate elimina, cu exceptia meniurilor contextuale si a barelor de meniu built-in, orice componenta de meniu: intrari proprii sau built-in, meniuri proprii sau built-in, bare de meniu proprii.
Prin eliminarea componentelor built-in se poate adapta aplicatia proiectata în Visual Basic la necesitatile utilizatorului atât prin simplificarea interfetei (mai ales pentru utilizatori lipsiti de experienta) cât si prin introducerea accesului direct la fuctionalitatea proiectului.
Este de notat ca se pot restaura componentele built-in eliminate, dar nu si componentele proprii. Acestea trebuiesc create din nou.
Cu dialogul Customize deschis se poate elimina orice componenta de meniu prin
Pentru stergerea unei întregi bare de meniu proprie, se deschide dialogul Customize, fisa Toolbars, click pe numele barei si click pe butonul Delete. În acest mod nu se poate elimina o bara de meniu predefinita.
Se utilizeaza metoda Delete pentru a sterge o bara de meniu proprie, un meniu/submeniu drop-down propriu sau nu, sau o intrare proprie sau built-in. Nu se poate elimina o bara de meniu built-in sau un meniu contextual.
Urmatorul exemplu Excel elimina meniul Edit din bara de meniu pentru diagrame.
CommandBars("Chart Menu Bar").Controls("Edit").DeleteUrmatorul exemplu sterge o bara de meniu proprie
CommandBars("Custom Menu Bar").DeleteUtilizarea acestui dialog pentru restaurarea componentelor meniu/submeniu la configuratia originala se face prin:
Pentru a restaura în totalitate o bara de meniu built-in, se deschide dialogul Customize, click pe numele barei de meniu în lista Toolbars din fisa sinonima si click pe butonul Restore. Prin restaurarea barei de meniu, toate meniurile si submeniurile continute sunt de asemenea restaurate.
Metoda Reset aplicata obiectului reprezentând o componenta buit-in produce restaurarea componentei, dupa modelul
CommandBars("Chart Menu Bar").Controls("Edit").Resetaplicabila în Excel sau
CommandBars("Menu Bar").Resetcare restaureaza, în Word, bara de meniuri sistem.
Sistemul de meniuri create în timpul proiectarii poate fi programat astfel încât sa raspunda dinamic la modificarea conditiilor din timpul executiei. Se poate înlocui bara de meniu implicita cu o bara proprie. Daca o anumita intrare nu este adecvata într-un context dat, atunci ea poate fi inhibata sau eliminata. O intrare care reprezinta o optiune cu doua stari, se poate reprezenta imaginea ei ca un buton apasat sau nu. Se poate, de asemenea, redenumi o comanda dupa actiunea posibila asupra unei entitati (de genul Hide — Show).
Este de înteles ca toate aceste modificari pot fi efectuate în timpul executiei prin cod Visual Basic.
Pentru afisarea unei bare proprii de meniu în locul bare de meniu active, se fixeaza proprietatea Visible a obiectului CommandBar corespunzator la valoarea True. Noua bara de meniu vizualizata înlocuieste în mod automat bara activa. Prin fixarea proprietatii Visible la False, se reface bara de meniu implicita, operatiune recomandata înaintea parasirii proiectului Visual Basic.
La pornirea aplicatiei Microsoft Office este afisata bara de meniu implicita. În Word se poate totusi înlocui bara implicita a aplicatiei la pornire deoarece ultima bara de meniu afisata la oprirea aplicatiei Word poate fi salvata în template-ul Normal si restaurata în mod automat. În celelalte aplicatii, ca si în Word, se utilizeaza evenimentul Open pentru fixarea pe True a proprietatii Visible pentru bara de meniu proprie, sau se utilizeaza un macro activat de utilizator sau prin program.
Daca o componenta de meniu se aplica doar unui document particular, este recomandabil ca aceasta componenta sa apara doar atunci când documentul este activ; acest mod de operare reduce aglomerarea inutila a interfetei. Se poate limita viata unei componente de meniu doar la perioada în care este deschis sau activ documentul caruia i se aplica.
O alternativa este ca asocierea document – componenta de meniu sa se gestioneze prin stabilirea proprietatii Visible la True sau False dupa cum este necesara, sau nu, componenta respectiva. Procedeul poate fi utilizat inclusiv pentru o bara de meniu si este, uneori, de preferat procedeului prin care se adauga/sterge o componenta.
Pentru a afisa în mod dinamic componentele de menu, se scriu procedurile de raspuns la evenimente prin care se afiseaza sau se ascund, se creeaza sau se sterg componentele respective. Daca, însa, aplicatia gazda nu suporta evenimente, atunci nu se pot personaliza componentele în mod dinamic. O alternativa este, pentru aceste aplicatii, asignarea procedurilor la proprietatea OnAction a altor elemente de meniu. Daca aplicatia permite controale ActiveX, atunci se poate modifica interfata aplicatiei container ca raspuns la un eveniment suportat de un control ActiveX.
Observatie. Deoarece Word memoreaza personalizarile în documente sau sabloane, componentele proprii sunt vizibile atunci când documentul sau sablonul este disponibil în contextul curent si ascunse atunci când documentul sau template-ul nu este disponibil. Prin contrast, deoarece Microsoft Excel memoreaza personalizarile la nivel de spatiu de lucru, modificarea dinamica a interfetei se realizeaza prin schimbarea proprietatii Visible în proceduri eveniment.
Daca se doreste oprirea utilizatorului de la selectarea unei intrari de meniu, comanda respectiva poate fi inhibata. O comanda inhibata apare pe meniu într-o culoare stearsa si nu poate fi activata. Acest atribut este stabilit de proprietatea Enabled care la True permite accesul la comanda iar la False interzice accesul. Proprietatea nu se poate fixa pentru intrari built-in de meniu si nici pentru un submeniu ca obiect (pot fi inhibate însa toate intrarile submeniului).
Urmatorul exemplu Excel adauga comanda Open Database la meniul File a barei de meniu pentru foaia de calcul si apoi inhiba comanda adaugata:
CommandBars("Worksheet Menu Bar").Controls("File") _Daca proprietatea este stabilita la nibvelul unui meniu, ca în exemplul urmator, toate comenzile meniului sunt interzise:
CommandBars("Worksheet Menu Bar").Controls("File").Enabled = FalseDaca o intrare a unui meniu reprezinta o optiune cu doua stari, este posibil sa se modifice aspectul imaginii comenzii încât sa arate ca un buton apasat sau ridicat, potrivit starii optiunii. Aceasta se realizeaza prin stabilirea proprietatii State a intrarii. Proprietatea poate avea una dintre valorile (constantele MsoButtonState): msoButtonUp, msoButtonDown sau msoButtonMixed.
Exemplul urmator (în Excel) comuta între cele doua stari ale unei comenzi proprii inserate în meniul View:
Sub DatabaseView()În timpul executiei se poate schimba imaginea butonului prin lucrul cu proprietatea FaceId pentru a schimba imaginea în momentul schimbarii starii comenzii. Pentru a specifica imaginea de buton care sa fie afisata alaturi de comanda, trebuie sa se gaseasca comanda built-in cu imaginea dorita, sa se determine ID sau si sa se atribuie aceasta valoare proprietatii FaceId (schimbarea proprietatii FaceId nu modifica functionalitatea comenzii). Urmatorul exemplu Excel amplifica exemplul precedent prin schimbarea imaginii în functie de stare.
Sub DatabaseView()Proprietatea Caption contine denumirea intrarii. Modificând valoarea proprietatii se poate prezenta utilizatorului o comanda adecvata contextului curent. Exemplul urmator arata cum se poate utiliza acest fapt. Se începe prin inserarea unei comenzi Open Database, moment în care comanda se înlocuieste cu comanda Close Database, adecvata contextului:
CommandBars("MyMenuBar").Controls("File").Controls("Open Database") _La redenumirea intrarii trebuie avut grija ca alte proceduri care se refera la comanda sa utilizeze în referinte noul nume.
Se poate utiliza, evident, o variabila care se refera la intrarea de meniu, ceea ce înlatura problemele suplimentare care apar la redenumire:
Set openDatabase = CommandBars(("MyMenuBar"). _Schimbarea titlului se efectueaza prin
openDatabase.Caption = "Close &Database"Fiecare aplicatie Microsoft Office ofera un sistem de bare de unelte (toolbar) continând controale pe care utilizatorul le actioneaza pentru a avea acces la comenzile frecvente. Fiecare toolbar poate sa apara depozitat (docked) la una dintre laturile ferestrei aplicatiei sau ca o fereastra flotanta pozitionata oriunde în spatiul de lucru. Fiecare control de pu un toolbar este control grafic prin care utilizatorul poate schimba informatii cu aplicatia Visual Basic.
Afisarea unei bare de unelte într-o aplicatie Office se realizeaza prin meniul View, comanda Toolbars si click pe numele barei dorite. Imaginea atasata barei respective devine selectata. Un nou click ascunde bara de unelte. Bare de unelte aditionale pot fi vazute în dialogul Customize, în lista din Categories.
Exista mai multe tipuri de controale care apar pe o bara de unelte, discutate în continuare.
Cel mai comun tip de unealta este un buton de control simplu, cu o imagine. Grafica, denumita imaginea butonului, este o reprezentare vizuala a comenzii sau optiunii activate de respectivul control. Utilizatorul poate sa actioneze un buton pentru a executa o actiune (de exemplu butonul New creeaza un nou document) sau sa comute între doua stari posibile (cum ar fi butonul Bold).
Alt tip de control este un buton de control care contine o imagine si o paleta derulabila atasata. Utilizatorul actioneaza sageata în jos a controlului penbtru a afisa paleta de unde selecteaza optiunea dorita. Actionarea butonului (nu a sagetii) aplica optiunea selectata (indicata prin grafica). Un exemplu de acest gen este controlul Font Color.
Un control poate fi de tip text box, list box sau combo box. Utilizatorul poate fie tasta text în zona de text, fie actiona sageata în jos si selecta un element al listei. De exemplu, controlul Font Size de pe bara de unelte Word Formatting permite înscrierea direct a marimii fontului sau selectarea dintr-o lista disponibila de marimi.
Ultimul tip de unealta este controlul pop-up, care afiseaza un meniu cu alte controale. În esenta un asemenea control este similar cu un meniu, exemplul fiind butonul Draw care produce la activare afisarea barei de unelte Drawing.
Observatie. Desi sunt identice ca aparenta si comportare, controalele de pe barele de unelte nu sunt aceleasi cu controalele ActiveX. Nu se pot adauga controale ActiveX la bare de unelte si nu se pot adauga controale de toolbar la documente sau forme.
Aplicatiile Microsoft Office ofera o mare varietate de modalitati pentru modificarea barelor de unelte: se pot crea noi bare de unelte, se pot adauga noi butoane la barele existente, se poate modifica imaginea de pe un buton, se pot asigna macro-uri, texte ToolTip de ajutor, text asociat afisat în bara de stare a aplicatiei.
Daca se modifica o bara built-in sau se creeaza o bara de unelte proprie depinde de numarul de modificari intentionate sau de dorinta proiectantului. Este recomandabil ca adaugarea sau modificarea unui numar mic de butoane sa se efectueze pe o bara de unelte predefinita, în timp ce proiectele mari sa dispuna de bare de unelte proprii. Indiferent de calea aleasa, configuratia standard poate fi restaurata oricând.
Modificarile pot fi efectuate în timpul proiectarii (design-time) sau în timpul executiei (run-time) prin proceduri Visual Basic. Este preferabil ca modificarile principale sa se efectueze în timpul proiectarii si doar eventualele modificari dinamice, functie de actiunile utilizatorului, sa se efectueze în run-time. O schimbare frecventa a sistemului de meniuri poate îngreuna actiunile utilizatorului.
La orice bara de unelte, built-in sau proprie, se pot adauga controale pop-up, aceleasi ca la crearea meniurilor/submeniurilor. Aceasta actiune este un compromis acceptabil între modificarea unei bare de meniu si introducerea unui mare numar de butoane unelte. Reamintim butonul Draw, sau AutoShapes, de pe bara de unelte Drawing care deschide un meniu.
Adaugarea meniurilor, submeniurilor si intrarilor la o bara de unelte se realizeaza în modul descris în sectiunile precedente care se refera la personalizarea meniurilor.
Controale de tip text box, list box si combo box se pot adauga atât la barele de unelte built-in cât si la barele proprii. Aceste controale pot fi utile pentru obtinerea repetata a unor informatii de la utilizator sau pentru executarea unei proceduri dependente de valoarea controlului.
Dialogul Customize suporta adaugarea unor controale predefinite (built-in) la orice bara de unelte. Pentru adaugarea unor controale proprii se va utiliza Visual Basic prin care se pot proiecta si adauga controale de tipurile discutate aici. Daca dialogul Customize este deschis, se poate modifica latimea oricarui control (built-in sau propriu) text box, list box sau combo box.
În aceasta sectiune se prezinta crearea unei noi bare de unelte, adaugarea de controale noi (built-in sau proprii), eliminarea controalelor dintr-o bara de unelte, gruparea controalelor si schimbarea dimensiunilor controalelor text box, list box si combo box. Se poate de asemenea modifica sau edita imaginea de pe un control.
Daca se doreste ca uneltele proprii sa fie continute într-o bara de unelte separata, procesul se desfasoara în doua etape: crearea barei si adaugarea controalelor (similar lucrului cu barele de meniu). Se poate utiliza dialogul Customize sau Visual Basic.
Noul toolbar este adaugat la lista Toolbars de pe fisa Toolbars a dialogului Customize.
Se utilizeaza Add a colectiei CommandBars pentru a crea o noua bara de unelte. Prin fixarea argumentului Position la msoBarLeft, msoBarTop, msoBarRight, msoBarBottom sau msoBarFloating se stabileste daca obiectul CommandBar creat este flotant sau aliniat la o latura (docked).
Urmatorul exemplu creeaza si afiseaza o bara de unelte noua numita "Custom Tools".
Set cstm = CommandBars.Add(Name:="Custom Tools", Position:=msoBarFloating, _Pe lânga adaugarea controalelor la orice bara de unelte, acestea pot fi separate prin linii dupa functionalitate.
Prin dialogul Customize se pot adauga controale built-in în modul urmator:
Pentru adaugarea controalelor proprii fiecare aplicatie Office are particularitatile ei, prezentate în continuare.
Pentru adaugarea unui control care executa un macro se urmeaza pasii descrisi anterior dar în Categories (fisa Commands) se selecteaza All Macros. Se trage apoi macroul dorit din lista Commands pe bara de unelte.
Pentru un control care executa o procedura de tip Function se procedeaza similar în primii pasi dar pe bara se trage orice control (din orice categorie). Dupa pozitionarea pe bara de unelte, click dreapta pe control si deschiderea dialogului Control Properties în care se fixeaza numele în Caption si actiunea de executare a procedurii Visual Basic în On Action. Expresia trebuie sa aiba sintaxa: =functionname().
Se urmeaza aceiasi pasi descrisi anterior, dar în Categories se alege Macros, se trage controlul Custom Button din lista Commands în pozitia stabilita pe bara de unelte. Click dreapta pe noul control si Assign Macro in meniul contextual. În dialogul Assign Macro se selecteaza macroul executat de buton.
Similar procedurii de la Excel, în Categories se alege Macros si se trage din lista Commands denumirea procedurii dorite pe bara de unelte care se modifica. Utilizând meniul contextual afisat pentru noul control se stabilesc atributele sale.
Este de revazut si observatia facuta la subiectul similar de la meniuri privind procedurile proprii care au acelasi nume cu controalele built-in.
Se procedeaza la fel ca în Word.
Aspectul unui buton de pe o bara de unelte poate fi o imagine, un text sau ambele. Aspectul este determinat de stilul butonului, fixat prin comenzile din meniul contextual disponibil în timp ce este activ dialogul Customize.
Stilurile posibile pentru un buton sunt descrise în tabelul urmator.
Stilul |
Aspectul butonului |
Default Style |
Numai imaginea butonului |
Text Only (în meniuri) |
Numai imaginea butonului |
Text Only (în rest) |
Numai numele |
Image And Text |
Imaginea si numele |
Atunci când dialogul Customize este activ, se poate schimba imaginea de pe buton într-unul din modurile descrise la procedura similara de la intrarile unui meniu.
Într-un mod similar celui de la gruparea comenzilor de pe un meniu, pentru a începe un grup cu un control se activeaza dialogul Customize si în meniul contextual al controlului se alege Begin Group. O noua activare a acestei comenzi elimina linia separatoare de grup.
Se utilizeaza metoda Add a colectiei CommandBarsControls pentru adaugarea unui nou control la obiectul CommandBar care reprezinta toolbarul care se modifica. Adaugarea unui control built-in se efectueaza specificând numarul ID al controlului în argumentul Id al metodei Add. Urmatorul exemplu adauga controlul built-in Spelling la bara numita "Quick Tools".
Set mySpell = CommandBars("Quick Tools").Controls.Add(Id:=2)Pentru adaugarea unui control propriu se adauga un nou control si apoi se fixeaza proprietatea OnAction pe procedura Visual Basic executata la clickarea controlului. În argumentul Type se da valoarea msoControlButton pentru a arata ca este bvorba de un buton. Se poate stabili proprietatea FaceId la ID-ul unui control built-in pentru a-i da o imagine definita.
Urmatorul exemplu (în Excel) adauga un buton pe bara de unelte Standard, înaintea butonului Save. Butonul reprezinta procedura OpenDatabaseProc. Exemplul stabileste imaginea butonului la o grila (ID 987).
Set databaseItem = CommandBars("Standard").Controls. _Pentru a începe un nou grup se fixeaza pe True proprietatea BeginGroup a obiectului CommandBarButton, CommandBarPopup sau CommandBarComboBox reprezentând controlul.
Se utilizeaza Controls(index), unde index este titlul sau indicele controlului, pentru a returna obiectul reprezentând controlul.
Daca un control de acest tip este built-in, adaugarea lui se poate efectua prin dialogul Customize în mod similar adaugarii altor controale built-in.
Pentru adaugarea si initializarea continutului unui control propriu de tip text box, list box sau combo box se poate utiliza doar Visual Basic. Prin metoda Add a colectiei CommandBarControls se poate crea un asemenea control specificând drept tip al controlului (în argumentul Type) una dintre valorile
Controlul |
Argumentul Type |
Text box |
msoControlEdit |
List box |
msoControlDropDown |
Combo box |
msoControlComboBox |
Se poate folosi proprietatea Style a unui control text box, list box sau combo box pentru a indica daca titlul (textul) apare în stânga boxei respective.
Urmatorul exemplu adauga un control combo box cu eticheta "Quarter" la o bara de unelte proprie si atribuie controlului macro-ul cu numele "ScrollToQuarter".
Set newCombo = CommandBars("Custom1").Controls. _La executarea aplicatiei Visual Basic, procedura atribuita controlului în proprietatea OnAction este apelata de fiecare data când se modifica controlul. În procedura se poate utiliza proprietatea ActionControl a obiectului CommandBars pentru a gasi care control a fost schimbat si a returna valoarea modificata. Proprietatea ListIndex returneaza intrarea introdusa în combo box.
Eliminarea controalelor poate fi necesara atât pentru ca unele actiuni sunt executate prin interfata proprie proiectata, cât si pentru simplificarea interfetei cu un utilizator mai putin experimentat.
Restaurarea configuratiilor standard este posibila pentru barele de unelte built-in. Barele de unelte si controalele proprii trebuiesc create din nou în vederea restaurarii unei configuratii initiale.
Pentru a sterge un control:
Pentru a elimina o întreaga bara de unelte proprie se deschide dialogul Customize, click pe numele barei în lista Toolbars a fisei sinonime si click pe butonul Delete. Nu se pot elimina barele built-in (acestea se afiseaza sau nu prin View – Toolbars etc.).
Se utilizeaza metoda Delete pentru a elimina din colectia corespunzatoare un obiect de control sau bara de unelte proprie. Nu se poate elimina o bara de unelte built-in.
Urmatorul exemplu Excel elimina controlul Print din bara de unelte Standard.
CommandBars("Standard").Controls("Print").Deleteiar pentru a sterge o bara proprie de unelte
CommandBars("Custom Bar").DeleteDin dialogul Customize
În Visual Basic se utilizeaza metoda Reset:
CommandBars("Standard").ResetBarele de unelte proprii nu se restaureaza în mod automat; ele se creeaza din nou.
Barele de unelte pot fi programate astfel încât sa raspunda dinamic la schimbarile de conditii din timpul executiei. Actiunile posibile uzuale sunt interzicerea accesului la un buton si comutarea imaginii apasat/ridicat.
Pentru marirea spatiului de lucru sau pentru simplificarea interfetei cu utilizatorul, o bara de unelte poate fi afisata doar atunci când este necesara. Vizibilitatea unei bare este dependenta de valoarea proprietatii Visible, cu valorile True si False. Fixarea valorii True este echivalenta cu selectarea barei în lista Toolbars din dialogul Customize si click pe OK.
Urmatoarea procedura Excel, atribuita intrarii de meniu View MyToolbar din meniul View, comuta starile intrarii din meniu si proprietatea Visible a barei de unelte de fiecare data când utilizatorul face click pe intrarea din meniu.
Sub ViewMyAppToolbar()Atunci când o bara de unelte este vizibila, utilizatorul poate actiona orice control de pe ea. Prin fixarea proprietatii Visible drept True sau False se poate efectiv adauga sau elimina un control din spatiul de lucru al utilizatorului fara a sterge efectiv controlul.
Observatie. Deoarece Microsoft Word salveaza personalizarile la nivel de documente sau sabloane, barele de unelte proprii si controalele proprii sunt vizibile doar daca documentul sau template-ul este disponibil. Microsoft Excel salveaza personalizarile la nivel de spatiu de lucru si se va utiliza proprietatea Visible în coduri activate de evenimente pentru a modifica dinamic interfata cu utilizatorul.
Adaptarea proeminentei pe ecran a unei bare de unelte la contextul curent a aplicatiei se poate efectua si prin schimbarea locului pe ecran, a dimensiunilor.
Proprietatile Height, Width, Left, Top si Position permit manevrari de pozitie si dimensiune pentru un obiect CommandBar.
Metoda Reset realizeaza restaurarea unui obiect predefinit. Urmatorul exemplu realizeaza refacerea tuturor barelor de unelte built-in si eliminarea tuturor barelor proprii. Pentru aceasta se foloseste proprietatea BuiltIn care returneaza True pentru un obiect predefinit.
For Each cb In CommandBarsObservatie. Prin restaurarea barelor built-in se elimina si toate controalele proprii inserate în acele bare. Se poate pierde astfel accesul la o procedura din aplicatia Visual Basic. Pentru a ocoli aceasta capcana se recomanda ca eliminarea controalelor proprii de pe o bara de unelte built-in sa se efectueze individual, în functie de contextul curent si nu prin restaurare globala.
Ca alternativa la afisarea si ascunderea controalelor se poate permite sau interzice accesul prin manevrarea proprietatii Enabled. Proprietatea poate fi utilizata si pentru aflarea starii curente a controlului.
Urmatorul exemplu inhiba butonul al treilea de pe bara Standard.
CommandBars("Standard").Controls(3).Enabled = FalseUn control interzis produce un beep la actionare si nu lanseaza procedura asociata.
Pentru butoanele care comuta între doua stari, proprietatea State, cu valorile msoButtonDown si msoButtonUp, poate fi utilizata, similar exemplelor de la meniuri, pentru reprezentarea grafica a celor doua optiuni posibile.
Daca se utilizeaza controale proprii de tip text box, list box sau combo box, în timpul executiei se poate modifica textul afisat în zona text a controlului sau adauga/elimina intrari în listele controalelor.
Proprietatea Text reflecta textul afisat în zona text a controlului si poate fi fixata pe o valoare reflectând modificari din aplicatie.
Metodele AddItem si RemoveItem permit procesarea listelor din controale.
Alte proprietati si metode se vor studia din Help. De exemplu exista posibilitatea declararii unui antet de lista (intrari separate de celelalte printr-o linie).
Fiecare aplicatie Office contine un set unic de bare de meniuri si de unelte si un set unic de intrari de meniuri si de controale, doar o mica parte dintre acestea apar efectiv în aplicatie. De asemenea, dupa cum s-a explicat la începutul capitolului, fiecare aplicatie are un mod unic de memorare a meniurilor si barelor de unelte.
În timp ce functionalitatea asociata cu fiecare intrare built-in de meniu si cu fiecare unealta apartine unei aplicatii Office specifice, titlul, imaginea de pe buton, latimea si alte proprietati implicite sunt memorate într-o resursa partajata de toate aplicatiile. Referintele la componentele continute în aceasta unica resursa se fac prin numerele ID specifice intrarilor de meniu si uneltelor.
Aceeasi resursa comuna contine de asemenea proprietatile implicite ale controalelor pop-up care afiseaza meniurile built-in. Totusi, aceste controale pop-up nu contin si intrarile meniurilor built-in, cu alte cuvinte controalele pop-up sunt vide.
Referirea la ID-uri poate fi ocolita prin utilizarea dialogului Customize. Sunt însa situatii când referinta este necesara:
Se poate atribui ID-ul unui element built-in la argumentul Id al metodei Add pentru colectia CommandBarsControls, sau se poate atribui ID-ul unui element la proprietatea FaceId a oricarui control propriu sau built-in.
Observatie. Chiar daca resursa partajata contine informatie despre orice element de interfata din toate aplicatiile Office, nu se pot adauga într-o aplicatie intrari si controale a caror functionalitate este continuta în alta aplicatie. Se poate totusi copia, si în cazul functionalitatilor distincte, imaginea butoanelor de la o aplicatie la alta.
Pentru determinarea ID-urile elementelor de interfata dintr-o aplicatie Office, se poate urma una din caile:
Nota. ID-urile controalelor pop-up pentru meniurile built-in sunt în domeniul 30002 – 30426. Reamintim ca aceste ID-uri returneaza copii vide ale meniurilor predefinite.
|