Element
|
Descriere
|
Click
|
Apare când utilizatorul efectuează click pe controlul list box.
|
Double Click
|
Apare când utilizatorul efectuează dublu-click pe controlul list box.
|
DragDrop
|
Apare când operaţiunea “drag” (de tragere) a controlului list box se încheie.
|
Drag Over
|
Apare în timpul unei operaţiuni “drag”.
|
KeyDown
|
Apare când utilizatorul apasă o tastă, atât timp cât proprietatea Previzualizare Tastă are valoarea Adevărat pentru controalele de pe formă; altfel, forma primeşte cazul KeyDown.
|
KeyPress
|
Apare când utilizatorul apasă o tastă peste list box.
|
KeyUp
|
Apare când utilizatorul eliberează o tastă pe list box.
|
MouseDown
|
Apare când utilizatorul apasă butonul de mouse peste un list box.
|
MouseMove
|
Apare când utilizatorul mişcă mouse-ul peste list box.
|
MouseUp
|
Apare când utilizatorul eliberează butonul de mouse peste un list box.
|
Tabelul 3 conţine o serie de metode ale controlului listbox necesare pentru a iniţializa, analiza şi elimina elementele unui control list box, deci pentru a le prelucra. Metodele funcţionează ca programe (proceduri) care operează pe controale.
Tabelul 11.3 Metodele controlului List Box
Numele Metodei
|
Descriere
|
Items.Add
(Adaugă element)
|
Adaugă un singur element la list box.
|
Items.Clear
(Şterge)
|
Şterge toate elementele din listă
|
SelectedIndex
|
Are ca valoare numărul articolului selectat în cadrul list box .
|
Items.Count
(Număr elemente listă)
|
Are ca valoare numărul total de elemente dintr-un list box.
|
Items.Remove
(Şterge element)
|
Şterge un singur element din listă.
|
SelectedItem
(Selectat)
|
Arată dacă utilizatorul a selectat un anumit element din list box. Dacă are valoarea True elementul e selectat.
|
3.6. CASETA COMBINATĂ (COMBOBOX)
Caseta combinată este un control care combină caracteristicile controlului casetă cu listă cu cele ale controlului casetă de text.
Dacă utilizatorul nu doreşte să selecteze nici una din opţiunile din listă poate să adauge una în porţiunea casetei de text a controlului.
Proprietatea Text controlează selecţia articolelor din lista ComboBox. Aceasta înseamnă că aici vom găsi conţinutul articolului selectat la un moment dat.
Observaţie:
Articolul selectat din lista ComboBox la un moment dat se înscrie automat în proprietatea Text.
Exerciţiu:
Să se realizeze o aplicaţie care să afişeze o listă de produse, utilizatorul având posibilitatea selectării unei poziţii. Produsul astfel selectat să fie transferat într-o listă (ListBox) şi afişat pentru control într-o casetă de tip text (TextBox).
Proiectăm forma şi apoi scriem codul. Lista iniţială de produse o definim ca un ComboBox.
La acţionarea butonului de comandă EXECUTA articolul selectat din Lista de produse va fi transferat în caseta de tip listă din dreapta şi afişat în caseta de text.
Forma proiectată Execuţia aplicaţiei
Codul corespunzător celor două butoane de comandă este:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
ListBox1.Items.Add(ComboBox1.Text)
TextBox1.Text = ComboBox1.Text
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
End
End Sub
Prezentăm în continuare principalele proprietăţi şi evenimente ale controlului ComboBox:
Tabelul 11.4 Proprietăţile casetei combinate (ComboBox))
Proprietate
|
Descriere
|
Back Color
(Culoarea de fundal)
|
Culoarea de fundal a casetei combo. Numărul său hexadecimal reprezintă una din mulţimea de valori posibile de culoare din Windows. Puteţi selecta dintr-o paletă de culori afişată de Visual Basic când doriţi să stabiliţi această proprietate. Culoarea prestabilită (default) este aceeaşi cu cea a formei.
|
Enabled
(Activat)
|
Dacă este setat pe True (default), controlul casetei combo poate răspunde la evenimente. Altfel, Visual Basic opreşte procesarea evenimentelor pentru controlul respectiv.
|
Font Bold
|
True (default), dacă valorile combo sunt afişate în caractere bold. Altel, Fals.
|
Font Italic
|
True (default), dacă valorile combo sunt afişate în caractere italice. Altel, Fals.
|
Font Name
(Numele fontului)
|
Numele stilului de text folosit în caseta combo. În mod normal, veţi folosi numele unui font TrueType din Windows.
|
Font Size
(Mărime font)
|
Mărimea, în puncte, a caracterelor folosite pentru valorile din caseta combo.
|
Font Strikethrough
|
True(default), dacă valorile combo sunt afişate în caractere strikethrough (caracterele au o linie peste ele). Altel, Fals.
|
Font underline
(Font Subliniat)
|
True (default), dacă valorile din caseta combo sunt afişate în caractere subliniate. Altel, Fals.
|
ForeColor
|
Culoarea valorilor din interiorul casetei combo.
|
Height
(Înălţimea)
|
Înălţimea unui control de tip casetă combo.
|
Cursor
(Cursorul de mouse)
|
Forma pe care o ia cursorul atunci când utilizatorul mişcă mouse-ul peste controlul casetei combo. Reprezintă o gamă de forme diferite pe care le poate lua cursorul.
|
Name
(Numele)
|
Numele controlului. Default, Visual Basic generează numele Combo1, Combo2 şi aşa mai departe, pe măsură ce adăugaţi mai multe controale la formă
|
Sorted
(Sortare)
|
Dacă este Fals (default), valorile din listă apar în aceeaşi ordine în care programul le-a adăugat. Dacă este True Visual Basic afişează valorile din caseta combo ordonate numeric sau alfabetic.
|
TabIndex
|
Ordinea de numerotare a controalelor de pe o formă începe de la 0 şi creşte de fiecare dată când adăugaţi un nou control. Puteţi schimba ordinea evidenţierii schimbând TabIndex la alte valori. Nu se poate ca două controale de pe aceeaşi formă să aibă aceeaşi valoare TabIndex.
|
TabStop
|
Dacă este True, utilizatorul poate apăsa Tab pentru a muta evidenţierea pe această casetă combo. Dacă este fals, această casetă nu poate fi activată cu Tab.
|
Tag
|
Nu se foloseşte de către Visual Basic. Aceasta este destinată programatorului pentru identificarea unui comentariu aplicat la controlul casetei combo.
|
Text
|
Valoarea iniţială pe care utilizatorul o vede în caseta combo. Ulterior aici se depune valoarea selectată.
|
Visible
(Vizibil)
|
Adevarat sau fals, arată dacă utilizatorul poate vedea sau nu (şi deci poate folosi sau nu) controlul respectiv.
|
Width
(Lăţimea)
|
Numărul de twips pe care le ocupă controlul casetei combo în lăţime.
|
Notă:
Observaţi că nu există proprietatea Selecţie Multiplă la caseta combo, ca în cazul controlului List box. Utilizatorul poate selecta doar un singur element din listă la un moment dat.
Tabelul 2 conţine o serie de evenimente ale casetei combinate pentru care puteţi scrie proceduri echivalente atunci când programul trebuie să reacţioneze la manipularea unei casete combo de către utilizator.
Tabelul 2. Evenimentele controlului casetă combinată (ComboBox)
Eveniment
|
Descriere
|
Click
|
Apare când utilizatorul efectuează click pe controlul casetei combo.
|
DragDrop
|
Apare când operaţiunea “drag” a unei casete combo se încheie.
|
DragOver
|
Apare în timpul unei operaţiuni “drag”.
|
KeyDown
|
Apare când utilizatorul apasă o tastă, atât timp cât proprietatea Previzualizare Tastă are valoarea True pentru controalele de pe formă; altfel, forma primeşte evenimentul KeyDown.
|
KeyPress
|
Apare când utilizatorul apasă o tastă peste caseta combo.
|
KeyUp
|
Apare când utilizatorul eliberează o tastă pe caseta combo.
|
Observaţie:
Controalele casetei combo susţin aceleaşi metode ca şi controalele list box. Prin urmare, puteţi adăuga, elimina, număra şi selecta elementele din caseta combo, dacă aplicaţi metodele din tabelul prezentat la controlul ListBox.
3.7. CASETA CU POZE (PICTUREBOX)
Este un control utilizat pentru a pentru a afişa poze şi imagini grafice. Poza care se afişează este stabilită de proprietatea Image care utilizează ca valoare numele fişierului care conţine poza (opţional se poate specifica şi calea).
În timpul execuţiei programului, pentru a afişa o poză sau pentru a o schimba se foloseşte funcţia Load pentru a stabili proprietatea Image.
PictureBox1.Load(˝Poza.gif˝)
Dacă poza care va fi afişată nu are aceeaşi dimensiune cu ceea a controlului, se poate seta proprietatea SizeMode=AutoSize şi astfel controlul va avea aceleaşi dimensiuni cu poza. Atenţie însă, căci redimensionarea controlului nu va ţine cont de celelalte elemente de interfaţă, putând să le acopere.
Caseta cu poză poate fi folosită şi drept container pentru alte controale. De exemplu, plasând în caseta de poze controale imagine care să se comporte ca butoane, aceasta se poate transforma în bară de instrumente sau introducând controale etichetă care să afişeze text aceasta se poate transforma în bară de stare.
Exerciţiu:
Să se realizeze o aplicaţie ce afişează o casetă cu poze care să apară sau să dispară în timpul execuţie aplicaţiei, la cererea utilizatorului. Aplicaţia trebuie să permită comutarea între două imagini ce se vor afişa.
Am proiectat formularul, am încărcat iniţial o poză în caseta cu poze şi am prevăzut cele 3
butoane necesare.Executând aplicaţia şi acţionând apoi butoanele de comandă aflate la dispoziţia noastră se obţine:
Acţionând butonul Încarcă alta se încarcă în caseta cu poze cealaltă imagine. Dacă se mai acţionează odată, se va încărca din nou prima imagine.
Prin urmare, acest buton funcţionează ca un comutator.
Procedurile scrise în acest caz sunt:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If PictureBox1.Visible = True Then
PictureBox1.Visible = False
Else : PictureBox1.Visible = True
PictureBox1.Load()
End If
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
End
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
If comut = 0 Then
PictureBox1.ImageLocation = "C:\Users\Public\Pictures\Sample Pictures\Hydrangeas.jpg"
comut = 1
Else : PictureBox1.ImageLocation = "C:\Users\Public\Pictures\Sample Pictures\Tulips.jpg"
comut = 0
End If
End Sub
3.8. CASETE DE DIALOG PREDEFINITE
Un mod simplu de a adăuga o casetă de dialog aplicaţiei noastre este să folosim casetele de dialog predefinite, deoarece în acest caz nu trebuie să ne preocupăm de designul, încărcarea şi afişarea casetei.
Pentru aceasta Visual Basic ne pune la dispoziţie două funcţii:
-
InputBox care afişează o casetă de dialog ce permite preluarea datelor de la utilizator;
-
MsgBox care permite afişarea diferitelor informaţii, mesaje.
a). Funcţia InputBox afişează o casetă de dialog modală care cere utilizatorului să introducă date. Funcţia returnează o valoare de tip String formată din caracterele introduse de utilizator în caseta cu text din fereastra de dialog atunci când utilizatorul apasă butonul OK; dacă se apasă butonul Cancel şirul returnat este şirul vid ˝˝.
Sintaxa:
InputBox(prompt[, title] [, default] [, xpos] [, ypos] [, helpfile, context]) unde:
-
prompt – este un şir de caractere afişat ca mesaj în caseta de dialog. Numărul maxim de caractere este de 1024;
-
title – este un şir de caractere care va fi afişat ca titlu în bara de titlu a casetei de dialog;
-
default – este un şir de caractere ce va fi afişat în caseta cu text şi care va fi returnat de funcţie în caz că utilizatorul nu introduce alte date;
-
xpos, ypos – expresii numerice care specifică coordonatele colţului stânga sus al casetei de dialog faţă de colţul stânga sus al ecranului;
-
helpfile – un şir de caractere ce specifică numele fişierului Help ce va fi folosit pentru a oferi asistenţă în lucrul cu caseta de dialog;
Exemplu:
Să se introducă de la tastatură datele despre salariaţii unei firme şi să se adauge într-o casetă tip listă.
Am proiectat formularul şi apoi am lansat în execuţie aplicaţia:
Acţionând butonul ADAUGA apare caseta de dialog care permite introducerea datelor, sub forma:
Datele introduse de la tastatură se vor atribui, pe rând, elementelor din listă. Pentru aceasta e necesar un contor (i, de tip întreg) care va fi incrementat (crescut) cu 1 pentru fiecare nouă citire de la tastatură. Contorul va controla astfel poziţia articolului adăugat în listă (List1.list(i)).
Ca efect numele persoanelor introduse de la tastatură se regăsesc în caseta tip listă, astfel:
Procedurile asociate celor două butoane sunt:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
ListBox1.Items.Add(InputBox("dati numele:"))
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
End
End Sub
b). Funcţia MsgBox se poate utiliza pentru a obţine răspunsuri de tipul Da / Nu de la utilizatori sau pentru a afişa diferite mesaje de avertizare, erori, atenţionări. După citirea mesajului utilizatorul va apăsa un buton pentru a închide fereastra. Funcţia returnează un număr de tip Integer care precizează ce buton a fost apăsat.
Sintaxa funcţiei:
MsgBox(prompt[, buttons] [, title] [, helpfile, context]) unde:
-
prompt – este un şir de caractere afişat ca mesaj în caseta de dialog. Numărul maxim de caractere este de 1024;
-
buttons – este o expresie numerică ce reprezintă suma valorilor care specifică numărul şi tipul butoanelor afişate, iconiţa.
-
title – un şir de caractere ce va fi afişat ca titlu în bara de titlu a casetei de dialog;
-
helpfile - un şir de caractere ce specifică numele fişierului Help ce va fi folosit pentru a oferi asistenţă în lucrul cu caseta de dialog.
Exemplu:
În formularul de mai sus să se avertizeze, printr-un mesaj corespunzător, introducerea unei noi persoane în listă. Efectul execuţiei aplicaţiei este:
Codul procedurii este:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
MsgBox("Se va adauga o noua persoana...") ListBox1.Items.Add(InputBox("Dati numele:"))
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
End
End Sub
În legătură cu posibilităţile de afişare ale funcţiei MsgBox facem următoarele precizări:
Tabelul 1. Valorile tipului funcţiei MsgBox
Valoare
|
Valoare CONSTANT.TXT
|
Descriere
|
0
|
MB_OK
|
Butonul OK apare doar în caseta de mesaj
|
1
|
MB_OKCANCEL
|
Apar butoanele OK şi Cancel
|
2
|
MB_ABORTRETRYIGNORE
|
Apar butoanele Abort, Retry şi Cancel
|
3
|
MB_YESNOCANCEL
|
Apar butoanele Yes, No şi Cancel
|
4
|
MB_YESNO
|
Apar butoanele Yes şi No
|
5
|
MB_RETRYCANCEL
|
Apar butoanele Retry şi Cancel
|
16
|
MB_ICONSTOP
|
Afişează iconiţa cu semnul stop
|
32
|
MB_ICONQUESTION
|
Afişează iconiţa cu semnul întrebării
|
48
|
MB_ICONEXCLAMATION
|
Afişează iconiţa cu semnul exclamării
|
64
|
MB_ICONINFORMATION
|
Afişează iconiţa cu semnul de “informaţii”
|
0
|
MB_DEFBUTTON1
|
Primul buton este evidenţiat
|
256
|
MB_DEFBUTTON2
|
Al doilea buton este evidenţiat iniţial
|
512
|
MB_DEFBUTTON3
|
Al treilea buton este evidenţiat iniţial
|
4096
|
MB_SYSTEMMODAL
|
Aplicaţia utilizatorului este modală, ceea ce înseamnă că fereastra de mesaj trebuie rezolvată înainte de a trece la alt program Windows
|
Tabelul 3. Valorile redate ale butonului de comandă al funcţiei MsgBox()
Valoare
|
Valoare CONSTANT.TXT
|
Descriere
|
1
|
IDOK
|
Utilizatorul a apăsat butonul OK
|
2
|
IDCANCEL
|
Utilizatorul a apăsat butonul Cancel
|
3
|
IDABORT
|
Utilizatorul a apăsat butonul Abort
|
4
|
IDRETRY
|
Utilizatorul a apăsat butonul Retry
|
5
|
IDIGNORE
|
Utilizatorul a apăsat butonul Ignore
|
6
|
IDYES
|
Utilizatorul a apăsat butonul Yes
|
7
|
IDNO
|
Utilizatorul a apăsat butonul No
|
3.9. EDITAREA DE MENIURI
Orice program Windows care îndeplineşte mai multe funcţii pune la dispoziţia utilizatorului un meniu prin care prezintă aceste funcţii. Principala caracteristică a aplicaţiilor Windows o constituie faptul că permit realizarea unei interfeţe plăcute, comode, uşor de utilizat.
Acest lucru se realizează prin proiectarea unui meniu de comenzi corespunzător. Meniul conţine principalele comenzi pe care utilizatorul le poate utiliza în cadrul aplicaţiei. Un meniu bun va face aplicaţia uşor de folosit. Un meniu mai puţin bine conceput va încurca adeseori utilizatorul, care nu va înţelege bine cum funcţionează programul respectiv.
O posibilitate de a realiza meniuri uşor accesibile o constituie prezentarea funcţiunilor aplicaţiei prin butoane de comandă, butoane de opţiuni sau casete de validare, care permit şi controlează succesiunea formularelor în cadrul proiectului (aşa cum am văzut la aplicaţiile realizate până acum).
Microsoft a încercat să impună o tradiţie în modul de proiectare a meniurilor. Majoritatea barelor de meniuri din aplicaţiile Windows conţin meniuri ca: File, Edit, View, Window sau Help. De aceea se recomandă, dacă este posibil, ca meniurile aplicaţiilor noastre să se asemene cât mai mult cu meniurile întâlnite la majoritatea aplicaţiilor Windows. În acest fel utilizatori aplicaţiei se vor familiariza foarte repede cu ea.
În acest sens, mediul de programare Visual Basic pune la dispoziţia programatorilor un editor de meniuri cu ajutorul căruia se pot crea meniuri oricât de complexe într-un mod relativ simplu. Trebuie să stabilim însă cu multă atenţie proprietăţile fiecărui element care va forma meniul.
Apelarea editorului se face folosind Toolbox-ul şi de acolo opţiunea Menus & Toolbars şi se selectează obiectul Menu Strip.
Exerciţiu:
Să se proiecteze un meniu care să pună la dispoziţia utilizatorului opţiuni pentru toate problemele rezolvate de noi până acum.
Rezolvare:
Să presupunem că acestea pot fi grupate în 4 grupe mari de funcţiuni şi anume:
Calcule (aritmetice sau pentru expresii), Imagini (una sau mai multe), Şiruri (concatenare sau căutare) şi Ieşire.
Formular proiectat Formular executat
3.10. STRUCTURI DE CONTROL
În cadrul oricărui algoritm de rezolvare a unei probleme se pot identifica diferite structuri de control.
În cadrul programelor, structurile de control sunt formate din instrucţiuni. Acestea descriu practic partea algoritmică a unui program. Ele pot fi prefixate de etichete pentru a putea fi referite în instrucţiunea de salt necondiţionat Goto.
Structura liniară
Structura liniară poate conţine o succesiune de instrucţiuni de tipul:
-
instrucţiunea de atribuire
-
instrucţiunea de apel procedură.
Instrucţiunea cea mai importantă şi cea mai frecventă a limbajului este instrucţiunea de atribuire, având forma:
variabilă = expresie
sau
Set variabilă = obiect
sau
Nume_de_funcţie = expresie
Instrucţiunea specifică faptul că unei variabile sau unei funcţii (cea din stânga semnului = ) îi este atribuită o nouă valoare, care este specificată printr-o expresie sau printr-un obiect. O expresie este o construcţie prin care se reprezintă o formulă pentru calculul valorii unui obiect oarecare. O expresie constă dintr-o secvenţă formată din operanzi (variabile, constante, etc.) şi operatori (simboluri operaţionale).
Instrucţiunea de apel procedură specifică activarea (apelul) procedurii al cărui nume apare în instrucţiune şi are forma:
nume_de_procedură listă_parametri_actuali
sau
Call nume_de_procedură(listă_parametri_actuali)
Structura alternativă
Structura alternativă este descrisă cu ajutorul instrucţiunilor If …Then, If …Then …Else şi Select Case.
Visual Basic oferă o alternativă la instrucţiunea If… Then…Else ce permite executarea unui bloc de instrucţiuni dintre mai multe în cazul în care este îndeplinită o anumită condiţie şi anume instrucţiunea Select Case.
Structura repetitivă
Această structură permite repetarea în anumite condiţii a unei instrucţiuni sau a unei secvenţe de instrucţiuni. Visual Basic suportă două tipuri de structuri repetitive: structuri repetitive cu contor descrise de instrucţiunile For …Next şi For…Each…Next care execută acelaşi lucru de un număr stabilit de ori şi structuri repetitive cu condiţie descrise de diferitele variante ale instrucţiunii Do…Loop ce îndeplinesc aceeaşi sarcină atâta timp cât o condiţie există sau până când nu mai există o condiţie.
Exemplu:
Do While i<=9
MsgBox ˝Este repetarea numărului: ˝ + str(i)
Loop
3.11. PROBLEME REZOLVATE
-
Să se realizeze o aplicaţie care să permită afişarea produselor din două nomenclatoare, fiecare în câte o listă. La apăsarea unui buton de comandă elementele selectate din prima listă să se mute în cea de-a doua listă. La apăsarea unui alt buton de comandă toate elementele din prima listă să se mute în cea de-a doua listă.
Alte două butoane să permită apoi aceleaşi operaţii din lista2 în lista1.
Rezolvare:
În casetele de tip Text de sub cele două liste dorim să afişăm, atunci când se face un clic mouse în interiorul unei liste, numărul de elemente din lista respectivă.
Codul aferent procedurilor scrise se prezintă astfel:
Public Class Form1
Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click
End
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
' Dim b As Integer
If ListBox1.Items.Count > 0 Then
'b = ListBox1.SelectedIndex
For i = 0 To ListBox1.Items.Count - 1
If ListBox1.GetSelected(i) = True Then
Me.ListBox2.Items.Add(Me.ListBox1.Items.Item(i))
End If
Next i
'Me.ListBox1.Items.RemoveAt(b)
End If
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
If ListBox1.Items.Count > 0 Then
ListBox2.Items.Clear()
For i = 0 To ListBox1.Items.Count - 1
Me.ListBox2.Items.Add(Me.ListBox1.Items.Item(i))
Next i
End If
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
'Dim c As Integer
If ListBox2.Items.Count > 0 Then
'c = ListBox2.SelectedIndex
For i = 0 To ListBox2.Items.Count - 1
If ListBox2.GetSelected(i) = True Then
Me.ListBox1.Items.Add(Me.ListBox2.Items.Item(i))
End If
Next i
' Me.ListBox2.Items.RemoveAt(c)
End If
End Sub
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
If ListBox2.Items.Count > 0 Then
ListBox1.Items.Clear()
For i = 0 To ListBox2.Items.Count - 1
Me.ListBox1.Items.Add(Me.ListBox2.Items.Item(i))
Next i
End If
End Sub
Private Sub ListBox1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles ListBox1.Click
TextBox1.Text = ListBox1.Items.Count
End Sub
Private Sub ListBox2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles ListBox2.Click
TextBox2.Text = ListBox2.Items.Count
End Sub
End Class
2. Să se realizeze un minicalculator care să aibă formatul de mai jos.
Se cere ca în dreptul primelor două ecrane să scrie A, respectiv B iar la ultimul operaţia efectuată: A+b, A-B, A*B, A/B după cum a fost acţionat butonul de +,-, * sau /. Rezultatul va fi afişat în ultima casetă de text.
Formatul
cerut
Rezolvare:
Se proiectează forma, se înscriu pe butoanele de comandă operatorii aritmetici prin intermediul proprietăţii Text, se adaugă apoi două butoane: Reset şi Exit pentru cele două funcţii obligatorii în orice aplicaţie.
În partea stângă vom defini trei etichete, dintre care primele două cu un text fixat iniţial tot prin Text, şi a treia etichetă cu valoarea proprietăţii Text controlată prin program, pentru a corespunde operatorului cerut.
Executînd aplicaţia se obţine:
Se observă că la împărţire se verifică mai întâi dacă împărţitorul este diferit de 0 şi, dacă nu este, se afişează un mesaj de eroare.
Procedurile asociate butoanelor de comandă se prezintă astfel:
Public Class Form1
Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click
End
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
TextBox3.Text = Str(Val(TextBox1.Text) + Val(TextBox2.Text))
Label4.Text = "A+B"
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
TextBox3.Text = Str(Val(TextBox1.Text) - Val(TextBox2.Text))
Label4.Text = "A-B"
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
TextBox3.Text = Str(Val(TextBox1.Text) * Val(TextBox2.Text))
Label4.Text = "A*B"
End Sub
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
Label4.Text = "A/B"
If Val(TextBox2.Text) <> 0 Then
TextBox3.Text = Str(Val(TextBox1.Text) / Val(TextBox2.Text))
Else
TextBox3.Text = "EROARE"
End If
End Sub
Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
TextBox1.Text = ""
TextBox2.Text = ""
TextBox3.Text = ""
Label4.Text = " "
End Sub
End Class
3. Să se realizeze un alt calculator simplu, în care operaţiile de calcul să corespundă unor butoane de opţiuni (butoane radio).
Rezolvare:
Codul sursă aferent procedurilor va fi în acest caz:
Public Class Form1
Dim n As Double
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
End
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
On Error Resume Next
If RadioButton1.Checked = True Then
TextBox3.Text = Val(TextBox1.Text) + Val(TextBox2.Text)
ElseIf RadioButton2.Checked = True Then
TextBox3.Text = Val(TextBox1.Text) - Val(TextBox2.Text)
ElseIf RadioButton3.Checked = True Then
TextBox3.Text = Val(TextBox1.Text) * Val(TextBox2.Text)
ElseIf RadioButton4.Checked = True Then
If TextBox2.Text = "0" Then
MsgBox("Nu se poate imparti la 0", vbCritical, "Eroare")
TextBox2.Text = ""
Else
TextBox3.Text = Val(TextBox1.Text) / Val(TextBox2.Text)
End If
ElseIf RadioButton5.Checked = True Then
TextBox2.Text = "0"
TextBox2.Enabled = False
If Val(TextBox1.Text) < 0 Then
MsgBox("Nu se poate extrage radical de ordin 2 din numere negative", vbCritical, "Eroare")
Else
n = Val(TextBox1.Text)
TextBox3.Text = System.Math.Sqrt(n)
End If
End If
TextBox2.Enabled = True
End Sub
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
TextBox1.Text = "0"
TextBox2.Text = "0"
TextBox3.Text = "0"
End Sub
Private Sub RadioButton5_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton5.CheckedChanged
TextBox2.Enabled = False
End Sub
End Class
4. Să se proiecteze şi să se realizeze efectiv un mic calculator de buzunar, care să conţină un ecran (TextBox) pentru afişarea operanzilor şi apoi al rezultatului obţinut.
Calculatorul are prevăzute taste pentru tastarea cifrelor care compun operanzii şi taste corespunzătoare operatorilor aritmetici, precum şi semnului = . Primul operand se termină atunci când se apasă pe tasta corespunzătoare unui operator (şi trebuie reţinut într-o variabilă de memorie). Al doilea operand se termină atunci când se apasă pe tasta =.
Se cere să se afişeze rezultatul obţinut şi apoi să se adauge într-o listă (ListBox) întreaga operaţie efectuată. Calculatorul trebuie să permită apoi reluarea altei operaţii dorite.
Sugestie:
Toate cifrele de la 0 la 9, precum şi operatorii aritmetici vor avea câte un buton de comandă corespunzător. Pentru afişarea cifrelor tastate prin apăsarea butoanelor calculatorului, vom ţine seama de faptul că şirul din caseta de tip text se termină la apăsarea unei taste de operaţie. Pentru fiecare tastă de cifră în procedura asociată vom avea o instrucţiune de forma:
Text1.text= Text1.text+”1” pentru cifra 1, etc.
Pentru adăugarea în listă vom realiza o concatenare a operanzilor cu operatorii şi cu rezultatul, vom depune şirul astfel obţinut într-o variabilă de tip şir de caractere şi apoi vom adăuga în listă conţinutul acestei variabile.
5. Să se proiecteze şi să se realizeze o aplicaţie care să permită analiza unui text introdus de la tastatură, afişarea primului cuvânt şi apoi la cerere a următoarelor cuvinte din text. Să se afişeze deasemenea numărul de caractere din text.
Rezolvare:
Public Class Form1
Dim cuv As String
Dim lung As Integer
Dim i1 As Integer
Dim i As Integer
Dim a As Integer
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
End
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
LTrim(Me.TextBox1.Text)
Text = Me.TextBox1.Text
lung = Len(Text)
Me.TextBox3.Text = Len(Text)
a = InStr(Text, " ")
i = 1
cuv = Mid(Text, i, a)
Me.TextBox2.Text = cuv
i = a
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
a = InStr(Text, " ")
If i < lung - a Then
a = InStr(Mid(Text, i + 1, lung - i), " ")
cuv = Mid(Text, i, a)
Me.TextBox2.Text = cuv
Me.Refresh()
i = i + a
Else
cuv = Mid(Text, i, a)
Me.TextBox2.Text = cuv
Me.Refresh()
End If
End Sub
End Class
6. Să se realizeze un editor de texte, care să permită introducerea unui text de la tastatură şi apoi salvarea lui pe disc prin intermediul unei ferestre de dialog. Editorul trebuie să permită şi deschiderea unui fişier existent în vederea editării.
Rezolvare:
Am proiectat 3 forme astfel:
În urma execuţiei se obţine:
Codul sursă aferent primei forme:
Imports System
Imports System.IO
Public Class Form1
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
End
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
TextBox1.Text = ""
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Form2.Show()
Form2.TextBox1.Text = ""
Form2.TextBox2.Text = ""
On Error Resume Next
Me.Hide()
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Form3.Show()
Me.Hide()
End Sub
End Class
Codul sursă aferent formei a II-a:
Imports System
Imports System.IO
Public Class Form2
Private Sub DriveListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DriveListBox1.SelectedIndexChanged
Try
DirListBox1.Path = DriveListBox1.Drive
Catch
End Try
TextBox1.Text = DirListBox1.Text
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Form1.Show()
Me.Hide()
End Sub
Private Sub DirListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DirListBox1.SelectedIndexChanged
Try
FileListBox1.Path = DirListBox1.Path
Catch
End Try
TextBox2.Text = Me.TextBox2.Text & Me.DirListBox1.SelectedItem & "\"
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Me.TextBox1.Text = Me.TextBox1.Text & Me.TextBox2.Text & Me.FileListBox1.SelectedItem
Try
Using fisier As StreamReader = New StreamReader(Me.TextBox1.Text)
Dim linie As String
Do
linie = fisier.ReadLine()
Form1.TextBox1.Text = Form1.TextBox1.Text & linie
Loop Until linie Is Nothing
fisier.Close()
End Using
Catch
End Try
Form1.Show()
Me.Hide()
End Sub
Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
TextBox2.Text = ""
TextBox1.Text = ""
Me.DirListBox1.Refresh()
Me.FileListBox1.Refresh()
Me.DriveListBox1.Refresh()
End Sub
Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
FileListBox1.Pattern = Me.ComboBox1.Text
End Sub
End Class
Codul aferent formei a treia se prezintă astfel:
Imports System
Imports System.IO
Public Class Form3
Private Sub DriveListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DriveListBox1.SelectedIndexChanged
Try
DirListBox1.Path = DriveListBox1.Drive
Catch
End Try
TextBox2.Text = DirListBox1.Text
End Sub
Private Sub DirListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DirListBox1.SelectedIndexChanged
Try
FileListBox1.Path = DirListBox1.Path
Catch
End Try
TextBox3.Text = Me.TextBox3.Text & Me.DirListBox1.SelectedItem & "\"
End Sub
Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
FileListBox1.Pattern = Me.ComboBox1.Text
End Sub
Private Sub Form3_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
TextBox1.Text = ""
TextBox2.Text = ""
TextBox3.Text = ""
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Form1.Show()
Me.Hide()
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
TextBox1.Focus()
If TextBox1.Text = "" Then
MessageBox.Show("Nu ati introdus numele fisierului!!!", "Atentie", MessageBoxButtons.OK, MessageBoxIcon.Warning)
Else
TextBox4.Text = Me.TextBox2.Text & TextBox3.Text & TextBox1.Text
Using fisier As StreamWriter = New StreamWriter(TextBox4.Text)
fisier.WriteLine(Form1.TextBox1.Text)
fisier.WriteLine(DateTime.Now)
fisier.Close()
MessageBox.Show("Fisierul a fost salvat in " & Me.TextBox4.Text, "Save", MessageBoxButtons.OK, MessageBoxIcon.Question)
End Using
End If
End Sub
End Class
7. Să se proiecteze şi să se realizeze o aplicaţie care să ne pună la dispoziţie un ceas de alarmă.
Rezolvare:
Am proiectat două formulare, astfel:
Form1 este formularul în care este afişată ora sistemului şi conţine 2 butoane Alarmă şi Exit, un label (care afişează ora exactă) şi un textbox ascuns.
Dostları ilə paylaş: |