Ana içeriğe atla

Property Grid-Bölüm 1

Bu makalemizde visual studio kullananların sıklıkla kullandığı ve esnek bir yapıya sahip olan property grid componentinden bahsedeceğiz. Property grid nedir, ne için kullanılır, nasıl eklenir, temel özellikleri nelerdir gibi konulara deyineceğiz. Makalemizin 2. Bölümünde ise complex data tiplerini nasıl gösteririz, gibi konulara deyineceğiz.

Visual Studio içerisinde bulunan form ve componentlere ait özelliklerin görüntülendiği “Properties” penceresi property gride bir örnektir. PropertyGrid ile objelerin özelliklerini görüntüleyebilir, üzerinde değişiklikler yapabilir, farklı editörler yardımı ile veri yapılarını görselleştirebiliriz.

Property grid componentini kullanabilmek için ”Toolbox” üzerinde sağa tıklayıp, “Choose Items” seçeneğine tıkladığımızda, karşımıza aşağıdaki (Resim-1) gibi component listesi gelecektir.
1
Resim-1
Bu listeden Property grid componentlerinin checkini işaretleyip “ok” butonuna tıkladığınızda toolbox’ımıza poperty grid componenti eklenmiş olacaktır.

Bu componenti toolbox’tan sürükleyip formumuzun üzerine bırakarak kullanabiliriz. Yazdığımız herhangi bir sınıfn instance’ını oluşturup property grid üzerinden gösterip, istediğimiz özelliklerini değiştirtebiliriz. Hemen hemen tüm sınıfları property grid üzerinden yönetebiliriz, bu anlamda property grid bize generic bir yapı sunar.


Property Grid üç ana bölümden oluşmaktadır.
1-Toolbar: Property gride set edilen sınıfın gösterilen özelliklerin sıralanması, kategorilere göre gösterilmesi gibi seçimlerin yapılabildiği butonların var olduğu alandır.

2-Class Properties (Sınıf özellikleri):
Property gride set edilen sınıfın özelliklerinin ve değerlerinin gösterildiği alandır.

3-Description (Seçilen özelliğin açıklaması):
Property gride set edilen sınıfın seçili olan property açıklamasının yazıldığı alandır.
2
Resim-2
Property grid, bilgileri kullanıcının rahatlıkla anlayabileceği bir formatta gösterebilmek için belirli attributelar kullanır. Kodlayan kişi bu attributelar yardımı ile daha anlaşılır bir gösterim sunabilir.

Bu attributelardan bazıları şunlardır:
DescriptionAttribute: Property grid üzerinde seçili propertynin, açıklama (description) alanında gösterileceği bilgidir. Kullanıcıya özellik hakkında bilgi verilebilir.

CategoryAttribute: Property grid üzerinde gösterilen özellikler bu attribute yardımı ile kategorilere bölünerek sınıflandırılabilir. Aynı kategiri adına ait özellikler bir grup olarak, ağaç mantığı ile gösterilir.

BrowsableAttribute:
Propertynin grid üzerinde gösterilip gösterilmeyeceğini belirtir. Bu attribute hiç verilmemiş ise default olarak özellik gösterilecek şekilde set edilir.

ReadOnlyAttribute:
Property grid üzerinde gösterilen propertynin readonly olup olmadığını belirtir. Bu attribute verilmemiş ise default olarak değiştirilebilir olacaktır.

DefaultValueAttribute:
Property grid üzerinde gösterilen propertynin default değerini gösterir.

DisplayNameAttribute:
Property grid üzerinde gösterilen propertynin adını belirtir. Kodlama aşamasında anlaşılır olmayan isimleri anlaşılır bir şekile getirilebilir.
Yukardaki grid üzerinde gösterilen sınıf şu şekildedir.
Public Class Urun

    Private objAd As String
    <Description("Ürün adı"), DisplayName("Ürün Adı"), Category("Genel")> _
    Public Property Ad() As String
        Get
            Return objAd
        End Get
        Set(ByVal value As String)
            objAd = value
        End Set
    End Property

    Private objBarkod As String
    <Description("Ürün barkod bilgisi"), DisplayName("Barkod"), Category("Genel"), [ReadOnly](True)> _
    Public Property Barkod() As String
        Get
            Return objBarkod
        End Get
        Set(ByVal value As String)
            objBarkod = value
        End Set
    End Property

    Private objFiyat As Decimal
    <Description("Ürün fiyatı"), DisplayName("Fiyat"), Category("Genel")> _
    Public Property Fiyat() As Decimal
        Get
            Return objFiyat
        End Get
        Set(ByVal value As Decimal)
            objFiyat = value
        End Set
    End Property

End Class
“<Description("....."), DisplayName("....."), Category(".....")>” Şeklinde “<>” işaretleri arasına yazılan bilgiler ilgili attribute sınıflarıdır, böylelikle kullanıcıya daha anlaşılır bir notasyonda bilgi gösterilir.
Armağan DÖKER

Yorumlar

Bu blogdaki popüler yayınlar

UML ve Modelleme – Bölüm 4 (Class (Sınıf) Diyagramları)

Bir önceki makalemizde UML modellemede kullanılan ilk diyagram olan Use Case diyagramını incelemiştik. Bu makalemizde nesne tabanlı programlamada kullanılan sınıflar ve sınıfların arasındaki ilişkileri modelleyebileceğimiz diyagramlar olan Class(Sınıf) diyagramlarını inceleyeceğiz. UML’de sınıflar, nesne tabanlı programlama mantığı ile tasarlanmıştır. Sınıf diyagramının amacı bir model içerisinde sınıfların tasvir edilmesidir. Nesne tabanlı uygulamada, sınıfların kendi özellikleri (üye değişkenler), işlevleri (üye fonksiyonlar) ve diğer sınıflarla ilişkileri bulunmaktadır. UML’de sınıf diyagramlarının genel gösterimi aşağıdaki gibidir. Şekil 1. Class Diyagram Şekil1’de görüldüğü üzere bir dikdörtgeni 3 parçaya bölüyoruz. En üst bölüm sınıf adını, orta kısım özellik listesini (üye değişkenler) ve en son kısım, işlev listesini (üye fonksiyonlar) göstermektedir. Çoğu diyagramlarda alt iki bölüm çıkarılır. Genelde tüm özellik ve işlevler gösterilmemektedir. Ama

Yazılım Maliyet Tahmineleme Tecrübeleri

Yazılım mühendisliğinde maliyet hesabı her zaman problem olmuştur. "Bu iş kaç Adam/Gün tutar?" sorusuyla sıkça karşılaşıyoruz. Adam/gün veya Adam/ay ölçütleri bir kaynağın/kişinin belirtilen zaman dilimindeki iş gücü anlamına gelir. Tabi bu noktada yine kafa karışıklıkları başlar. 6 A/G'lik bir işi hızlandıralım diye 2 kişi ile yapmaya çalışsak ve kaynak/kod, modül, altyapı, insan vb. her bir şeyi bir kenara bıraksak, matematiksel basit formülle 6/2=3 A/G'de biter? Gerçek hayat böyle değil, öncelikle bunu anlamamız lazım. Hep şu örnek verilir; "Aynı bebeği 2 kadın birlikte daha kısa sürede doğurur mu?" Eğer bunun cevabı "Evet" ise (veya bir gün böyle bir durum ortaya çıkarsa), yazımı değiştirmem gerekecek:) Mevzu gerçekten derin...Maliyet hesabı; bulunduğunuz firmanın yazılım süreçlerini hangi methodlarla uyguladığına, ilgili işin o dönemdeki aciliyetine, (şirket yönetiminin baskısına:)) vb. bir çok duruma bağlı olabilir. Örneğin; bizim firmada e

UML ve Modelleme – Bölüm 3 (Use Case Diyagramlar)

Önceki iki makalemizde ( 1 , 2 ) UML’e genel olarak değinip ve modellemede kullanacağımız dokuz diyagram hakkında bilgiler vermiştik. Bu makalemizde Use Case diyagramından detaylı bahsedeceğiz. Öncelikle, genel Use case diyagramının tanımını hatırlayalım. “Bir kullanıcı ve bir sistem arasındaki etkileşimi anlatan senaryo topluluğudur.” Ivar Jacobson Senaryo tanımı için der ki: “Aktörle sistem arasında gerçekleştirilen, sonucunda aktöre farkedilir getirisi/ faydası oluşan etkileşimli diyalogdur. ” UML Use Case Diyagramları  sistemin işlevselliğini açıklamak amacıyla kullanılır. Sistemin birbirinden ayrı özelliklerinin detaylarını göstermekten ziyade, Use Case Diyagramlar, tüm mevcut işlevselliği göstermek için kullanılabilir. Buradaki en önemli noktalardan biri,   Use Case Diyagramlar temelde sequence diyagram ve akış diyagramlarından farklıdır. Use Case diyagramlar dört ana elemandan oluşmaktadır. Aktörler , Sistem (Proje kapsamını belirtir) , Use Caseler ve bunlar ara