Visual Basic MSHFlexGrid Nesnesi

By | 30 Nisan 2008

MSHFlexGrid nesnesi MS Excel‘deki grid (ızgara) görünümüne benzer birimler oluşturmak için kullanılabilecek bir nesne. Database üzerinden hazır veri çekebilen DataGrid nesnesine göre daha serbest bir kullanımı var. Bu konu anlatımında bu nesnenin önemli özelliklerini anlatacağım.

Nesneyi Projeye Ekleme

MSHFlexGrid nesnesi Visual Basic 6.0 toolbar’ına default olarak gelen nesnelerden biri değildir. Bu sebeple önce bu nesneyi projemize eklememiz gerekir. Project > Components menüsünden veya Ctrl+T kısayoluyla komponentler penceresi ekrana getirilir. Buradan “Microsoft Hierarchical FlexGrid Control 6.0 (OLEDB)” seçeneği işaretlenir ve “Uygula” butonuna basılarak nesne projeye eklenmiş olur.

Nesne Ön Bilgileri

MSHFlexGrid nesnesini form üzerine bir dikdörtgen çizer gibi ekleyin. İlk eklemede 2 satır ve 2 sütun olarak gelecektir. İleri de bunları istediğimiz gibi arttırıp azaltabiliriz. Nesne üzerinde sağ tıklayıp “Properties” seçeneği seçilirse karşınıza bu nesneye ait bazı ayarlamaları yapabileceğiniz bir pencere gelir. Kısaca bunlardan bahsedelim:

Property Pages – General :

Rows : Nesne Üzerinde Kullanılacak Satır Sayısı
Cols : Nesne Üzerinde Kullanılacak Sütun Sayısı
Fixed Rows : Gri renkli satır hücresi kolon sayısı.
Fixed Cols : Gri renkli sütun hücresi satır sayısı.

AllowBigSelection : Bu özellik, bir satır veya sütundaki tüm hücreleri seçmek için o satır veya sütuna ait gri hücreye izin vermeye ait bir değerdir. Eğer işaretlerseniz veya properties penceresinden değerini “True” yaparsanız gri hücrelere tıklayarak grup seçimi yapabilirsiniz. En sol üst köşedeki gri hücreye tıklarsanız bütün hücreler seçilir. Bunu istemiyorsanız işareti kaldırabilirsiniz.

ScrollBars : Izgara etrafında kaydırma çubukları olsun mu? hangileri olsun? gibi seçenekleri barındırır.

HighLight : Seçili hücrelerin mavi renge dönüşüp dönüşmemesi izni.

FocusRect : Odaklanma işareti. Tıklanılan karenin seçilmesi veya seçilmeden sadece tıklanılması gibi özellikleri ayarlarsınız.

SelectionMode : Çoklu hücre seçim işlemini sadece satırlara veya sadece sütunlara ayarlayabilirsiniz. Projenizde bir sütundaki birden fazla hücrenin seçilmesi gereksiz ise buradan sadece yatay izni verebilirsiniz. Veya tamamen hepsini kapatabilirsiniz.

AllowUserResizing : Program çalışırken kullanıcıya satır ve sütun genişliklerini mouse ile değiştirebilme iznini açar. Sadece satırlara veya sadece sütunlara izin verebileceğiniz gibi, tamamen kaldırabilir veya hepsine izin verebilirsiniz.

RowSizingMode : Bu değeri ancak AllowUserResizing değerini Rows veya Both olarak seçtiyseniz kullanabilirsiniz. Bir satırın yüksekliği değiştirildiğinde bu yeni değeri tüm satırlara aynen uygulasın mı yoksa sadece o satırın yüksekliğini mi değiştirsin şeklinde bir ayarlamadır. Sadece satırlar için geçerlidir.

Penceredeki diğer sekmeler görsel ayarlarla ilgilidir. Hücre çizgilerinin tipleri, fontlar, hücre renkleri gibi. Mesela gri hücrelerdeki satır ve sütun başlıklarını koyu (bold) yapmak için Font sekmesine girip buradaki FontFixed değeri seçilir ve yandaki kısımdan ayarları yapılır. FontFixed gri hücrelerin, Font ise beyaz hücrelerin ayarlarıdır.

Bir Hücreye Yazı Yazdırmak

