|
Začátečník |
Pokročilý |
Profesionál |
|||||
|
|
|
||||||
Prostor
pro experimentování Programátorská laboratoř |
||||||||
|
|
Budete potřebovat
přibližně 1 hodinu |
|
Operační systém
použitý v příspěvku: Windows XP Vývojové nástroje:
Visual Basic .NET |
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Určení startovní pozice pro formulář
Startovní pozici pro formulář můžete určit
vhodným nastavením vlastnosti StartPosition v době
návrhu aplikace. Pokud například chcete, aby byl formulář při běhu aplikace
centrován, nastavte vlastnost StartPosition na hodnotu CenterScreen (obr. 1).
Obr. 1 – Nastavení
vlastnosti StartPosition na hodnotu CenterScreen
Plynulé zmiznutí formuláře
Jak jsme si v minulém dílu Programátorské
laboratoře ukázali, pro změnu průhlednosti formuláře lze vhodně využít jeho
vlastnost Opacity. V následujícím experimentu si budeme demonstrovat použití této
vlastnosti v praxi a vytvoříme tak efekt „plynulého zmiznutí“ formuláře
při stisknutí tlačítka. Do obsluhy události Click tlačítka zapište tento fragment programového kódu:
Dim x As Double
For x =
1 To 0 Step
-0.1
System.Threading.Thread.Sleep(50)
Application.DoEvents()
Me.Opacity
= x
Next x
Environment.Exit(0)
Popis
kódu
Nejdřív deklarujeme proměnnou x, která je typu Double. Poté napíšeme
konstrukci cyklu For-Next, do které umístíme uvedené řádky
s kódem. Aby byla každá dekrementace hodnoty vlastnosti Opacity viditelná, „uspíme“ aplikaci metodou Sleep při každém průchodu cyklem na 50 milisekund. Dále použijeme metodu DoEvents, která zabezpečí, že aplikace bude i nadále reagovat na vnější
podněty. Poslední příkaz uvnitř cyklu upravuje hodnotu Opacity aktivního formuláře (Me). Poslední řádek kódu
pak ukončí exekuci aplikace.
Modifikace souboru
AssemblyInfo.vb
Soubor AssemblyInfo.vb sdružuje prostřednictvím různých atributů informace o vyvíjené aplikaci. Vhodnou úpravou těchto atributů lze docílit toho, aby některé informace byly viditelné i pro finálního uživatele vaší aplikace. Pokud v prostředí operačního systému Windows XP zvolíte při zobrazování souborů pohled Titles, při ikoně aplikace se budou nacházet i další, dodatečné informace. Na obr. 2 můžete vidět informace o aplikaci Notepad.
Obr. 2 – Podoba ikony aplikace
při použití pohledu Titles
Chcete-li, aby i vaše aplikace ovládala tuto „vymoženost“, udělejte toto:
Obr. 3 – Modifikovaný soubor AssemblyInfo.vb
Obr. 4 – Výslední podoba
ikony aplikace
Přidání položky nabídky za
běhu programu
V této ukázce si
popíšeme postup, jak lze „programově“ přidat do projektu hlavní nabídku Soubor
a dále položku Nový, po aktivaci které se zobrazí uživatelská
zpráva.
Postupujte dle instrukcí:
Dim
menu As New
MainMenu()
'vytvoření
hlavní nabídky
Me.Menu
= menu
'přiřazení
hlavní nabídky k aktivnímu formuláři
Dim
Soubor As MenuItem
Soubor = New
MenuItem("Soubor")
'vytvoření
nabídky "Soubor"
Dim
Novy As MenuItem
Novy = New
MenuItem("Nový", _
New
EventHandler(AddressOf Zobrazit_zpravu))
'vytvoření
podřazené položky "Nový" nabídky "Soubor"
menu.MenuItems.Add(Soubor)
'přidání
nabídky "Soubor" do hlavní nabídky
Soubor.MenuItems.Add(Novy)
'přidání položky
"Nový" do nabídky "Soubor"
Nejdříve
ze všeho vytvoříme hlavní nabídku MainMenu, která představuje kolekci
objektů typu MenuItem. Pokračujeme tím, že tuto hlavní
nabídku přiřadíme k právě aktivnímu formuláři. Dále vytvoříme nabídku Soubor
a poté i položku Nový, která se bude nacházet
v nabídce Soubor. Při tvorbě položky Nový
dále specifikujeme i název procedury (Zobrazit_zpravu), která se bude aktivovat
vždy, když uživatel klikne na tuto položku. Nakonec do hlavní nabídky (MainMenu) přidáme vytvořenou nabídku Soubor a do nabídky Soubor
přidáme položku Nový.
Private Sub Zobrazit_zpravu(ByVal
sender As Object,
_
ByVal e As System.EventArgs)
MessageBox.Show("Použitím této položky
vytvoříte nový objekt.")
End Sub
|
Do procedury Zobrazit_zpravu můžete zadat kód
podle vašich potřeb, například by zde mohl být vložen kód pro skutečné
vytvoření nového souboru či nového objektu. |
Když spustíte aplikaci a
klepnete na tlačítko, vytvoří se nabídka Soubor, která bude obsahovat
položku Nový. Aktivujete-li tuto položku,
zobrazí se zpráva s textem. Situaci ilustruje obr. 5.
Obr.
5 – Proces přidání nabídky Soubor a položky Nový na formulář
Ukázka práce Garbage
Collection
Princip práce Garbage Collection (GC) je podrobně popsán v tomto vydání
seriálu o Visual Basicu .NET. V této chvíli se ovšem zaměříme na
praktickou ukázku činnosti Garbage Collection.
Vytvoříme několik tisíc instancí ukázkového objektu v paměti počítače a
budeme pozorovat, jak se s touto situací vypořádá Garbage Collection.
Následujte uvedený postup:
Public Class
Objekt_01
Public Shared Instance_objektu As
Long
Public Sub New()
Instance_objektu += 1
End Sub
Protected Overrides Sub
Finalize()
Instance_objektu -= 1
End Sub
End
Class
Dim x As Integer, obj
For x =
1 To 5000
obj = New
Objekt_01()
Next x
Me.Text = "Počet instancí objektu
v paměti: " & Objekt_01.Instance_objektu
Vždy, když klepnete na tlačítko, vytvoří se
v paměti počítače 5000 instancí objektu Objekt_01. Vždy, když je objekt vytvořen, je paralelně inkrementována i proměnná
Instance_objektu (kód pro inkrementaci se nachází v konstruktoru třídy). Počet
vytvořených instancí sleduje v 50 milisekundových intervalech ovládací
prvek Timer, který v titulkovém pruhu okna aplikace také zobrazuje zprávu o
počtu platných objektových instancí v paměti počítače (obr. 6).
Obr. 6 – Vytvoření 15000
instancí objektu v paměti
V čem tedy spočívá samotné jádro
problematiky? Garbage Collection sleduje všechny referenční
proměnné a rovněž tak reference na jednotlivé instance objektu. Abyste důkladně pochopili tuto situaci,
uvažujte o objektové proměnné obj, která je deklarována
v události Click tlačítka. Proměnná obj je proměnnou referenčního typu a obsahuje tedy referenci na příslušnou
instanci objektu Objekt_01. Protože oborem platnosti této
proměnné je jenom obsluha události Click tlačítka, je ihned
po ukončení exekuce programového kódu dané obsluhy události objektová proměnná
zlikvidována. V této chvíli dojde i k destrukci reference na instanci
objektu Objekt_01. To všechno sleduje Garbage Collection a zabezpečuje
odstranění již nepotřebných instancí objektu z paměti počítače. Při
likvidaci instance objektu se provede programový kód umístěný
v destruktoru třídy (dojde k dekrementaci proměnné Instance_objektu).
Vyzkoušejte tento postup:
Po rozběhnutí aplikace klepněte několikrát na
tlačítko a vytvořte dostatečný počet instancí objektu v paměti. Poté
chvíli vyčkejte a sledujte titulkový pruh okna aplikace, ve kterém se budou
zobrazovat informace o počtu instancí, které se ještě nacházejí v paměti. Po
uplynutí jistého časového okamžiku (může jít i o několik minut) by měl počet
instancí klesnout na nulu, což je důkazem toho, že Garbage Collection odvádí svou práci svědomitě (obr. 7).
Obr. 7 – Konec práce Garbage
Collection a nulový počet instancí objektu v paměti
Ján Hanák