3 proiectarea unei forme (formular) Formele


Tabelul 2 Evenimentele controlului List Box



Yüklə 0,99 Mb.
səhifə3/5
tarix27.07.2018
ölçüsü0,99 Mb.
#60537
1   2   3   4   5

Tabelul 2 Evenimentele controlului List Box


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.
untitled.pnguntitled.png

Forma proiectată Execuţia aplicaţiei


untitled.pnguntitled.png
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.



untitled.png

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:

untitled.png
untitled.pnguntitled.png
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ă.

untitled.png

Am proiectat formularul şi apoi am lansat în execuţie aplicaţia: untitled.png


Acţionând butonul ADAUGA apare caseta de dialog care permite introducerea datelor, sub forma:

untitled.png

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:

untitled.png

Procedurile asociate celor două butoane sunt:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Clickuntitled.png

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.untitled.png

    Î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.

untitled.pnguntitled.png

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


  1. 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.



Yüklə 0,99 Mb.

Dostları ilə paylaş:
1   2   3   4   5




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©muhaz.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin