Makale Özeti

Kontroller bir programın yürütülmesi için kullanılan baş aktörlerdir. Bu yazıda, bir programcının Program geliştirirken .Net Framework ile gelen kontroller yetmediği zaman, kendi kontrolünü oluşturup bu kontrolü kullanabilmesi için yapılması gerekenler bir örnekle birlikte anlatılmıştır.

Makale

Bir Windows Kontrolü Oluşturma


Kontroller; bir programın yürütülmesi için kullanılan baş aktörlerdir. Bu yazıda, bir programcının Program geliştirirken .Net Framework ile gelen kontroller yetmediği zaman, kendi kontrolünü oluşturup bu kontrolü kullanabilmesi için yapılması gerekenler bir örnekle birlikte anlatılmıştır.


.Net Framework ile gelen kontroller programcının işine çözüm sunmadığı zamanlarda isterse programcı kendi kontrolünü kendisi yazabilir. Bu yazılan kontrol de ToolBox ekranında yer alabilir.

 

Yeni bir kontrol yaratmak için, Visual Studio.Net te Control Library Project kullanılır. Control Library Project kullanılarakyazılacak bir kontrol, var olan kontrolden türetilebilir veya tamamen yeni bir kontrol olarak da yazılabilir.

Konu Örnek Uygulama üzerinden daha detaylı bir şekilde anlatılmıştır.

 

Örnek Uygulama

 

Bu örnekte; DateInfo ismi verilen bir kontrol yapılacaktır. Bu kontrol; istenilen bir şehrin istenilen andaki zamanını veren bir kontrol olacaktır. Bunun için Timer kontrolü kullanılacaktır.

 

Bunun için önce Visual Studio.Net içerisinde yeni bir Control Library Project oluşturulur(Şekil 1). 

            Şekil 1       Yeni Bir Control Library Projesi Oluşturmak

 

 

Proje açıldıktan sonra Solution Explorer da görünen Ornek isimli proje ismi  DateInfo olarak değiştirilir. Daha sonra yine Soultion Explorer penceresinde görünen  UserControl1.vb dosyasının ismi DateInfo.vb olarak değiştirilir. Kod kısmında da aynı şekilde UserControl1 DateInfo yapılır. Böylece oluşturulacak olan kontrolün ismi belirlenmiş olur.

 

Daha sonra dizyn ekranında Şekil 2a da görüldüğü gibi bir görünüm elde edilir. Bu dizaynda şehir adını gösteren bir Label (adı cityLabel), verilecek olan tarihi gösteren bir Label (adı dateLabel) ve o zamanı gösteren bir Label (adı timeLabel) olmak üzere üç adet Label kontrolü kullanılmıştır.Bu üç Label kontrolü alt alta yerleştirilerek dizayn gerçekleştirilir.

 

            Şekil 2a     Örnek Uygulama Altındaki DateInfo Ekran Dizaynı -1

 

 

Daha sonra Kontrole adı controlTimer olan bir adet Timer kontrolü eklenir(Şekil 2b). Bu kontrolünün Interval özelliği 1000 değerine ayarlanır.

 

            Şekil 2b     Örnek Uygulama Altındaki DateInfo Ekran Dizaynı -2

 

 

DateInfo kontrolü; beş tane özellik (Property) (Şekil 3a), iki tane sadece okunabilir özellik (ReadOnly Property) (Şekil 3b) ve iki adet method (Şekil 3c) içerir.

    Public Property ArkaPlanRengi() As Color
        Get

            Return cityLabel.BackColor

        End Get
        Set(ByVal Value As Color)

            cityLabel.BackColor = Value
            dateLabel.BackColor = cityLabel.BackColor
            timeLabel.BackColor = cityLabel.BackColor

        End Set
    End Property

    Public Property Sehir() As String
        Get

            Return cityLabel.Text

        End Get
        Set(ByVal Value As String)

            cityLabel.Text = Value

        End Set
    End Property

    Public Property Sehir_YaziRengi() As Color
        Get

            Return cityLabel.ForeColor

        End Get
        Set(ByVal Value As Color)

            cityLabel.ForeColor = Value

        End Set
    End Property

    Public Property Tarih_YaziRengi() As Color
        Get

            Return dateLabel.ForeColor

        End Get
        Set(ByVal Value As Color)

           dateLabel.ForeColor = Value

        End Set
    End Property

    Public Property Zaman_YaziRengi() As Color
        Get

            Return timeLabel.ForeColor

        End Get
        Set(ByVal Value As Color)

            timeLabel.ForeColor = Value

        End Set
    End Property

Şekil 3a     Örnek Uygulama Altındaki DateInfo Kod Bloğu – Property

 

 

Şekil 3a daki beş özellik değiştirilebilir özelliklerdir. Bu özelliklerin dört tanesi renk ( ArkaPlanRengi, Sehir_YaziRengi, Tarih_YaziRengi, Zaman_YaziRengi) ile ilgili, bir tanesi de cityLabel adlı Label kontrolüne yazılacak Şehir adı (Sehir) ile ilgilidir.

    Public ReadOnly Property [Date]() As String
        Get

            Return controlTime.ToLongDateString()

        End Get
    End Property

    Public ReadOnly Property Time() As String
        Get

            Return controlTime.ToLongTimeString()

        End Get
    End Property

