![]()
![]()
V dalším výkladu uvádíme popis vždy jen pro jeden prvek (ostatní se většinou liší jen proměnnými, do kterých se ukládají nebo získávají hodnoty), u ostatních je uveden jen okomentovaný kód funkce.
Obslužná procedura tlačítka Ruční nastavení, bude reagovat na stisknutí tlačítka. Procedura umožní zadat souřadnice středu bodu objektu. Kód procedury bude obahovat následující části:
V kódu procedury si všimněte způsob práce se souřadnicemi (získanými metodou GetPoint). Pokud byste se pokusili souřadnice přiřadit rovnou do textového pole (TextBox1.Value = gvarStredKruz(0)) došlo by k chybě.
Private Sub CommandButton1_Click()
' vyvolání procedury při kliknutí nad prvkem
Dim souradnice(0 To 2) As Double
' deklarace proměnné pole souřadnic středu obrazce
Call Me.Hide
' skrytí formuláře (dialogového boxu)
gvarStredKruz = ThisDrawing.Utility.GetPoint _
(, "Zadej střed kružnice: ")
' získání hodnoty souřadnic bodu
souradnice(0) = CInt(gvarStredKruz(0))
souradnice(1) = CInt(gvarStredKruz(1))
souradnice(2) = CInt(gvarStredKruz(2))
TextBox1.Value = souradnice(0)
TextBox2.Value = souradnice(1)
TextBox3.Value = souradnice(2)
' zobrazení hodnot souřadnic středu ve formuláři
' CInt - převod souřadnic na integer
Call Me.Show
' opětovné zobrazení formuláře
End Sub
Obslužná funkce druhého tlačítka pro zadání bodu má obdobnou funkci,
proto již nebudeme uvádět podrobný popis.
Private Sub CommandButton2_Click()
' vyvolání procedury při kliknutí nad prvkem
Dim souradnice(0 To 2) As Double
' deklarace proměnné pole souřadnic středu obrazce
Call Me.Hide
' skrytí formuláře (dialogového boxu)
gvarStredKrych = ThisDrawing.Utility.GetPoint _
(, "Zadej střed krychle: ")
' získání hodnoty souřadnic bodu
souradnice(0) = CInt(gvarStredKrych(0))
souradnice(1) = CInt(gvarStredKrych(1))
souradnice(2) = CInt(gvarStredKrych(2))
TextBox4.Value = souradnice(0)
TextBox5.Value = souradnice(1)
TextBox6.Value = souradnice(2)
' zobrazení hodnot souřadnic středu ve formuláři
' CInt - převod souřadnic na integer
Call Me.Show
' opětovné zobrazení formuláře
End Sub
![]()
Tlačítko Ok nastaví globální logickou proměnnou gblnVykreslovat na hodnotu True - znamená vykresli zvolený objekt. Procedura zjistí hodnotu nastavení radio tlačítka OptionButton1 (rovná-li se True - bude se vykreslovat kružnice, v opačném případě kvádr). Pro vykreslovaný prvek jsou nastaveny hodnoty proměnných získané z odpovídajících prvků formuláře. Na konci obslužné procedury je zavolán příkaz pro odstranění formuláře z paměti.
Private Sub CommandButton3_Click()
' vyvolej se při kliknutí na OK
gblnVykreslovat = True
' uživatel potvrdil dialog vykresli obrazce
' předání hodnot do proměnných
If (OptionButton1 = True) Then
gblnOptButtKruznice = True
gdblPolomerKruz = TextBox7.Value
gdblPocetKruz = TextBox8.Value
gdblVzdalenostKruz = TextBox9.Value
Else
gblnOptButtKruznice = False
gdblHloubkaKrych = TextBox10.Value
gdblSirkaKrych = TextBox11.Value
gdblVyskaKrych = TextBox12.Value
gdblPocetKrych = TextBox13.Value
gdblVzdalenostKrych = TextBox14.Value
End If
Unload Me
' odstranění formuláře
End Sub
![]()
Tlačítko Cancel nastaví globální logickou
proměnnou gboolVykreslovat na hodnotu False - znamená nevykresluj
nic - uživatel stornoval dialog. Na konci obslužné procedury je zavolán příkaz
pro odstranění formuláře z paměti.
Private Sub CommandButton4_Click()
' vyvolej se při kliknutí na cancel
gboolVykreslovat = False
' uživatel stornoval dialog, nic se nevykreslí
Unload Me
' odstranění formuláře
End Sub
![]()
Radio tlačítka mají funkci nastavení odpovídajících prvků dialogu pro zvolený objekt. Tlačítko OptionButton1 zavolá proceduru NastaveniKruznice (nastaví formulář pro zadání kružnice), tlačítko OptionButton2 zavolá proceduru NastaveniKvadru (nastaví formulář pro zadání kvádru).
Private Sub OptionButton1_Click()
' při kliknutí na radiobuton nastav viditelnost prvků
NastaveniKruznice
End Sub
Private Sub OptionButton2_Click()
' při kliknutí na radiobuton nastav viditelnost prvků
NastaveniKrychle
End Sub
![]()
Rozbalovací seznam má obdobnou funkci jako radio tlačítka. Při změně hodnoty rozbalovacího seznamu je zavolána odpovídající procedura (NastavKruznici nebo NastavKvadr). V kódu procedury si všimněte testování hodnoty rozbalovacího seznamu.
Private Sub ComboBox1_Change()
' zobarazení správných prvků formuláře
' podle zadané hodnoty
If (ComboBox1.Value = "Kružnice") Then
NastaveniKruznice
' má se zadávat kružnice - nastav kružnici
Else
NastaveniKrychle
' má se zadávat krychle - nastav krychli
End If
End Sub
![]()
Obslužná funkce posuvníku zajišťuje při změně hodnoty posuvníku nastavení správné hodnoty v odpovídajícím textovém poli. Nastavení se uskuteční prostým přiřazením hodnoty. Programový kód uvádíme pouze u dvou posuvníků, ostatní posuvníky se liší pouze číslem prvků (viz obrázek dialogu).
Private Sub ScrollBar1_Change()
' při změně provaž (nastav) odpovídající prvky
TextBox7.Value = ScrollBar1.Value
End Sub
Private Sub ScrollBar2_Change()
' při změně provaž (nastav) odpovídající prvky
TextBox8.Value = ScrollBar2.Value
End Sub
![]()
Obslužná procedura textového pole pro zadání souřadnic středu, zajišťuje při změně hodnoty v textovém poli, uložení nové hodnoty do globální proměnné gvarStredKruz (resp. gvarStredKvadr).
Programový kód uvádíme pouze u dvou posuvníků, ostatní posuvníky se liší pouze číslem prvků (viz obrázek dialogu).
Private Sub TextBox1_Change()
' při změně vytvoř prvek Variant se souřadnicemi středu
If (IsNumeric(TextBox1.Value) <> True) Then TextBox1.Value = 0
' kontrola zda bylo zadáno číslo
Dim utilObj As Object
' deklarace objektu
Set utilObj = ThisDrawing.Utility
' přiřazeni objektu Utillity
utilObj.CreateTypedArray gvarStredKruz, vbDouble, _
TextBox1.Value, TextBox2.Value, TextBox3.Value
' převod tří hodnot na pole Variant
End Sub
Private Sub TextBox6_Change()
' při změně vytvoř prvek Variant se souřadnicemi středu
If (IsNumeric(TextBox6.Value) <> True) Then TextBox6.Value = 0
' kontrola zda bylo zadáno číslo
Dim utilObj As Object
' deklarace objektu
Set utilObj = ThisDrawing.Utility
' přiřazeni objektu Utillity
utilObj.CreateTypedArray gvarStredKvadr, vbDouble, _
TextBox4.Value, TextBox5.Value, TextBox6.Value
' převod tří hodnot na pole Variant
End Sub
![]()
Obslužná procedura textového pole pro zadání parametrů objektu, zajišťuje při změně hodnoty v textovém poli, kontrolu hodnoty a nastavení odpovídajícího posuvníku.
Programový kód uvádíme pouze u dvou posuvníků, ostatní posuvníky se liší pouze číslem prvků (viz obrázek dialogu).
Private Sub TextBox7_Change()
' při změně zkontroluj a provaž odpovídající prvky
If (IsNumeric(TextBox7.Value) = True) Then
' byla zadána číselná hodnota
' zkontroluj, připadně oprav meze
Select Case TextBox7.Value
Case Is < 1
TextBox7.Value = 1
Case Is > 100
TextBox7.Value = 100
End Select
' nastav odpovídající prvek na stejnou hodnotu
ScrollBar1.Value = CDbl(TextBox7.Value)
Else
' nebylo zadáno číslo, oprav a nastav hodnoty
ScrollBar1.Value = 1
TextBox7.Value = 1
End If
End Sub
Private Sub TextBox8_Change()
If (IsNumeric(TextBox8.Value) = True) Then
Select Case TextBox8.Value
Case Is < 1
TextBox8.Value = 1
Case Is > 100
TextBox8.Value = 100
End Select
ScrollBar2.Value = CDbl(TextBox8.Value)
Else
ScrollBar2.Value = 1
TextBox8.Value = 1
End If
End Sub
![]()
Tím máme dokončen projekt s formulářem (dialogovým boxem). Jak tuto aplikaci spustit se dozvíte v následující kapitole.