Goede morgen,
Ik zoek me weer eens blauw maar kan het niet vinden:
In C# doe je iets als:
Code:
// ColumnClick event handler.
private void ColumnClick(object o, ColumnClickEventArgs e){
// Set the ListViewItemSorter property to a new ListViewItemComparer object.
this.listView1.ListViewItemSorter = new ListViewItemComparer(e.Column);
// Call the sort method to manually sort the column based on the ListViewItemComparer implementation.
listView1.Sort();
}
}
// ...
// Implements the manual sorting of items by columns.
class ListViewItemComparer : IComparer {
private int col;
public ListViewItemComparer() {
col=0;
}
public ListViewItemComparer(int column) {
col=column;
}
public int Compare(object x, object y) {
return String.Compare(((ListViewItem)x).SubItems[col].Text, ((ListViewItem)y).SubItems[col].Text);
}
}
Hoe doe ik dit in Delphi2005?
Ik heb iets geprobeerd als:
Code:
myListviewsorter = class(IComparer) // <--- Fout
private
Col: Integer;
public
constructor Create(Column: Integer);
function Compare(X, Y: TObject): Integer;
end;
procedure TWF_MainForm.ListViewMessageList_ColumnClick(sender: System.Object;
e: System.Windows.Forms.ColumnClickEventArgs);
begin
ListViewMessageList.ListViewItemSorter = myListviewsorter.Create(e.Column);
ListViewMessageList.Sort;
end;
{ myListviewsorter }
constructor myListviewsorter.Create(Column: Integer);
begin
inherited;
self.Col := Column;
end;
function myListviewsorter.Compare(X, Y: TObject): Integer;
begin
result := CompareStr(TListItem(X).SubItems[Col], TListItem(Y).SubItems[Col]);
end;
Maar ik krijg de foutmelding: Class type required
Matthijs
Bookmarks