Memik Yanık
- Kişisel Web Sitesi
Ana Sayfa
|
Hakkımda
|
Kitap Önerileri
|
Fotoğraflarım
|
RSS
|
İletişim
İçerik Kategorileri
»
Benden
»
Genel
»
Kitaplarım
»
Yazılım
Makale Kategorileri
»
ADO.NET
»
ASP.NET
»
C# 3.0 Kitabı
»
C#.NET
»
Delphi
»
Delphi Prism
»
Forumlardaki Sorular
»
Görsel Dersler
»
Güvenlik
»
Programcılık Dersleri
»
SQL Server
»
VB.NET
Arama
İçerikler
Makaleler
Tema
Mavi Tema
Sarı & Lacivert Tema
Kırmızı Tema
Mor Tema
Turuncu Tema
Siyah Tema
Yeşil Tema
Kaynaklar
»
CETURK
»
Ceviz.Net
»
csharpnedir.com
»
Kariyer Video
»
sanalkurs
»
Yazgeliştir
»
Yazılım Günlüğü
Takip Ettiklerim
»
Adem Aktepe
»
Aydın ÜNLÜ
»
Cengiz HAN
»
Cihan YAKAR
»
Fatih COŞKUN
»
Fatih Durgut
»
Fatih Tolga Ata
»
Görkem Sezgin
»
Gürcan Serbest
»
Gürkan Yeniçeri
»
Kod Yazıyorum
»
Levent Yıldız
»
Mahmut Kantar
»
Mehmet Güzel
»
Mehmet Nuri ÇANKAYA
»
Recip SELLİ
»
Sem Göksu
»
Tamer ÖZ
»
Tuğrul Helvacı
»
Uğur UMUTLUOĞLU
»
Yağız GÖNÜLER
»
Yasin Sirkecili
Arşiv
»
2010 Mayıs (1)
»
2010 Nisan (2)
»
2010 Ocak (1)
»
2009 Aralık (2)
»
2009 Kasım (14)
»
2009 Ekim (19)
»
2009 Eylül (3)
»
2009 Ağustos (3)
»
2009 Temmuz (12)
»
2009 Haziran (2)
»
2009 Mayıs (55)
»
2009 Nisan (26)
ValueListEditor Kontrolü
Delphi uygulaması dahilinde formun üzerinde anahtar değer çiftini gösterip kullanıcının seçim yapmasına imkan vermek istiyorsanız
ValueListEditor
kontrolünü kullanabilirsiniz. Hemen açıklama yapmak gerekirse kendiniz anahtar-değer çifti içeren
Strings
koleksiyonu hazırlayıp içeriğini StringGrid’de veya 2 ListBox’ta listeleyip aynı sonuçları elde edebilirsiniz. Ancak bu işlem ValueListEditor kontrolü ile zahmetsizce yapılmaktadır.
2 sütunlu StringGrid nesnesi görünümündeki bu kontroldeki sütunların başlıklarını değiştirmek istiyorsanız
TitleCaptions
özelliğinden yararlanmalısınız. Bu kontrolün birçok özelliği StringGrid kontrolü ile aynıdır.
TStrings tipindeki TitleCaptions özelliğe ait düğmeyi tıkladığınızda ekrana String List Editor diyalog kutusunun geleceğini tahmin edebilirsiniz. Başlangıçta ValueListEditor nesnesi Key ve Value başlığına sahip 2 sütuna sahip olduğu için String List Editor diyalog kutusunda 2 seçenek yer almaktadır. Key ve Value adlı bu seçeneklere istediğiniz başlık metnini verebilirsiniz.
TStrings tipindeki TitleCaptions özelliğinin içeriğini kod yazarak değiştirebilirsiniz. ValueListEditor nesnesini yerleştirmiş olduğunuz formun Create olayını temsil eden yordamı aşağıdaki gibi düzenlemeniz halinde sütun başlıklarını değiştirmiş olursunuz.
procedure TForm1.FormCreate(Sender: TObject);
begin
ValueListEditor1.TitleCaptions.Insert(0, 'Anahtar');
ValueListEditor1.TitleCaptions.Insert(1, 'Değer');
end;
Bu kodda sütun başlığı olarak kullanılacak elemanları Insert metodu ile Strings tipindeki
TitleCaptions
koleksiyonuna eklediğim için mevcut elemanlar kayar. Aşağıdaki gibi kod yazıp mevcut elemanları silip eleman ekleme işlemini ondan sonra yapabilirsiniz.
procedure TForm1.FormCreate(Sender: TObject);
Var
Sayi, i : Integer;
begin
Sayi := ValueListEditor1.TitleCaptions.Count;
For i:= Sayi -1 Downto 0 Do
Begin
ValueListEditor1.TitleCaptions.Delete(i);
End;
ValueListEditor1.TitleCaptions.Add('Anahtar');
ValueListEditor1.TitleCaptions.Add( 'Değer');
end;
Şimdi ise
TitleCaptions
özelliğinin veya koleksiyonun içeriğini farklı bir teknikle değiştireceğim. Bu amaçla önce bir StringList nesnesi hazırlayıp 2 eleman aktardım.
procedure TForm1.FormCreate(Sender: TObject);
Var
Liste : TStringList;
begin
Liste := TStringList.Create;
Liste.Add('Anahtar');
Liste.Add('Değer');
ValueListEditor1.TitleCaptions := Liste;
end;
Value List Editor’de listelenecek seçeneklerini tasarım anında veya kod yazarak belirleyebilirsiniz. Seçenek veya elemanları tasarım anında belirlemek istiyorsanız
Strings
özelliğinden yararlanmanız gerekir. Object Inspector penceresinde bu özelliği ait düğmeyi tıkladığınızda ekrana aşağıda verilen
Value List Editor
diyalog kutusu gelir.
Value List Editor diyalog kutusunda istediğiniz sayıda seçeneğin anahtar ve değer bilgilerini girdikten sonra ValueListEditor nesnesinden yararlanabilirsiniz. Çalışma anında ValueListEditor’de listelenen seçeneklerden birisi tıklanıp seçildiğinde
SelectCell
olayı meydana gelir.
Bu olayı temsil eden yordamın Integer tipindeki
ACol
ve
ARow
parametreleri ile çalışma anında üzeri tıklanıp seçilen hücrenin sütun ve satır değeri yordama gönderilmektedir. Seçilen hücrenin veya seçeneğin anahtar-değer bilgilerini elde etmek için forma 2 Edit yerleştirip aşağıda verdiğim kodu yazdım.
procedure TForm1.ValueListEditor1SelectCell(Sender: TObject; ACol,
ARow: Integer; var CanSelect: Boolean);
begin
Edit1.Text := ValueListEditor1.Keys[Arow];
Edit2.Text := ValueListEditor1.Values[Edit1.Text];
end;
Tahmin edeceğiniz gibi ValueListEditor nesnesinin anahtar bilgileri Keys koleksiyonunda, değer bilgileri ise
Values
koleksiyonunda saklanmaktadır. Hangi elemanın veya satırın anahtarını elde etmek istiyorsanız o satırın sıra numarasını yukarıda yapıldığı gibi Keys koleksiyonuna parametre olarak vermelisiniz.
ValueListEditor nesnesinin goRowSelect özelliği false olduğu için satır seçme işlemi yapılamaz. Yalnızca değer bilgilerinin saklandığı 2. sütundaki hücreler seçilebilir. Satır seçme işlemine izin vermek istiyorsanız Object Inspector penceresinde
Options
adı altında gruplanmış seçeneklerden birisi olan goRowSelect özelliğini True yapmalı veya bu özelliği aşağıda yapıldığı gibi kod yazarak ayarlamalısınız.
ValueListEditor1.Options := ValueListEditor1.Options + [goRowSelect];
Yukarıda ValueListEditor’de listelenecek anahtar-değer çiftlerini tasarım anında Object Inspector penceresinden yararlanarak belirledim. Bu seçenekleri kod yazarak çalışma anında belirleyebilir veya mevcut bir dosyanın içeriğini okuyup ValueListEditor nesnesine aktarabilirsiniz. Bu işlemin nasıl yapıldığını anlatmak için Object Inspector penceresinde
Strings
özelliğine ait düğmeyi tıklayıp Value List Editor diyalog kutusunu ekrana getirip mevcut seçenekleri sildim aşağıda verdiğim kodu yazdım.
procedure TForm1.AktarClick(Sender: TObject);
begin
ValueListEditor1.Strings.Add('Adana=01');
ValueListEditor1.Strings.Add('Ankara=06');
ValueListEditor1.Strings.Add('Antalya=07');
ValueListEditor1.Strings.Add('İstanbul=34');
ValueListEditor1.Strings.Add('İzmir=35');
end;
Bu kodda anahtar-değer bilgilerini kod yazımı sırasında belirledim. Örnek olması için forma 2 ListBox yerleştirip ilk ListBox’a il adlarını ve 2. ListBox’a ise illerin plakalarını yazıp aşağıda verdiğim kodu yazdım. Bu arada 2004 yılında yayınlanan C# kitabımda forma yerleştirdiğim Button nesnesine "Aktar" adını verdiğim için suçlanıp dava edildiğimi hatırlayınca umarım Aktar'ı namı hesabına kaydetmiş(!) yerli yazarlar bu makaleyi görmezler. Yoksa aynı suçu tekrar işlediğim için cezam bu kez daha ağır olacaktır. Bu nedenle sizler risk almayıp düğmeye en azından "naklet" adını verin.
procedure TForm1.AktarClick(Sender: TObject);
Var
Sayi, i : Integer;
Eleman :String;
begin
Sayi := ListBox1.Items.Count;
For i:=0 To Sayi-1 Do
Begin
Eleman := ListBox1.Items[i] + '= ' + ListBox2.Items[i];
ValueListEditor1.Strings.Add(Eleman);
End;
end;
ValueListEditor nesnesinin Strings özelliği gerçekte
TStrings
tipinde bir koleksiyon olduğu için kendiniz
Strings
koleksiyonu hazırlayıp bu özelliğe aktarabilirsiniz. Bu nedenle yukarıda verilen kod aşağıdaki gibi düzenlenebilir.
procedure TForm1.AktarClick(Sender: TObject);
Var
Sayi, i : Integer;
Liste :TStringList;
begin
Liste := TStringList.Create;
Sayi := ListBox1.Items.Count;
For i:=0 To Sayi-1 Do
Begin
Liste.Add(ListBox1.Items[i] + '= ' + ListBox2.Items[i]);
ValueListEditor1.Strings := Liste;
End;
end;
Delphi
30.05.2009 03:01:23
YORUM YOK
Yorumlar
Yorum Yaz
Bu yazıya ilk yorum yapan siz olun.
Ad Soyad
E-Posta
Yorumunuz
Ana Sayfa
|
Hakkımda
|
Kitap Önerileri
|
Fotoğraflarım
|
RSS
|
İletişim
Memik Yanık 2004-2009 © Tüm Hakları Saklıdır.
Hazırlayan
www.semgoksu.com