IntegrovanΘ prost°edφ rubriky Visual Basic |
Autor: Jßn Hanßk |
|||||||
|
Programßtorskß laborato° |
|||||||
Prostor pro experimentovßnφ |
||||||||
╚asovß nßroΦnost (min): 70 |
ZaΦßteΦnφk |
PokroΦil² |
Profesionßl |
|||||
|
|
|
||||||
|
Pou₧it² operaΦnφ systΘm : Hlavnφ v²vojov²
nßstroj : DalÜφ v²vojov² software : Jin² software : |
Windows 2000 SP3 Visual Basic .NET
2002 Äßdn² Äßdn² |
||||||
|
|
|
||
|
|
||
|
|
Pou₧itφ sdφlen²ch datov²ch Φlen∙, vlastnostφ a metod
Zßjemci o studium objektov∞ orientovanΘho programovßnφ ve Visual Basicu .NET Φasto narß₧ejφ na potφ₧e ve chvφli, kdy se jich zeptßte, jak² je rozdφl mezi instanΦnφmi datov²mi Φleny, vlastnostmi a metodami a jejich sdφlen²mi prot∞jÜky. ZkuÜen∞jÜφ jedinci sice dokß₧φ vysv∞tlit v²znam a pou₧itφ instanΦnφch datov²ch polo₧ek na p°ijatelnΘ ·rovni, ovÜem o°φÜkem tak°ka v₧dycky b²vß charakteristika sdφlen²ch datov²ch Φlen∙. Abychom si ud∞lali v nastφn∞nΘ situaci po°ßdek, zam∞°φme se na popis jak instanΦnφch datov²ch polo₧ek, tak i jejich sdφlen²ch koleg∙.
Jist∞ vφte, ₧e kdy₧ pou₧ijete sprßvnou syntaxi p°φkazu s klφΦov²m slovem New a nßzvem t°φdy, vytvo°φte instanci danΘ t°φdy. Tato nov∞ vytvo°enß instance je ulo₧ena do generace 0 °φzenΘ hromady poΦφtaΦe.
|
╪φzenß hromada je oblast poΦφtaΦovΘ pam∞ti, do kterΘ jsou uklßdßny takzvanΘ
°φzenΘ instance t°φd. ╪φzenß hromada je kontrolovßna prost°ednictvφm
spoleΦnΘho b∞hovΘho prost°edφ (Common Language Runtime, CLR). CLR za ·Φelem
kontroly a sprßvy °φzenΘ hromady vyu₧φvß slu₧eb automatickΘ sprßvy pam∞ti
s nßzvem Garbage Collection. AΦkoliv nebudeme zachßzet p°φliÜ do
hloubky, m∞li byste v∞d∞t, ₧e instance, neboli objekty, jsou °azeny do t°φ
generacφ (generace 0, 1 a 2). NejmladÜφ, resp. posledn∞ vytvo°enΘ objekty,
jsou v₧dy umφs¥ovßny do nultΘ generace.á
|
á
V∞tÜina instancφ obsahuje svß vlastnφ data, kterß jsou ulo₧ena v privßtnφch datov²ch Φlenech ka₧dΘ instance. Instance se sv²mi daty pracujφ pomocφ programovacφch konstrukcφ, mezi n∞₧ pat°φ vlastnosti a metody. Ka₧dß vytvo°enß instance obsahuje svou vlastnφ kopii vÜech implementovan²ch datov²ch Φlen∙, co₧ znamenß, ₧e pro ka₧dou instanci a jejφ datovΘ polo₧ky je v pam∞ti vytvo°en separßtnφ prostor, ve kterΘm jsou ulo₧ena citlivß data danΘ instance. Tφmto zp∙sobem mohou r∙znΘ instance existovat a pracovat nezßvisle na sob∞. DatovΘ Φleny, kterΘ pat°φ instanci, se naz²vajφ instanΦnφ datovΘ Φleny. Analogicky, programovacφ konstrukce, kterΘ p°istupujφ k instanΦnφm datov²m Φlen∙m, tedy vlastnosti a metody, jsou znßmΘ jako instanΦnφ vlastnosti a metody. Pro instanΦnφ datovΘ Φleny, vlastnosti a metody je charakteristick² jejich vztah k danΘ instanci. JednoduÜe, instanΦnφ metody mohou provßd∞t operace jenom nad daty konkrΘtnφ instance.
Na druhΘ stran∞ existujφ sdφlenΘ datovΘ Φleny a takΘ sdφlenΘ vlastnosti a metody.
|
V n∞kter²ch programovacφch jazycφch, t°eba v C# a v
°φzenΘm C++, jsou datovΘ Φleny tohoto typu oznaΦovßny jako statickΘ. Pokud
tedy n∞kdy uslyÜφte svΘ kolegy pracujφcφ v C# mluvit o statick²ch metodßch,
budete v∞d∞t, ₧e jejich diskuse se toΦφ kolem sdφlen²ch metod. |
SdφlenΘ datovΘ Φleny se vztahujφ na t°φdu, spφÜe ne₧ na jednotlivΘ instance t°φdy. SdφlenΘ datovΘ Φleny jsou ve Visual Basicu .NET deklarovßny pomocφ klφΦovΘho slova Shared. Pro vÜechny sdφlenΘ datovΘ Φleny je na °φzenΘ hromad∞ vytvo°en souvisl² prostor bajt∙, v n∞m₧ jsou tyto sdφlenΘ datovΘ Φleny ulo₧eny. Aby bylo mo₧nΘ k sdφlen²m datov²m Φlen∙m p°istupovat, musejφ existovat takΘ sdφlenΘ vlastnosti a metody. Tyto entity operujφ se sdφlen²mi Φleny, tedy daty t°φdy.
áá
|
Je d∙le₧itΘ pochopit, ₧e sdφlenΘ vlastnosti a metody mohou pracovat
jenom se sdφlen²mi datov²mi Φleny t°φdy, nikoliv s datov²mi Φleny
instancφ danΘ t°φdy. |
áá
Abyste lΘpe pochopili rozdφl mezi instanΦnφmi datov²mi Φleny a sdφlen²mi datov²mi Φleny, prostudujte si nφ₧e uvedenΘ obrßzky.
Obr. 1 û Grafickß ilustrace
dvou objekt∙ a jejich datov²ch Φlen∙
Obr. 2 û Grafickß ilustrace
t°φdy a sdφlen²ch datov²ch Φlen∙
Na nßsledujφcφch °ßdcφch si p°edvedeme dv∞ programovΘ ukßzky, v nich₧ uvidφte pou₧itφ sdφlen²ch datov²ch Φlen∙, vlastnostφ a metod.
Ukßzka Φ. 1 û ZjiÜt∞nφ poΦtu alokovan²ch objekt∙ pomocφ sdφlen²ch Φlen∙
V prvnφ ukßzce uvidφte, jak nßm mohou sdφlenΘ Φleny pomoci p°i zjiÜ¥ovßnφ aktußlnφho stavu vytvo°en²ch objekt∙. Postupujte nßsledovn∞:
Public Class T°φdaA
ááá Private
Shared PoΦetObjekt∙ As
Integer
ááá Sub
New()
ááááááá PoΦetObjekt∙ += 1
ááá End
Sub
ááá Protected
Overrides Sub
Finalize()
ááááááá PoΦetObjekt∙ -= 1
ááá End
Sub
ááá Public
Shared ReadOnly
Property ZjistitPoΦetObjekt∙() As Integer
ááááááá Get
ááááááááááá Return
PoΦetObjekt∙
ááááááá End
Get
ááá End
Property
End Class
á
Jednß se o t°φdu s nßzvem T°φdaA. V t∞le t°φdy se nachßzφ jeden sdφlen² datov² Φlen typu Integer s nßzvem PoΦetObjekt∙. VÜimn∞te si, ₧e p°ed nßzvem datovΘho Φlen∙ je umφst∞no klφΦovΘ slovo Shared. Tφm je v²slovn∞ naznaΦeno, ₧e pracujeme se sdφlen²m datov²m Φlenem, jen₧ se vztahuje ke t°φd∞ jako celku.
|
Sdφlen² datov² Φlen PoΦetObjekt∙ je deklarovßn rovn∞₧ pou₧itφm
klφΦovΘho slova Private. Jde tedy o soukrom² sdφlen² datov² Φlen, co₧
je vhodnΘ, proto₧e takto dodr₧ujeme princip skr²vßnφ dat. Princip skr²vßnφ
dat p°edstavuje jeden ze zßkladnφch pilφ°∙ koncepce OOP. JednoduÜe °eΦeno,
v²znam tohoto principu spoΦφvß v tom, ₧e nikdy neposkytneme klientskΘmu
k≤du p°φm² p°φstup k datovΘmu Φlenu t°φdy. Mφsto toho hodnotu
p°φsluÜnΘho datovΘho Φlenu zjistφme pomocφ implementovanΘ ve°ejnΘ sdφlenΘ
vlastnosti.á á |
á
Filozofie ukßzky je zcela p°φmoΦarß: V₧dy, kdy₧ dojde k vytvo°enφ instance t°φdy T°φdaA, bude v konstruktoru t°φdy inkrementovßn sdφlen² datov² Φlen PoΦetObjekt∙. Datov² Φlen PoΦetObjekt∙ je implicitn∞ inicializovßn na nulovou hodnotu. Po vytvo°enφ ka₧dΘ instance bude hodnota sdφlenΘho Φlenu PoΦetObjekt∙ zv²Üena o jednotku. P°ed likvidacφ instance je proveden k≤d, jen₧ je umφst∞n v chrßn∞nΘ a p°ekrytΘ Sub procedu°e s nßzvem Finalize. Jeliko₧ je danß instance urΦena k likvidaci, je nutnΘ v procedu°e Finalize dekrementovat hodnotu sdφlenΘho datovΘho Φlenu PoΦetObjekt∙. Aktußlnφ hodnotu sdφlenΘho datovΘho Φlenu PoΦetObjekt∙ nßm na po₧ßdßnφ nabφdne sdφlenß vlastnost ZjistitPoΦetObjekt∙. Nßvratovß hodnota sdφlenΘ vlastnosti je typu Integer a odpovφdß skuteΦnΘmu poΦtu instancφ danΘ t°φdy, kterΘ se jeÜt∞ nachßzejφ na °φzenΘ hromad∞. áá
ááá Private
Sub Button1_Click(ByVal
sender As System.Object, _
ááá ByVal
e As System.EventArgs) Handles
Button1.Click
ááááááá Timer1.Enabled = True
ááááááá Dim
i As Integer
ááááááá Dim
Objekt As Object
ááááááá For
i = 1 To 1000
ááááááááááá Objekt = New T°φdaA()
ááááááá Next
ááá End
Sub
Tento k≤d vytvo°φ 1000 instancφ t°φdy T°φdaA.
ááá Private
Sub Timer1_Tick(ByVal
sender As System.Object, _
ááá ByVal
e As System.EventArgs)
ááááááá Me.Text
= "PoΦet objekt∙: " & T°φdaA.ZjistitPoΦetObjekt∙
ááá End
Sub
Spus¥te testovacφ aplikaci a klepn∞te na tlaΦφtko. V titulkovΘm pruhu dialogovΘho okna se objevφ zprßva o vytvo°enφ 1000 objekt∙. Jak jsme si ji₧ °ekli, vÜechny objekty jsou ulo₧eny do generace 0 °φzenΘ hromady. Objekty vÜak po svΘm vytvo°enφ nejsou nijak vyu₧φvßny, a proto se za krßtkou dobu stanou soustem pro automatickou sprßvu pam∞ti. Aktußlnφ poΦet alokovan²ch objekt∙ se zobrazuje v titulkovΘm pruhu dialogu p°ibli₧n∞ ka₧d²ch 100 milisekund. Jeliko₧ je generace 0 °φzenΘ hromady vyhrazena pro doΦasnΘ objekty, za krßtkou dobu budou vÜechny vytvo°enΘ instance z pam∞ti odstran∞ny (titulek dialogovΘho okna bude ukazovat nulovou hodnotu).
Ukßzka Φ. 2 û Pou₧itφ sdφlenΘ funkce t°φdy pro p°idßnφ instance t°φdy
Button na aktivnφ formulß°
ZajistΘ jste se ji₧ n∞kdy st°etli s t°φdou, kterß p°φmo neumo₧≥ovala tvorbu sv²ch instancφ. U takovΘto t°φdy tedy nenφ mo₧nΘ pou₧φt znßmou syntaxi s klauzulφ New. AΦkoliv t°φda neposkytuje mo₧nost p°φmΘho vytvß°enφ instancφ, p°esto m∙₧e b²t u₧iteΦnß. Ano, klφΦem k ·sp∞chu je za°azenφ sdφlenΘ funkce (resp. metody). Vlo₧te do stßvajφcφho projektu Visual Basicu .NET dalÜφ t°φdu a jejφ podobu upravte takto:
Public Class T°φdaB
ááá Public
Shared Function
P°idatTlaΦφtko _
ááá (ByVal
JmΘno As String,
ByVal Nßv∞stφ As
String, _
ááá ByVal
èφ°ka As Integer,
ByVal V²Üka As Integer, _
ááá ByVal
Pozice As Point) As
Boolean
ááááááá Try
ááááááááááá Dim
TlaΦφtko As New
Button()
ááááááááááá With
TlaΦφtko
ááááááááááááááá .Name = JmΘno
áááááááááááá ááá.Text = Nßv∞stφ
ááááááááááááááá .Width = èφ°ka
ááááááááááááááá .Height = V²Üka
ááááááááááááááá .Location = Pozice
ááááááááááá End
With
ááááááááááá
Form.ActiveForm.Controls.Add(TlaΦφtko)
ááááááá Catch
x As System.Exception
ááááááááááá Throw
New System.Exception("Vytvß°enφ tlaΦφtka
se nezda°ilo.")
ááááááá End
Try
ááááááá Return
True
ááá End
Function
End Class
P°edm∞tem naÜeho zßjmu je sdφlenß funkce P°idatTlaΦφtko. Signatura tΘto sdφlenΘ funkce je znaΦka rozsßhlß, poz∙stßvß s mno₧stvφ parametr∙, kterΘ specifikujφ:
P°idejte na formulß° dalÜφ instanci ovlßdacφho prvku Button a do zpracovatele udßlosti Click tΘto instance umφst∞te tento programov² k≤d:
ááá Private Sub Button2_Click(ByVal
sender As System.Object, _
ááá ByVal e As System.EventArgs) Handles
Button2.Click
ááááááá Me.Text
= CStr(T°φdaB.P°idatTlaΦφtko _
ááááááá ("btnTlaΦφtko1",
"TlaΦφtko", 100, 60, New Point(10,
200)))
ááá End Sub
K≤d volß sdφlenou metodu P°idatTlaΦφtko t°φdy s nßzvem T°φdaB. V²sledkem prßce sdφlenΘ metody je vytvo°enφ novΘ instance t°φdy Button a zaΦlen∞nφ tΘto instance do kolekce instancφ aktußlnφho formulß°e (tedy formulß°e, jeho₧ programov² k≤d je prßv∞ podroben exekuci). V naÜem p°φpad∞ bude lev² roh regionu instance t°φdy Button umφst∞n na bod∞ se sou°adnicemi (10, 200), instance bude mφt Üφ°ku 100 pixel∙ a v²Üku 60 pixel∙. Prob∞hnou-li vÜechny operace ·sp∞Ün∞, sdφlenß funkce vrßtφ hodnotu True, kterß bude zobrazena v titulkovΘm pruhu aktußlnφho formulß°e.
Vytvß°enφ miniatur obrßzk∙ (thumbnails)
Grafick² subsystΘm platformy .NET Framework s nßzvem GDI+ vßm poskytuje relativn∞ snadnou cestu pro vytvß°enφ grafickΘ miniatury (thumbnail) jakΘhokoliv obrßzku, jeho₧ data jsou ulo₧ena v jednom z nativn∞ podporovan²ch grafick²ch soubor∙. Budete-li chtφt rychle vytvo°it grafickou zmenÜeninu vßmi po₧adovanΘho obrßzku, pou₧ijte nßsledujφcφ programov² k≤d:
ááááááá Dim obr
As Image =
Image.FromFile("c:\obr1.bmp")
ááááááá Dim th As Image = obr.GetThumbnailImage(200, 150, Nothing, IntPtr.Zero)
ááááááá Dim g As Graphics = Me.CreateGraphics
ááááááá g.DrawImage(th, 10, 10, th.Width,
th.Height)
Uveden² k≤d pracuje podle tohoto algoritmu:
Public Function GetThumbnailImage( _
áá ByVal thumbWidth As Integer, _
áá ByVal thumbHeight As Integer, _
áá ByVal callback As Image.GetThumbnailImageAbort, _
áá ByVal callbackData As IntPtr _
) As
Image á
áááááááá Popis parametr∙ je uveden v tab. 1.
Parametr |
Charakteristika |
thumbWidth |
èφ°ka miniatury
grafickΘho obrßzku m∞°enß v pixelech.á
|
thumbHeight |
V²Üka miniatury
grafickΘho obrßzku m∞°enß v pixelech. |
|
Pokud jsou hodnoty
parametr∙ thumbWidth a thumbHeight nulovΘ, jsou rozm∞ry
grafickΘ miniatury urΦeny na zßklad∞ implicitnφch nastavenφ systΘmu. |
callback |
Delegßt Image.GetThumbnailAbort.
Ve verzi GDI+ 1.0 se tento delegßt nevyu₧φvß. AΦkoliv oficißlnφ dokumentace
°φkß, ₧e je nevyhnutnΘ delegßta vytvo°it, nemusφ tomu b²t nutn∞ tak.
V praxi toti₧ staΦφ, kdy₧ do parametru callback ulo₧φte hodnotu Nothing.
|
callbackData |
Parametr musφ
obsahovat hodnotu sdφlenΘho Φlenu Zero struktury IntPtr.
Sdφlen² datov² Φlen Zero reprezentuje ukazatel, jen₧ byl inicializovßn
na nulovou hodnotu.á |
Tab. 1 û Charakteristika
parametr∙ metody GetThumbnailImage
|
N∞kterΘ grafickΘ formßty dovolujφ krom∞ samotnΘho grafickΘho obrazce
ulo₧it v jednom souboru takΘ miniaturu tohoto grafickΘho obrazce. Pokud
metoda zjistφ, ₧e soubor disponuje i grafickou miniaturou, je naΦtena tato
miniatura. V opaΦnΘm p°φpad∞ je zmenÜen p∙vodnφ grafick² obrazec pomocφ
transformaΦnφch algoritm∙. |
Obr. 3 û Vytvo°enφ grafickΘ
miniatury pou₧itφm metody GetThumbnailImage
Deklarovßnφ a generovßnφ udßlostφ
Visual Basic .NET ruku v ruce s platformou .NET nabφzφ v²vojß°∙m mno₧stvφ t°φd, ovlßdacφch prvk∙ a komponent. Instance t∞chto entit ₧ijφ ve sv∞t∞, jen₧ je °φzen modelem zalo₧en²m na udßlostech. Ano, programovßnφ °φzenΘ udßlostmi je dnes v kurzu, a i proto se m∙₧ete tak°ka na ka₧dΘm kroku st°etnout s udßlostmi.
Udßlost m∙₧eme definovat jakou souhru faktor∙, kterß nastane v jistΘm ΦasovΘm okam₧iku. Udßlost tak °φkß, ₧e nastala jistß situace. ProgramovΘ entity, jako nap°φklad objekty, musφ v∞d∞t, jak se majφ chovat v p°φpad∞, kdy nastane jistß udßlost. ZvyΦejn∞ objekt nevφ, jak na vzniklou situaci smyslupln∞ reagovat, a proto jej to musφme nauΦit. Tato v²uka je zalo₧enß na implementaci zpracovatel∙ p°φsluÜn²ch udßlostφ. Mezi udßlostφ a jejφm zpracovatelem je z°ejm² vzßjemn² vztah: Je to udßlost sama, kdo iniciuje Φinnost zpracovatele udßlosti, p°iΦem₧ vÜak ₧ßdn² zpracovatel nenφ aktivovßn do okam₧iku, kdy nenastane jistß udßlost. V tomto tipu si ukß₧eme, jak pracovat s udßlostmi a jejφmi zpracovateli v programovΘm k≤du. Uvidφte, jak se udßlost deklaruje a takΘ, jak ji lze vygenerovat.
Postupujte nßsledovn∞:
ááá ááááááá Public Event Udßlost(ByVal hwnd As Form)
Zde vidφte kompletnφ ukßzku deklarace udßlosti. P°ed klφΦov²m slovem Event se nachßzφ modifikßtor p°φstupu udßlosti, kter² je v naÜem p°φpad∞ Public. Za klφΦov²m slovem Event se nachßzφ nßzev udßlosti a je jenom na vßs, jak svoji udßlost pojmenujete (m∞li byste ovÜem dodr₧ovat pravidla pro pojmenovßvßnφ programov²ch jednotek). Za nßzvem udßlosti nßsleduje signatura, teda seznam parametr∙, s kter²m bude udßlost pracovat. P°esn∞ji °eΦeno, s t∞mito parametry nebude pracovat p°φmo udßlost, ale jejφ zpracovatel, jak sami za chvφli uvidφte. Parametry mohou b²t p°edßvßny hodnotou, nebo odkazem (zde je zvolen prvnφ zp∙sob). Parametrickß prom∞nnß hwnd je schopna uchovßvat ukazatel na instanci t°φdy Form.á
á
ááá Public
Sub Zpracovatel(ByVal
hwnd As Form)
ááááááá Dim
f As Integer =
FreeFile()
ááááááá Try
ááááááááááá FileOpen(f,
"d:\info.txt", OpenMode.Output, OpenAccess.Write)
ááááááááááá Print(f, "Handle
okna: " & hwnd.Handle.ToString & _
ááááááááááá vbCrLf &
"Titulek okna: " & hwnd.Text & _
ááááááááááá vbCrLf &
"Nepr∙hlednost (%): " & (hwnd.Opacity) * 100 & _
ááááááááááá vbCrLf & "V²Üka
okna (pixely): " & hwnd.Height & _
ááááááááááá vbCrLf & "èφ°ka
okna (pixely): " & hwnd.Width)
ááááááááááá Me.Text
= "Soubor s informacemi byl ·sp∞Ün∞ vytvo°en."
ááááááááááá FileClose(f)
ááááááá Catch
x As Exception
ááááááááááá MessageBox.Show("P°i
vytvß°enφ souboru doÜlo k chyb∞.", _
ááááááááááá "Zprßva o
chyb∞", MessageBoxButtons.OK, MessageBoxIcon.Error)
ááááááááááá Me.Text
= "Soubor s informacemi nebylo mo₧nΘ vytvo°it."
ááááááá End
Try
ááá End
Sub
|
Zpracovatel udßlosti musφ mφt stejnou signaturu jako samotnß udßlost. |
Po formßlnφ strßnce je zpracovatel udßlosti Sub procedurou, co₧ znamenß, ₧e zpracovatel udßlosti nem∙₧e nikdy vracet ₧ßdnou nßvratovou hodnotu. V∞°φm, ₧e v²pis k≤du je vßm jasn² na prvnφ pohled û jednoduÜe jsou zjiÜt∞ny informace o cφlovΘ instanci t°φdy Form a tyto informace jsou vzßp∞tφ ulo₧eny do textovΘho souboru na logick² oddφl pevnΘho disku.á á
áááá
ááá Private
Sub Form1_Load(ByVal
sender As Object,
_
ááá ByVal
e As System.EventArgs) Handles
MyBase.Load
ááááááá AddHandler
Udßlost, AddressOf Zpracovatel
ááá End
Sub
|
Jeliko₧ nenφ mo₧nΘ vytvo°it p°epojenφ mezi udßlostφ a jejφm
zpracovatelem ve fßzi psanφ k≤du, musφ b²t toto p°epojenφ vytvo°eno a₧ za
b∞hu programu. Z tohoto d∙vodu se k≤d p°φkazu AddHandler nachßzφ
v udßlostnφ procedu°e Form1_Load. ááá |
Tento °ßdek k≤du naznaΦuje, ₧e p°i startu aplikace bude vytvo°en vztah mezφ udßlostφ a jejφm zpracovatelem. Ve skuteΦnosti je situace komplikovan∞jÜφ, proto₧e Visual Basic .NET automaticky vytvo°φ delegßta, kter² obsahuje adresu zpracovatele udßlosti. Pokud byste programovali nap°φklad v C#, museli byste p°φsluÜnΘho delegßta explicitn∞ deklarovat, ovÜem Visual Basic .NET tuto operaci provßdφ za vßs, a tφm minimalizuje vaÜe programßtorskΘ ·silφ.
ááá Private
Sub Button1_Click(ByVal
sender As System.Object, _
ááá ByVal
e As System.EventArgs) Handles
Button1.Click
ááááááá RaiseEvent
Udßlost(Me)
ááá End
Sub
Za p°φkazem RaiseEvent nßsleduje nßzev udßlosti, kterou chceme generovat. Pokud udßlost pracuje s parametry, je nutnΘ tyto pat°iΦn∞ naplnit. Jak si m∙₧ete vÜimnout, udßlost bude generovßna v okam₧iku, kdy u₧ivatel klepne na tlaΦφtko Button1 (udßlosti mohou b²t samoz°ejm∞ vyvolßvßny takΘ p°i mnoha dalÜφch p°φle₧itostech).
|
Prßv∞ jste doΦetli poslednφ tip sekce Programßtorskß laborato°.á Jestli₧e se chcete dozv∞d∞t vφce informacφ o programovßnφ ve Visual
Basicu .NET, nevßhejte a navÜtivte takΘ dalÜφ sekce rubriky Visual Basic. A
jakß₧e je dneÜnφ nabφdka? |
|
Inteligentnφ znaΦky (Smart Tags) |
||
Porovnßvacφ operßtory Is a Like, p°i°azovacφ operßtory... |