- Dosya Adı
- Boyut (KB)
- Dizin
- Tarih
- Saat
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.procedure TForm1.ListView1ColumnClick(Sender: TObject; Column: TListColumn); begin fsort :=column.Index; ListView1.CustomSort(@customsortproc,0); end;
Fonksiyonu implementation satırından hemen sonra tanımlıyoruz. Ardından Fsort değişkenimizi tanımlıyoruz.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;
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
OnColumnsort diye bir şey olması gerek.
ve Listview'in de AlphaSort diye bir yordamı.
Bunları bir araştır istersen.
ggumus