150 likes | 285 Views
Programarea aplica ţiilor Microsoft Office ( V isual B asic for A pplications ). Prezentat ă de Valentin Clocotici www.infoiasi.ro/~val/vba.html. Cursul nr. 6. Dialoguri (Forms). Controale. Label Control
E N D
Programarea aplicaţiilor Microsoft Office(Visual Basic for Applications) Prezentată de Valentin Clocotici www.infoiasi.ro/~val/vba.html
Cursul nr. 6 Dialoguri (Forms)
Controale • Label Control • Un control Label este utilizat pentru afişarea unui text descriptiv, cum ar fi titluri, instrucţiuni de ajutor etc. • Textul afişat nu este şi nu poate fi legat de surse de date (în sensul că se va modifica împreună cu sursa de date). • Proprietatea implicită este Caption, reprezentând textul afişat. • Evenimentul implicit este Click. • TextBox Control • Afişează informaţie scrisă de utilizator sau primită dintr-o sursă de date. • Dacă TextBox este legată de o sursă de date, atunci modificarea informaţiei afişate produce şi modificarea informaţiei din sursa de date. Informaţia afişată are un format unitar (acelaşi font, acelaşi stil). • Proprietatea implicită este Value, reprezentând conţinutul casetei. • Evenimentul implicit este Change, declanşat la modificarea proprietăţii Value.
Controale • TextBox Control (continuare) • Text este proprietatea (string) care conţine textul afişat. • Numărul de linii pentru textul afişat este controlat de proprietatea booleană MultiLine. Dacă MultiLine este False, textul este afişat trunchiat. Liniile se termină la caracterele Newline. De remarcat şi interacţiunea cu proprietatea ScrollBars prin care se controlează afişarea barelor de scroll (orizontală, verticală). • Proprietatea WordWrap permite scrierea unei linii lungi de text pe mai multe linii. Trebuie ca MultiLine să fie True. De remarcat că, la editarea textului unui control TextBox, se generează un caracter Newline la acţionarea Shift+Enter, Ctrl+Enter, similar unui salt de linii dintr-o celulă Excel. • O altă proprietate cu efect la editarea controlului este AutoSize. Dacă AutoSize este True, atunci redimensionarea controlului are loc după dimensiunea textului care trebuie să fie afişat. Dacă MultiLine este True, se ajustează înălţimea controlului, altfel se ajustează lăţimea (textul care depăşeşte lăţimea dialogului nu se mai vede).
Controale • ListBox Control • Afişează o listă şi permite selectarea unei sau mai multor intrări din listă. • ListBox poate fi legat de o sursă de date (proprietatea RowSource). • Controlul ListBox poate să apară ca o listă ori ca un grup de controale OptionButton sau CheckBox (ListStyle este Option; MultiSelect dă intrările: Single – butoane radio, Multi sau Extended – boxe de control). • Proprietatea implicită este Value, reprezentând valoarea selectată curent (din coloana dată de proprietatea BoundColumn). • Evenimentul implicit este Click.
Controale • ComboBox Control • Combină posibilităţile de la ListBox şi TextBox: utilizatorul poate introduce o valoare nouă (ca la TextBox), sau poate selecta o valoare dintr-o listă (ca la ListBox). Grafic, un control ComboBox arată ca o listă ascunsă. • Se poate lega la o sursă de date (de exemplu, celule dintr-o foaie de calcul). • Proprietatea implicită este Value, reprezentând valoarea selectată. • Evenimentul implicit este Change.
ListBox, ComboBox • O listă poate fi asociată unei surse de date (datele afişate vor fi înregistrările din sursă), modificările vor fi regăsite în listă. Proprietatea este RowSource care acceptă ca valoare un string (definiţia unui domeniu, numele unui domeniu). Prin program se pot atribui obiecte Range: ListBox1.RowSource=Range(“B3”).CurrentRegion.Address • Numărul de coloane ale unei liste (ListBox sau ComboBox) este controlat de proprietatea ColumnCount: • 0 pentru a nu afişa nimic, -1 pentru afişarea tuturor coloanelor disponibile. • O listă nelegată de o sursă de date acceptă cel mult 10 coloane. • Proprietatea ColumnWidths fixează lăţimea coloanelor. • Valoarea controlului, proprietatea Value, este valoarea din linia curentă şi coloana indicată de proprietatea BoundColumn. • Proprietatea BoundValue conţine valoarea controlului atunci când acesta primeşte focusul, adică, pentru ListBox şi ComboBox, valoarea din coloana BoundColumn a liniei curente la primirea focusului.
ListBox, ComboBox • Proprietatea ColumnWidths specifică dimensiunea coloanelor pentru un control listă (ListBox sau ComboBox). Sintaxa este listobject.ColumnWidths [= String]unde String este o înşiruire de dimensiuni, separate de prin “;”. • -1 sau blank conduce la un calcul automat al dimensiunii, • 0 produce ascunderea coloanei • Dimensiunile pot fi însoţite de unitate de măsură. • Observaţii. • Calculul automat (la -1 sau blank) este realizat prin împărţirea lăţimii controlului la numărul de coloane. • Dacă suma lăţimilor specificate este mai mare decât dimensiunea controlului, se afişează doar coloanele din stânga (se va utiliza bara de defilare pentru a vedea celelalte coloane). • Dimensiunea minimă calculată automat este de 72 puncte (1 inch). • ExempluListBox1.ColumnWidths = “90;72;;1 cm”are ca efect o coloană de 90 de puncte, una de 72 de puncte, una calculată automat şi una de un centimetru.
ListBox, ComboBox • Dacă lista are mai multe coloane, selectarea unei linii returnează ca valoare a controlului valoarea aflată pe coloana precizată ca BoundColumn (numerotarea coloanelor este aici de la 1). • Proprietatea ControlSource identifică locaţia utilizată pentru a seta sau a memora valoarea controlului (proprietatea Value). In cazul Excel, ControlSource poate fi adresa (string) a unui domeniu:ListBox1.ControlSource = Range("E3").Address • Intre valoarea controlului (Value) şi locaţia fixată în ControlSource există sincronizare în ambele sensuri. Dacă Value este Null, în locaţia ControlSource nu apare nimic. • Exemplu: • dacă lista este asociată unei liste de persoane şi dacă valoarea controlului este campul “nume”, atunci o celulă fixată drept ControlSource va controla lista prin aceea că linia activă va fi linia care are în câmpul “nume” valoarea din celula de control şi, reciproc, selectarea altei înregistrări din listă va modifica şi valoarea din celula de control.
ListBox, ComboBox • Controalele de tip listă au şi proprietatea TextColumn care fixează (numerotare de la 1) coloana de pe care se stabileşte proprietatea Text a controlului. In cazul listei ComboBox, valoarea Text este şi textul afişat în zona de text a controlului. In acest fel se poate obţine acces direct la două dintre câmpurile liniei selectate. • Gestionarea listei se efectuează prin proprietăţile Column, Listşi ListIndex (toate sunt cu numerotare de la 0). • ListIndex returnează indicele liniei selectate. De amintit şi faptul că acest indice este returnat ca valoare a controlului dacă BoundColumn este 0. • Exemple:MsgBoxListBox1.TextColumn, vbInformation, "Proprietatea TextColumn“MsgBoxListBox1.Text, vbInformation, "Proprietatea Text“MsgBoxListBox1.BoundColumn, vbInformation, _ "Proprietatea BoundColumn“MsgBoxListBox1.Value, vbInformation, "Proprietatea Value“MsgBoxListBox1.ListIndex, vbInformation, "Proprietatea ListIndex"
ListBox, ComboBox • Proprietatea Column specifică una sau mai multe intră dintr-o listă (ListBox sau ComboBox). Sintaxa estelistobject.Column([column[, row]]) [= value]unde column, row sunt întregi (numerotarea coloanelor, liniilor este de la 0)value este un Variant care specifică o singură valoare, o coloană de valori sau un tablou bidemensional de valori care se încarcă în listă, porţiune necesară în scriere. • Observaţii: • Dacă se precizează linia şi coloana, se obţine itemul astfel specificat • Dacă se specifică doar coloana, se obţine referinţă la coloana respectivă din linia curentă a listei.. • Column returnează un Variant. • Se poate utiliza Column pentru a asigna conţinutul unei liste la alt control, de exemplu stabilirea proprietăţii ControlSource pentru un TextBox. • Dacă utilizatorul nu selectează nimic în listă, Column este Null (se poate testa valoarea prin funcţia IsNull). • Se poate utiliza Column pentru a copia un tablou bidimensional într-o listă. La copiere are loc o transpunere a tabloului, Column(X, Y) este Array(Y, X). Prin proprietatea List copierea are loc fără transpunere.
ListBox, ComboBox • Proprietatea List returnează sau scrie intrările din listă (ListBox sau ComboBox). Sintaxa estelistobject.List( row, column ) [= value]unde row, column sunt întregi (numerotarea de la 0), value este, doar pentru scriere, un Variant cu valorile atribuite. • Observaţii • De menţionat proprietăţileListCount (numărul de intrări în listă) şiListIndex (indicele liniei curente. • O listă este un tablou variant, fiecare item fiind caracterizat de linia şi coloana sa. • Iniţial, lista (ComboBox sau ListBox) este vidă. • De notat că List este utilizat pentru a alimenta lista cu un tablou de valori. Pentru o valoare individuală sau pentru un tablou unidimensional (o linie) se va utiliza AddItem. Pentru a elimina intrări se utilizează metoda RemoveItem.
Controale • CheckBox Control • Este utilizat pentru alegeri între două alternative (Yes/No, True/False etc.). • DacăTripleState este True, controlul poate avea şi valoarea Null. • La legarea de o sursă de date, schimbarea stării se reflectă în modificarea valorii sursei. • Proprietatea implicită este Value: Null = null (nici selectat, nici neselectat), (–1) – True (selectat), 0 – False (neselectat). • Evenimentul implicit este Click.
Controale • OptionButton Control • Permite selectarea dintr-un grup de opţiuni. Controlul este cunoscut şi ca buton radio (apăsarea unui buton de selectare a unei game de lungimi de undă le deselectează pe celelalte). • Butoanele de opţiune dintr-un frame sunt mutual exclusive. Asemenea grupuri se pot defini şi cu proprietateaGroupName, fiecare grup fiind identificat prin denumire. • Un control OptionButton poate fi legat la o sursă de date, controlul poate să arate valori Yes/No, True/False sau On/Off. • În funcţie de proprietatea TripleState, controlul poate avea şi valoarea Null.