Professional Documents
Culture Documents
Programiranje 1 (550)
Poglavlje 8
Windows forme
dr
dr.. sc
sc.. Josip Musić
jmusic@
jmusic @fesb.hr
Poziva se
delegiranje
Delegiranje poziva
Delegiranje pridruženu oroceduru
3
Što je rukovatelj dogañaja?
Rukovatelj dogañaja je isječak koda koji se poziva kada je
pripadajući dogañaj podignut
postupak povezan s odreñenim dogañajem
kada je dogañaj podignut, kod unutar rukovatelja se izvodi
Dva argumenta dogañaja u rukovatelju
5
Windows forma
Forma je osnovni element grafičkog korisničkog
sučelja.
predstavlja informacije korisniku
uzima informacije od korisnika
Forma izlaže:
svojstva
definiraju pojavljivanje forma
postupke
definiraju ponašanje forme
dogañaje
definiraju interakciju sa korisnikom
6
Hijerarhija klasa Windows formi ?
System.Windows.Forms
Control
Control
bazna klasa za sve kontrole
osnovna funkcionalnost za kontrolu, poput veličine,
ScrollableControl
vidljivosti i tabulatornog reda
ScrollableControl
nasljeñuje direktno iz Control klase ContainerControl
osigurava mogućnost “skroliranja” za kontrole koje
zahtijevaju trake za pomicanje (scroll bars)
ContainerControl Form
nasljeñuje direktno iz ScrollableControl
dodaje upravljanje fokusom i tabulatornim redom za UserControl
kontrole koje mogu spremiti druge kontrole
Forms
nasljeñuje iz ContainerControl
predstavlja prozor prikazan u programu
UserControl
nasljeñuje iz ContainerControl
prazna kontrola koja se može koristiti za stvaranje
7 vlastitih kontrola
Korištenje svojstava forme
Name
ime forme u projektu
AcceptButton i CancelButton
pridružuje po jednu kontrolu dugmeta tipkama ENTER i ESC
StartPosition
pozicija forme na ekranu
Text
tekst prikazan u naslovu formu
DialogResult
odreñivanje odabranog dugmeta dijaloškog okvira
Font
ureñivanje pisma
Opacity
prozirnost forme
MaximumSize i MinimumSize
maksimalna i minimalna veličina forme
tip Size
Height
Width
TopMost
forma ostaje ispred svih drugih prozora i kada nema fokus
8 primjer, Windows Task Manager
Korištenje postupaka forme
CenterToScreen i CenterToParent
centriranje forme na ekranu ili na roditeljskoj formi
Close
zatvaranje forme i oslobañanje resursa
Load
učitavanje (ali ne i prikazivanje) forme
Show i ShowDialog
prikaz forme na ekranu
ShowDialog prikazuje formu kao dijaloški okvir
Focus
fokusiranje forme
Hide
uklanja formu sa ekrana, ne i iz memorije
9
Korištenje dogañaja forme
Activated i Deactivate
Activated se podiže kada je forma aktivirana kroz programski
kod ili akcijom korisnika.
Deactivate se podiže kada forma gubi fokus
Closing
podiže se kada započne zatvaranje forme i omogućuje odustajanje
od zatvaranja
Closed
nastaje nakon dogañaja Closing
može se upotrijebiti za snimanje informacija sa forme
MenuStart i MenuComplete
podižu se kada izbornik prima i gubi fokus
SizeChanged
podiže se kada se mjenjaju dimenzije forme
10
Primjer 1: dogañaji forme
Korištenje dogañaja forme Activated,, Closed,, Deactivate,,
SizeChanged i ispisivanje odgovarajuće poruke.
MsgBoxStyle i
MsgBoxResult – nabrajanja
MessageBox klasa
If MessageBox.Show("Odustajanje?", "Pitanje", _
MessageBoxButtons.OKCancel, MessageBoxIcon.Question) _
= DialogResult.Cancel Then
'...
End If
UserControl
DataGrid
ComboBox
Control
PictureBox
ButtonBase Button
CheckBox
TextBoxBase TextBox
Label
16
Korištenje svojstava i postupaka kontrola
Okvir za tekst (TextBox)
( )
Natpis (Label)
( )
opisni
izlazni
Dugme (Button)
( )
klik na dugme
AcceptButton i CancelButton svojstva forme
Okvir za potvrdu (CheckBox)
( )
Radio dugme (RadioButton)
( )
stvaranje grupa kontrola (GroupBox
( kontrola)
Okvir s popisom
rad sa stavkama
rad sa odabranim stavkama
17 Kombinirani okvir
Dodavanje kontrola za vrijeme izvoñenja
Zbirke kontrola
predstavljaju zbirku objekata izvedenih iz Control
Svojstvo Controls
koristi se Add,, Remove i RemoveAt za dodavanje i uklanjanje
kontrola iz zbirke
ostali postupci: Clear,, Contains
Count vraća broj kontrola unutar spremnika
18
Primjer 2: Kontrola spremnika
Korištenjem zbirke kontrola forme izbrišite sav
tekst unesen u kontrole okvira za tekst.
19
Primjer 3: Okvir s popisom
Potrebno je sve stavke koje su istovremeno odabrane u
jednom okviru s popisom ispisati korištenjem
MessageBox dijaloškog okvira.
Listu napuniti s nekoliko stavki kada je fokus na kontroli.
Odabrane stavke ispisati kada fokus gubi kontrolu
21
Rukovanje dogañajima miša
Dogañaji miša nastaju klikom ili pomakom miša.
Dogañaji miša:
MouseEnter
nastaje kada pokazivač miša ulazi na područje kontrole
MouseLeave
nastaje kada pokazivač miša napušta područje kontrole
MouseDown
nastaje kada se pritisne tipka miša dok je pokazivač iznad područja
kontrole
MouseHover
nastaje kada se pokazivač miša nalazi iznad područja kontrole
MouseMove
nastaje kada se pomiče pokazivač miša iznad kontrole
MouseUp
nastaje kada se otpusti tipka miša dok je pokazivač iznad područja
kontrole
MouseWheel
22 nastaje kada se pomiće kotačić miša dok je pokazivač iznad područja
kontrole
Redoslijed nastajanja dogañaja miša
Dogañaji miša nastaju sljedećim redom:
1. MouseEnter
2. MouseMove
3. MouseHover / MouseDown / MouseWheel
4. MouseUp
5. MouseLeave
23
MouseEventArgs klasa
Sadrži informacije o dogañaju miša:
Button – odreñuje koja tipka miša je pritisnuta
MouseButtons nabrajanje
Left,, Middle,, None,, Right …
Clicks – pokazuje koliko puta je tipka pritisnuta
X, Y – koordinate dogañaja
relativne prema kontroli
X – x koordinata
Y – y koordinata
Delta – zakret kotačića miša
Dogañaji: MouseUp,, MouseDown,, MouseMove i
MouseHover
24
Primjer 2: Dogañaji miša
Pohranjivanje koordinate dogañaja klika mišem na formu
u jednodimenzionalni niz. U zaglavlju forme se ispisuje
udaljenost točke klika od ishodišta.
27
KeyPress dogañaj
Pojavljuje se kada je tipka pritisnuta dok kontrola
ima fokus.
e - argument tipa KeyPressEventArgs
Svojstva:
Handled
odreñuje da li je KeyPress dogañaj rukovan
postavljanjem na True poništava se daljnja obrada dogañaja
KeyChar
vraća ASCII znak pritisnute tipke
28
Primjer 3: KeyPress dogañaj
Pretvoriti malo slova uneseno u kontrolu okvira za
tekst u veliko prije nego što bude ispisano u
kontroli.
29
KeyUp i KeyDown dogañaji
Pojavljuju se kada je tipka pritisnuta (KeyUp)
( ) odnosno otpuštena (KeyDown).
( ).
e - argument tipa KeyEventArgs
Svojstva:
Alt - ukazuje da li je pritisnuta tipka Alt
Control - ukazuje da li je pritisnuta tipka Control
Shift - ukazuje da li je pritisnuta tipka Shift
KeyCode
vraća kod pritisnute tipke kao Keys nabrajanje
ne uključuje informacije o modifikatorskim tipkama
koristi se za testiranje odreñene tipke
KeyData
vraća kod pritisnute tipke kao Keys nabrajanje
uključuje informacije o modifikatorskim tipkama
sadrži sve informacije o pritisnutoj tipki
KeyValue
vraća kod tipke kao Integer
numeričko predstavljanje pritisnute tipke
Modifiers
vraća Keys nabrajanje za bilo koju pritisnutu modifikatorsku tipku (Alt
(Alt,,
Control i Shift
Shift))
30 koristi se samo za informaciju o modifikatorskim tipkama
Handled – odreñuje da li je dogañaj rukovan
Primjer 4: KeyUp i KeyDown dogañaji
Private Sub Form1_KeyPress(ByVal sender As Object, _
ByVal e As System.Windows.Forms.KeyPressEventArgs) _
Handles MyBase.KeyPress
Character.Text = "Pritisnuta tipka:" & e.KeyChar
End Sub
Private Sub Form1_KeyDown(ByVal sender As Object,
ByVal e As System.Windows.Forms.KeyEventArgs) _
Handles MyBase.KeyDown
Information.Text = ""
'ako je pritisnuta tipka ALT
If e.Alt Then
Information.Text &= "Alt: Da" & vbCrLf
Else
Information.Text &= "Alt: Ne" & vbCrLf
End If
'...
Information.Text &= "KeyCode: " & e.KeyCode.ToString & _
vbCrLf & "KeyData: " & e.KeyData.ToString & _
vbCrLf & "KeyValue: " & e.KeyValue
End Sub
31
Zadatak 2: Dogañaji tipkovnice
Potrebno je dodati funkcionalnost kontroli za tekst
tako da dozvoljava unos samo numeričkih
vrijednosti. Omogućiti povećavanje/smanjivanje
unesene vrijednosti s korakom 1 pritiskom na
tipke Up i Down.
32
Provjera korisničkog unosa
CausesValidation svojstvo
Validate dogañaj
ErrorProvider kontrola
MaskEdit kontrola
Nastajanje dogañaja kontrole
1. Enter
2. GotFocus
3. Leave
4. Validating
5. Validated
6. LostFocus
33
Validating dogañaj
Koristi se za provjeru korisničkog unosa.
Ako se svojstvo Cancel od CancelEventArgs
postavi na True fokus neće napustiti kontrolu.
Ako se svojstvo Cancel od CancelEventArgs
postavi na False podižu se Validated i
LostFocus dogañaji.
CausesValidation svojstvo odreñuje da li
prethodna kontrola sudjeluje u provjeri ispravnosti.
ako je False ne podiže se dogañaj provjere
34
Primjer: Validating dogañaj
Private Sub NumericBox_KeyPress(ByVal sender As System.Object, _
ByVal e As System.Windows.Forms.KeyPressEventArgs) _
Handles MaxBox.KeyPress, MinBox.KeyPress
e.Handled = True
If e.KeyChar.IsDigit(e.KeyChar) Then
sender.AppendText(e.KeyChar)
End If
End Sub
Private Sub NumericBox_KeyDown(ByVal sender As System.Object, _
ByVal e As System.Windows.Forms.KeyEventArgs) _
Handles MaxBox.KeyDown, MinBox.KeyDown
If e.KeyCode = Keys.Up Then sender.Text += 1
If e.KeyCode = Keys.Down Then sender.Text -= 1
End Sub
Private Sub MaxBox_Validating(ByVal sender As System.Object, _
ByVal e As System.ComponentModel.CancelEventArgs) _
Handles MaxBox.Validating
If CInt(MinBox.Text) >= CInt(MaxBox.Text) Then
e.Cancel = True : MessageBox.Show("Mora biti MAKS>MIN!")
End If
End Sub
35