unit fRemCoverPreview;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ComCtrls, StdCtrls, ExtCtrls;

type
  TfrmRemCoverPreview = class(TForm)
    pnlBtns: TPanel;
    btnOK: TButton;
    lvMain: TListView;
    procedure FormCreate(Sender: TObject);
    procedure lvMainColumnClick(Sender: TObject; Column: TListColumn);
    procedure lvMainCompare(Sender: TObject; Item1, Item2: TListItem;
      Data: Integer; var Compare: Integer);
  private
    FSortCol: integer;
    FSortUp: boolean;
  public
    { Public declarations }
  end;

implementation

{$R *.DFM}

procedure TfrmRemCoverPreview.FormCreate(Sender: TObject);
begin
  FSortCol := 2;
  FSortUp := TRUE;
end;

procedure TfrmRemCoverPreview.lvMainColumnClick(Sender: TObject;
  Column: TListColumn);
begin
  if FSortCol <> Column.Tag then
    FSortCol := Column.Tag
  else
    FSortUp := not FSortUp;
  lvMain.CustomSort(nil, 0);
end;

procedure TfrmRemCoverPreview.lvMainCompare(Sender: TObject; Item1,
  Item2: TListItem; Data: Integer; var Compare: Integer);
var
  i: integer;
  odr: array[1..2] of integer;
  s1, s2: string;

begin
  case FSortCol of
    1: begin
         odr[1] := 1;
         odr[2] := 2;
       end;

    2: begin
         odr[1] := 2;
         odr[2] := 1;
       end;
  end;
  Compare := 0;
  for i := 1 to 2 do
  begin
    case odr[i] of
      1:   begin
             s1 := Item1.Caption;
             s2 := Item2.Caption;
           end;

      2:   begin
             s1 := Item1.SubItems[1];
             s2 := Item2.SubItems[1];
           end;
    end;
    Compare := CompareText(s1, s2);
    if Compare <> 0 then break;
  end;
  if not FSortUp then
    Compare := -Compare;
end;

end.
