Public Class ucPoleLiczboweKalk
    Private m_blnPrzyciskKalkWidoczny As Boolean = True

    Public Event PoKliknięciuPrzyciskuKalk(ByRef Handled As Boolean)

    Public Sub New()

        ' This call is required by the designer.
        InitializeComponent()

        ' Add any initialization after the InitializeComponent() call.
        RysujKontrolkę()
    End Sub

    Private Sub RysujKontrolkę()
        ' Przyjmij wysokość pola tekstowego, chyba że jest to
        ' pole wielowierszowe.
        Me.Height = liczbaPoleLiczbowe.Height

        If m_blnPrzyciskKalkWidoczny Then
            btnKalkulator.Visible = True
            ' Ponieważ przycisk ma stałą szerokość, umieść go 
            ' przy prawej krawędzi zagregowanej kontrolki.
            btnKalkulator.Left = Me.Width - btnKalkulator.Width
        Else
            btnKalkulator.Visible = False
            ' Przesuń przycisk tak, aby znajdował się poza
            ' prawą krawędzią ramki.
            btnKalkulator.Left = Me.Width
        End If

        liczbaPoleLiczbowe.Width = btnKalkulator.Left - 1
    End Sub

    Private Sub ucPoleLiczboweKalk_Resize(sender As Object, e As EventArgs) Handles Me.Resize
        RysujKontrolkę()
    End Sub

    Private Sub btnKalkulator_Click(sender As Object, e As EventArgs) Handles btnKalkulator.Click
        Dim blnObsłużone As Boolean = False
        RaiseEvent PoKliknięciuPrzyciskuKalk(blnObsłużone)
        If Not blnObsłużone Then
            Shell("notepad.exe")
        End If

    End Sub

    Public Property PrzyciskKalkWidoczny() As Boolean
        Get
            Return m_blnPrzyciskKalkWidoczny
        End Get
        Set(ByVal value As Boolean)
            m_blnPrzyciskKalkWidoczny = value
            RysujKontrolkę()
        End Set
    End Property

End Class
