Ana içeriğe atla

(import)Listviewde Başlığa Göre Sıralama Nasıl Yapılır ?

Örneği olabildiğince geniş tutmaya çalışacağız. Listviewde yer alan string, integer, date ve time alanlarına göre sıralama yapacağız. Bunun için formun üstüne bir adet listview yerleştirelim. Listview'in ViewStyle özelliğini vsReport olarak ayarlayalım. Daha sonra Columns özelliğinden gerekli alanları tanımlayalım.
  • Dosya Adı
  • Boyut (KB)
  • Dizin
  • Tarih
  • Saat
Ardından items özelliğini kullanarak bu alanlara değer girelim. ListView'in OnColumnClick olayına giderek aşağıdakileri yazalım.

procedure TForm1.ListView1ColumnClick(Sender: TObject; Column: TListColumn); begin fsort :=column.Index; ListView1.CustomSort(@customsortproc,0); end;

Burda yaptığımız işlem listviewde tıklanan sütunun numarasını alıp bir değişkende saklıyoruz ardından listview'in CostumSort metodunda daha sonra tanımlayacağımız bir fonksiyonun adresini belirtiyoruz. Sıralamayı yapacak olan fonksiyon burada belirtilen fonksiyonumuz olacak. Burda CallBack Function denen bi olay kullanılıyor. Bütün elemanlar için bu fonksiyon teker teker çağrılıyor. Bu konu hakkında daha fazla bilgiyi google'dan veya msdn den bulabilirsiniz. Şimdi CostumSortProc adlı fonksiyonu tanımlayalım.

implementation {$R *.dfm} function customsortproc(item1,item2:tlistitem;paramsprt:integer):integer;stdcall; begin case fsort of 0: result := lstrcmp(pchar(tlistitem(item1).Caption), pchar(tlistitem(item2).Caption)); 1: result := CompareValue(StrToInt(tlistitem(item1).SubItems[fsort-1]), StrToInt(tlistitem(item2).SubItems[fsort-1])); 2: result := lstrcmp(pchar(tlistitem(item1).SubItems[fsort-1]), pchar(tlistitem(item2).SubItems[fsort-1])); 3: result := CompareDate(StrToDate(tlistitem(item1).SubItems[fsort-1]), StrToDate(tlistitem(item2).SubItems[fsort-1])); 4: result := CompareTime(StrToTime(tlistitem(item1).SubItems[fsort-1]), StrToTime(tlistitem(item2).SubItems[fsort-1])); end End;

Fonksiyonu implementation satırından hemen sonra tanımlıyoruz. Ardından Fsort değişkenimizi tanımlıyoruz.
var Form1: TForm1; fsort:integer;
Ardından CompareDate, CompareValue adlı fonksiyonları içeren unitleride uses satırına ekliyoruz.
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ComCtrls,math,dateutils, StdCtrls;
İşlem tamamlanmıştır. F9 ile çalıştırıyoruz :) örneği indirmek için buraya tıklayabilirsiniz.

Yorumlar

Adsız dedi ki…
Selam;

OnColumnsort diye bir şey olması gerek.
ve Listview'in de AlphaSort diye bir yordamı.
Bunları bir araştır istersen.

ggumus

Bu blogdaki popüler yayınlar

Yazılımı Oluşturan Bileşenler Nelerdir?

Yazılımı oluşturan bileşenlerden daha önce söz etmiştik. Şimdi bu bileşenlerin neler oldukları üzerinde biraz duralım. Yazılımı oluşturan bileşenler = Mantık + Veri + Belge + İnsan + Program. Bu bileşenlerin az çok neler olduğunu, neleri kapsadığını biliyoruz ama biz yine de kıyısından köşesinden açıklayalım. Zaten bu yazıdaki asıl amaç yazılım bileşenlerinden belgelemenin yerini ve önemi (dökümantasyon) vurgulamak. Mantık = Yazılım herşeyden önce bir işin bilgisayar aracılığı ile yapılması amacına yöneliktir. Bu nedenle bilgisayarlaştırılmak istenen işin mevcut mantığı bir şekilde yazılıma da yansılıtılmak zorundadır. Veri = Her tür yazılım mutlaka bir veri üzerinde çalışmak durumundadır. Veri işlemeyen yazılımın geliştirilmesi söz konusu değildir. Söz konusu olan veri dış ortamdan alınabileceği gibi yazılımın içerisinde de üretilebilir. Zaten yazılımın temel amacı veriyi bilgiye dönüştürmektir. İnsan = Doğal olarak yazılımın insan bileşeni iki boyutludur. Yazıl

Yunus sen bu dünyaya niye geldin?

Göçtü Kervan Ah nice bir uyursun uyanmaz mısın Göçtü kervan kaldık dağlar başında Çağrışı tellallar inanmaz mısın Göçtü kervan kaldık dağlar başında Emr-i hac göçeli hayli zamandır Muhammed cümleye dindir imandır Delilsiz gidilmez yollar yamandır Göçtü kervan kaldık dağlar başında Yunus sen bu dünyaya niye geldin Gece gündüz Hakkı zikretsin dilin Enbiyaya uğramaz ise yolun Göçtü kervan kaldık dağlar başında Yunus Emre

Leyse li'l-insâni illâ mâ seâ

"Leyse li'l-insâni illâ mâ seâ" derken Hudâ; Anlamam hiç meskenetten sen ne beklersin daha? Mehmet Akif Ersoy / Durmayalim Leyse li'l-insâni illâ mâ seâ : Necm Süresi 39. Ayet. [İnsan için ancak çalıştığı vardır.] Meskenet: 1 . Miskinlik, beceriksizlik. 2 . Yoksulluk, fakirlik. (Türk Dil Kurumu) Olay zaten yeterince acik. Yan gelip yatma kardesim. Calis. Bu misralar yazildigi donemde bu anlami tasiyordu fakat zaman ilerledikce baska bir gercegi de gozler onune seriyor.Gerci bu gercek cok kapsamli bir kac satirla anlatilabilecek bir sey degil kaldiki benim bilgim de buna yeterli degil zaten. Ben giris cumlelerini verebilirim gerisini arastirmak yaziyi okuyanlara kalmis. (Matrix gibi bisey oldu bu yaw. Neo'nun kahinle bulusup yanindan ayrildiktan sonra Morpheus ile konusma sahnesi.) Yani kisaca sunu demek istiyorum. Ben bu misrayi ilk okudugumda hic birsey anlamadim. Bu misralari anlayabilmek icin kuran mealine ve turkce sozluklere bakmak zorunda k