MSHFlexGrid nesnesi üzerindeki bir hücreye yazı yazdırmak için öncelikle o hücrenin koordinatları belirtilmelidir. Bunu nesnenin .col ve .row özellikleri ile ayarlayıp .text özelliği ile yazımızı yazarız. Mesela 1,1 hücresine “galatasaray” yazdıralım. Bunun için şu kod parçasını kullanırız.

 3,5 hücresine “gokhanca.com” yazdırmak için ise aşağıdaki kod parçasını kullanırız.

İlk koordinatlar 0,0 ile başlar. Sonra sırayla devam eder. Dikkat edilirse bir yazı yazdırmak için 3 defa nesneye ait değişiklik yaptık. Bu her seferinde programcıyı yoracaktır. Bu işlemi küçük bir sub ile tanımlarsak daha pratik bir işlem yapmış oluruz. Örnek bir sub şöyle olabilir.

Burada çok pratik bir uygulama daha yapmış olduk. Eğer ki, projede birden fazla MSHFlexGrid nesnesi varsa nesne ismini de belirtip hangisine yazdırma yapacağımızı da belirleyebiliriz. Diyelim ki, iki tane MSHFlexGrid tablomuz olsun ve bunların isimleri LigSira ve TakimKadro olsun.

İlk satırda LigSira isimli tablo üzerinde 1,1 koordinatındaki hücreye “Fenerbahçe” yazdırdık. İkinci satırda ise TakimKadro isimli tablo üzerinde 2,8 koordinatındaki hücreye “Roberto Carlos” yazdırdık. Birden fazla form üzerinde bunu kullanmak istiyorsanız projenize bir Module ekleyip Sub ifadesini Public olarak tanımlamalısınız.

Bir Hücredeki Değeri Okumak

Hücreye yazdırma işlemiyle aynıdır. Yine öncelikle satır ve sütun değerlerini tanımlarız ve text özelliğinin değerine bakarız. 2,13 hücresinin değerini almak için aşağıdaki kodu kullanabiliriz.

Yine bunu da bir function ile belirtip daha pratik bir kullanım sağlayabiliriz. Üstte sub yapmıştık ama burada function kullandık. Çünkü burada bir değer dönmesini istiyoruz. Yazdırma işleminde bir değer dönmesine gerek yok.

 Kullanımı da şöyle olabilir. Mesela  Tablo1 isimli MSHFlexGrid nesnemiz üzerinde birinci sütundaki ilk 10 satırı tarayıp içinde “kerem” yazan ifadeleri bulalım:

Kolon Genişliklerini Ayarlamak

Programınızda kullanacağınız grid nesnesinde her sütunun genişliği aynı olmayabilir. Bunu tek seferde Form_Load ( ) olayında tanımlayabilirsiniz. Bunun için hangi sütunda değişiklik yapmak istiyorsanız o sütunun indeksini belirtip ColWidth değeriyle ayarlayabilirsiniz.

Eğer daha önceden nesnenin AllowUserResizing değerine izin verdiyseniz bunu mouse ile de yapabilir kullanıcı. Ama ilk açılışta biçimsiz bir tablo istemiyorsanız kodlarla genişlikleri belirtip ayarlama yapabilirsiniz.

Sütun Değerlerini Büyükten Küçüğe Sıralama

Bir MSHFlexGrid nesnesi kullanıyorsak şayet,  illaki bir sütunu büyükten küçüğe sıralamamız gerekebilir. Nesnenin Sort özelliği ile bunu çok kolay bir şekilde yapabiliriz. Bunun için öncelikle hangi sütunda sıralama yapacaksak sütunu belirlememiz ve ondan sonra sıralama şeklini seçmemiz gerekir. Bir örnek yapalım. Aşağıdaki resimdeki ilk tablo gibi bir tablomuz olsun:

mshflexgrid

Diyelim ki takım isimlerini büyükten küçüğe dizmek istiyoruz. Yukarıda ortadaki tablo gibi. Bunun için aşağıdaki kodları yazarız.

Buradaki Col ifadesi hangi sütunda sıralama yapılacağını belirtir. Sort ise sıralama türüdür. 1  küçükten büyüğe, 2 ise  büyükten küçüğe sıralama yapar.

Diyelim ki gol sayısı değerlerini küçükten büyüğe sıralayalım. Üst resimdeki 3. tablo gibi.

Sıralama işlemi için bir sub yazalım. Daha kolay işlem yapmış oluruz.

Diyelim ki Tablo1 tablosundaki 3. sütunu küçükten büyüğe sıralamak isteyelim. Kodumuz şu şekilde olacaktır.

Yararlı olması temennisiyle.

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir