![]() |
![]() ![]() ![]() ![]() |
|
Создать TListView, который автоматически пересортирует при щелчке на заголовке колонкиDelphi , Синтаксис , СортировкаСоздать TListView, который автоматически пересортирует при щелчке на заголовке колонки
Оформил: DeeCo
unit SortedListView;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ComCtrls;
type
TSortedListView = class(TListView)
private
FSortColumn: Integer;
procedure SetSortColumn(const Value: Integer);
procedure SortedListViewCompare(Sender: TObject; Item1, Item2: TListItem;
Data: Integer; var Compare: Integer);
procedure SortedListViewColumnClick(Sender: TObject; Column: TListColumn);
{ Private declarations }
protected
{ Protected declarations }
public
constructor Create(AOwner: TComponent); override;
{ Public declarations }
published
{ Published declarations }
property SortColumn: Integer read FSortColumn write SetSortColumn;
end;
implementation
{==============================================================================}
{ TSortedListView }
{==============================================================================}
constructor TSortedListView.Create(AOwner: TComponent);
begin
inherited;
OnColumnClick := SortedListViewColumnClick;
OnCompare := SortedListViewCompare;
end;
{==============================================================================}
procedure TSortedListView.SetSortColumn(const Value: Integer);
begin
FSortColumn := Value;
AlphaSort;
end;
{==============================================================================}
procedure TSortedListView.SortedListViewColumnClick(Sender: TObject;
Column: TListColumn);
begin
SortColumn := Column.Index;
end;
{==============================================================================}
procedure TSortedListView.SortedListViewCompare(Sender: TObject;
Item1, Item2: TListItem; Data: Integer; var Compare: Integer);
begin
if SortColumn = 0 then
Compare := CompareText(Item1.Caption, Item2.Caption)
else
Compare := CompareText(Item1.SubItems[SortColumn - 1], Item2.SubItems[SortColumn - 1]);
end;
end.
Обзор кода: Общая информация
Код определяет пользовательский компонент Анализ кода
1. Класс Альтернативное решение
Хотя предоставленный код работает, есть более элегантный способ реализации сортировки без переопределения метода Пример модификации кода для использования В этом модифицированном коде процедура В статье описывается создание компонента TListView, который автоматически сортирует элементы списка при щелчке на заголовке колонки. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш :: Главная :: Сортировка ::
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 | ||||