Şekil 3b     Örnek Uygulama Altındaki DateInfo Kod Bloğu – ReadOnly

                    Property

 

 

Şekil 3b deki, görünebilen fakat değiştirilemeyen bu iki özellik Tarih ve Zaman özellikleridir. Bu özellikler metodlar ile belirlenebilir.

    Private controlTime As DateTime

    Public Sub StartTimer(ByVal newTime As DateTime)

        Tarih ve Zaman ayarlanır
        controlTime = newTime

        Timer başlatılır.
        controlTimer.Start()

    End Sub

    Public Sub StopTimer()

        controlTimer.Stop()

        Kaynaklar Serbest Bırakılır.
        controlTimer.Dispose()

    End Sub

            Şekil 3c     Örnek Uygulama Altındaki DateInfo Kod Bloğu - Metodlar

 

 

StartTimer metodu kontrolü başlatmak; StopTimer  ise kontrolü durdurmak için kullanılan metodlardır. Kontrol başlatılırken, başlatılacak zaman için DateTime tipinde bir değişken istenecektir. Bu değişkenin gösterdiği zamandan başlayarak kontrol çalışacaktır. Bu değişken; sınıf içinde geçerli olacak bir değişken olan controlTimer adlı değişkene atanıp Timer başlatılır. controlTimer adlı Timer Kontrolü başlatıldığında yerel olarak bir fonksiyon çalışacaktır. Bu fonksiyon Timer kontrolünün Tick olayıdır(Şekil 3d).

    Private Sub controlTimer_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles controlTimer.Tick

       Zamana bir saniye ekler.
        controlTime = controlTime.AddSeconds(1)

        Düzgün formatta tarihi görüntüler.
        dateLabel.Text = controlTime.ToLongDateString().Replace(",", ControlChars.Cr + ControlChars.Lf)

        Zamanı Görüntüler.
        timeLabel.Text = controlTime.ToLongTimeString()

    End Sub

            Şekil 3d     Örnek Uygulama Altındaki DateInfo Kod Bloğu – Timer
                               
Kontrolünün Tick Olayı

 

 

Şekil 4.30c içerisindeki StartTimer fonksiyonu  içerisindeki

        Me.controlTimer.Start()

satır işlediği anda Şekil 3d deki fonksiyon, Timer kontrolünün Interval değeri aralığında çalışır. Burada Interval özelliği 1000 olduğuna göre her bir saniyede bir kere, Şekil 3d deki bu fonksiyon çalışacaktır. Bu fonksiyon her çalıştığında controlTimer değişkenine bir saniye eklenecek ve yeni oluşmuş olan zaman dateLabel ve timeLabel isimli Label kontrollerine yazılacaktır.

 

Kontrol bitirildikten sonra Build menüsünden Build Solution seçilerek kontrol yapılandırılır ve bir hata olup olmadığı kontrol edilir.

 

Bundan sonra kontrolü denemek için projeye bir tane Windows uygulaması eklenir. Bunun için; File Menüsünden Add Project – New Project seçilerek yeni uygulama projeye dahil edilir.

 

Bu yeni eklenen Windows uygulamasına DateInfo adlı kullanıcı kontrolünü eklemek için Project menüsünden Add Referance seçilir. Açılan ekrandan Projects sekmesine gidilir ve kullanıcı kontrolü seçilerek uygulamaya eklenir(Şekil 4).

 

 

 

            Şekil 4       Örnek Uygulama Altındaki Windows Uygulamasına DateInfo

                               Kullanıcı Kontrolünü Ekleme

 

 

Şekil 4.31 ile oluşturulan kullanıcı kontrolünün DLL dosyası uygulamaya eklenir. Bu kontrol; uygulamaya eklendiği anda ToolBox ta My User Controls  adlı sekme altına da eklenir(Şekil 5).

            Şekil 5       DateInfo Kullanıcı Kontrolünün ToolBox ta Görünümü

 

 

Şekil 5 de görülen DateInfo kontrolü Form a eklendikten sonra Properties penceresinde oluşturulmuş olan özellikler görülebilir. Bu özellikler istenildiği gibi değiştirilebilir. Şekil 6a ve Şekil 6b de Properties penceresinde özellikler değiştirildikten sonra DateInfo kontrolünün form üzerindeki örnek bir görüntüsü görülmektedir.

            Şekil 6a     Örnek DateInfo Kontrolünün Properties Ekranı Görüntüsü


            Şekil 6b     Örnek DateInfo Kontrolünün Form Görüntüsü

 

 

Bu kontrolü kullanmaya başlamak için

        DateInfo1.StartTimer(Now)

satırını yazmak yeterli olacaktır. Bu satırla şu an içinde bulunulan tarih ve zamandan başlanacağı belirtilmiştir. Kontrol çalışmaya başladıktan sonra oluşacak örnek ekran görüntüsü Şekil 4.34 teki gibi olacaktır.

Kontrolü programın herhangi bir yerinde durdurmak için

 

       DateInfo1.StopTimer()

 

satırı yazılır.

            Şekil 7       Örnek DateInfo Kontrolünün Form Üzerinde Çalışma

                               Görüntüsü


Bu yazıda yeni bir Windows kontrolünün nasıl oluşturulacağı ve oluşturulan bu kotrolün nasıl kullanılacağı verilen bir örnek üzerinden anlatılmıştır.


Başka yazılarla görüşmek üzere...

kadirerdogan@hotmail.com