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.