Nesneyi Projeye Ekleme
MSHFlexGrid nesnesi Visual Basic 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 propersites 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 ..vb. 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,
MSHFlexGrid.Col = 1
MSHFlexGrid.Row = 1
MSHFlexGrid.Text = "galatasaray"
ÅŸekline yaparız. 3,5 hücresine "gokhanca.com" yazdırmak için ise
MSHFlexGrid.Col = 3
MSHFlexGrid.Row = 5
MSHFlexGrid.Text = "gokhanca.com"
kodunu kullanabiliriz. İ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.
Sub TabloYaz(satir As Integer, sutun As Integer, yaz As Variant, obje As MSHFlexGrid)
obje.Col = sutun
obje.Row = satir
obje.Text = yaz
End Sub
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 tablomuz olsun ve bunların isimleri LigSira ve TakimKadro olsun.
TabloYaz 1, 1, "Fenerbahçe", LigSira
TabloYaz 1, 1, "Roberto Carlos", TakimKadro
ÅŸeklinde kullanabiliriz. 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.
MSHFlexGrid.Col = 2
MSHFlexGrid.Row = 13
OkunanDeger = MSHFlexGrid.Text
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.
Function TabloOku(satir As Integer, sutun As Integer, obje As MSHFlexGrid) As Variant
obje.Col = sutun
obje.Row = satir
TabloOku = obje.Text
End Function
Kullanımı da ÅŸöyle olabilir. Mesela Tablo1 isimli MSHFlexGrid nesnemiz üzerinde birinci sütundaki ilk 10 satırı tarayıp içinde "gokhanca" yazan ifadeleri bulalım:
For i = 1 To 10
If TabloOku(i, 1, Tablo1) = "gokhanca" Then
' ...
End If
Next
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 indexini belirtip ColWidth deÄŸeriyle ayarlama yaparız.
Tablo1.ColWidth(0) = 200
Tablo1.ColWidth(1) = 300
Tablo1.ColWidth(2) = 500
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 birinci resimde olduÄŸu gibi bir tablomuz olsun:

Diyelimki birinci sütunu büyükten küçüÄŸe dizmek istiyoruz. Bunun için aÅŸağıdaki kodları yazarız.
Tablo1.Col = 1
Tablo1.Sort = 2
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 2. sütundaki deÄŸerleri küçükten büyüÄŸe sıralayalım. Üstteki resimdeki 3. tablodaki gibi.
Tablo1.Col = 2
Tablo1.Sort = 1
2. sütundaki deÄŸerleri büyükten küçüÄŸe dizmek için ise aÅŸağıdaki ayarlamaları yaparız.
Tablo1.Col = 2
Tablo1.Sort = 2
Sıralama iÅŸlemi için bir sub yazalım. Daha kolay iÅŸlem yapmış oluruz.
Sub TabloSirala(sutun As Integer, yon As Byte, obje As MSHFlexGrid)
If yon = 1 Or yon = 2 Then
obje.Col = sutun
obje.Sort = yon
Else
Exit Sub
End If
End Sub
Diyelimki Tablo1 tablosundaki 5. sütunu küçükte büyüÄŸe sıralamak isteyelim:
TabloSirala 5, 1, Tablo1
iÅŸte bu kadar ;)
| < Önceki | Sonraki > |
|---|















