Vyrábíme kontrolní prvek ActiveX 2.díl

V dnešním díle si ukážeme jak udělat to, aby  náš NewTextBox se dal zadat pouze pro čísla.

Otevřete si minule vytvořenou skupinu dvou projektů: NewTextBox a Standard EXE Projekt (pokud jste stahovali zdroják jmenuje se NewTextBoxGroup.vbg)

Nejdříve si musíme definovat nějakou proměnnou, která bude nabývat hodnot True/False (jestli má být TextBox pouze pro čísla nebo ne) a konstantu základní hodnoty False (default):

Dim xPouzeProČísla As Boolean
Const def_PouzeProČísla = 0

A nyní stejným způsobem jako minule vytvoříme a zapíšeme vlastnost PouzeProČísla:

Public Property Get PouzeProČísla() As Boolean
    PouzeProČísla = xPouzeProČísla
End Property

Public Property Let PouzeProČísla(ByVal New_PouzeProČísla As Boolean)
    xPouzeProČísla = New_PouzeProČísla
    PropertyChanged "PouzeProČísla"
End Property

A ještě zajistíme, aby si tuto hodnotu zapamatoval, proto do UserControl_WriteProperties a ReadProperties doplníme toto:

Private Sub UserControl_WriteProperties(PropBag As PropertyBag)
    Call PropBag.WriteProperty("PouzeProČísla", xPouzeProČísla, def_PouzeProČísla)
End Sub

Private Sub UserControl_ReadProperties(PropBag As PropertyBag)
    xPouzeProČísla = PropBag.ReadProperty("PouzeProČísla", def_PouzeProČísla)
End Sub

Nyní přejdeme k samotnému zajištění toho, aby, pokud je vlastnost PouzeProČísla na True, se daly zadávat pouze čísla. Toho docílíme sledováním klávesy, která byla stisknuta. Pokud to nebude číslo (IsNumeric = False) stisk zrušíme (KeyAscii = 0):

Private Sub txtMain_KeyPress(KeyAscii As Integer)
    If PouzeProČísla = True Then
        If IsNumeric(Chr(KeyAscii)) = False Then
            KeyAscii = 0
        End If
    End If
End Sub

Dalo by se to jednoduchou modifikací udělat jen pro text (IsNumeric(Chr(KeyAscii)) = True).

To je pro dnešek vše, příště přidáme našemu NewTextBoxu metody pro vyhledávání a nahrazování textu. V příští poslední části seriálu si ukážeme tvorbu metod pro nalezení a nahrazení textu. Zdroják tohoto příkladu stahujte zde.

Předchozí díl       Zpět na seznam seriálů        Další díl