OSDN Git Service

カラムクリックでソートできるようにした。
authorh677 <h677>
Fri, 19 Nov 2004 14:24:45 +0000 (14:24 +0000)
committerh677 <h677>
Fri, 19 Nov 2004 14:24:45 +0000 (14:24 +0000)
Round.dfm
Round.pas

index 738f957..95050da 100644 (file)
--- a/Round.dfm
+++ b/Round.dfm
@@ -1,6 +1,6 @@
 object RoundDialog: TRoundDialog
-  Left = 278
-  Top = 186
+  Left = 323
+  Top = 180
   Width = 600
   Height = 427
   BorderIcons = [biSystemMenu]
@@ -86,6 +86,8 @@ object RoundDialog: TRoundDialog
       TabOrder = 0
       ViewStyle = vsReport
       OnChange = RoundListViewChange
+      OnColumnClick = RoundListViewColumnClick
+      OnCompare = RoundListViewCompare
     end
   end
   object Panel3: TPanel
@@ -141,6 +143,7 @@ object RoundDialog: TRoundDialog
             Bevel = pbNone
             Width = 0
           end>
+        SimplePanel = False
       end
       object Button1: TButton
         Left = 104
@@ -181,11 +184,139 @@ object RoundDialog: TRoundDialog
     end
   end
   object ItemIcon16: TImageList
-    Left = 356
+    Left = 360
     Top = 4
     Bitmap = {
-      494C010102000400040010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
-      0000000000003600000028000000400000001000000001001000000000000008
+      494C010104000900040010001000FFFFFFFFFF00FFFFFFFFFFFFFFFF424D3600
+      0000000000003600000028000000400000003000000001001000000000000018
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
@@ -204,33 +335,33 @@ object RoundDialog: TRoundDialog
       0000000000000000000000000000000000000000000000000000000000000000
       00000000000000000000000000000000000000001042FF7F1863E07F1863E07F
       1863E07F1863E07F18630000104200000000000000001042FF7FFF7FFF7FFF7F
-      FF7FFF7FFF7FFF7FFF7FFF7F1863000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000000000000000000010421042FF7FE07F1863E07F1863
+      FF7FFF7FFF7FFF7FFF7FFF7F186300000000000000000000FF7FFF7FFF7FFF7F
+      FF7FFF7FFF7FFF7F000000000000000000000000000000000000000000001042
+      FF7F0000000000000000000000000000000010421042FF7FE07F1863E07F1863
       E07F1863E07F186310420000000000000000000000001042FF7F104210421042
-      10421042104210421042FF7F1863000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000001042FF7FE07F1863E07F1863E07F
+      10421042104210421042FF7F1863000000000000000000001042104200000000
+      00000000FF7FFF7F000000000000000000000000000000000000000010421042
+      FF7FFF7F00000000000000000000000000001042FF7FE07F1863E07F1863E07F
       1863E07F1863E07F00001863186300000000000000001042FF7FFF7FFF7FFF7F
-      FF7FFF7FFF7FFF7FFF7FFF7F1863000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000001042FF7FFF7FFF7FFF7FFF7FFF7F
+      FF7FFF7FFF7FFF7FFF7FFF7F1863000000000000000000000000104200000000
+      00000000FF7F0000000000000000000000000000000000000000000010420000
+      0000FF7F00000000000000000000000000001042FF7FFF7FFF7FFF7FFF7FFF7F
       FF7FFF7FFF7F104200001F00FF7F18630000000000001042FF7F104210421042
-      10421042104210421042FF7F1863000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000104210421042104210421042
+      10421042104210421042FF7F1863000000000000000000000000104210420000
+      0000FF7FFF7F0000000000000000000000000000000000000000104210420000
+      0000FF7FFF7F0000000000000000000000000000104210421042104210421042
       10421042104210421042FF7FFF7F00000000000000001042FF7FFF7FFF7FFF7F
-      FF7FFF7FFF7FFF7FFF7FFF7F1863000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000000000000000000000001042FF7FE07F18631042FF7F
+      FF7FFF7FFF7FFF7FFF7FFF7F1863000000000000000000000000000010420000
+      0000FF7F00000000000000000000000000000000000000000000104200000000
+      00000000FF7F00000000000000000000000000001042FF7FE07F18631042FF7F
       FF7F1F0018631F00FF7FFF7F000000000000000000001042FF7F104210421042
-      10421042104210421042FF7F1863000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000000000000000000000001042FF7F1863E07F18631042
+      10421042104210421042FF7F1863000000000000000000000000000010421042
+      FF7FFF7F00000000000000000000000000000000000000001042104200000000
+      00000000FF7FFF7F0000000000000000000000001042FF7F1863E07F18631042
       FF7FFF7F1F00FF7FFF7F0000104200000000000000001042FF7FFF7FFF7FFF7F
-      FF7FFF7FFF7FFF7FFF7FFF7F1863000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000000000000000000000001042FF7FE07F1863E07F1863
+      FF7FFF7FFF7FFF7FFF7FFF7F1863000000000000000000000000000000001042
+      FF7F000000000000000000000000000000000000000000001042104210421042
+      10421042104210420000000000000000000000001042FF7FE07F1863E07F1863
       1042FF7FFF7FFF7F00001042104200000000000000001042FF7F104210421042
       10421042104210421042FF7F1863000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
@@ -251,12 +382,19 @@ object RoundDialog: TRoundDialog
       1042104210421042104200000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       000000000000000000000000000000000000424D3E000000000000003E000000
-      2800000040000000100000000100010000000000800000000000000000000000
-      000000000000000000000000FFFFFF00FFFFC00100000000E001C00100000000
-      C001C00100000000C001C001000000008001C001000000000001C00100000000
-      0001C001000000000000C001000000008001C001000000008001C00100000000
-      8001C001000000008003C00100000000C01FC00100000000E1BFC00300000000
-      FFFFC00700000000FFFFC00F0000000000000000000000000000000000000000
-      000000000000}
+      2800000040000000300000000100010000000000800100000000000000000000
+      000000000000000000000000FFFFFF0000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00000000000000000000000000000000FFFFC001FFFFFFFFE001C001FFFFFFFF
+      C001C001FFFFFFFFC001C001FFFFFFFF8001C001E01FFCFF0001C001E79FF87F
+      0001C001F7BFFB7F0000C001F33FF33F8001C001FB7FF7BF8001C001F87FE79F
+      8001C001FCFFE01F8003C001FFFFFFFFC01FC001FFFFFFFFE1BFC003FFFFFFFF
+      FFFFC007FFFFFFFFFFFFC00FFFFFFFFF}
   end
 end
index 19fae85..ba706f0 100644 (file)
--- a/Round.pas
+++ b/Round.pas
@@ -27,7 +27,7 @@ type
     Button1: TButton;
     RoundButton: TButton;
     StatusBar1: TStatusBar;
-    RoundListView: TListView;
+       RoundListView: TListView;
                procedure RoundButtonClick(Sender: TObject);
                procedure FormCreate(Sender: TObject);
                procedure RoundListViewChange(Sender: TObject; Item: TListItem;
@@ -36,8 +36,14 @@ type
                procedure AllCancelButtonClick(Sender: TObject);
                procedure RoundNameComboBoxChange(Sender: TObject);
                procedure RoundDeleteButtonClick(Sender: TObject);
+    procedure RoundListViewColumnClick(Sender: TObject;
+      Column: TListColumn);
+    procedure RoundListViewCompare(Sender: TObject; Item1,
+      Item2: TListItem; Data: Integer; var Compare: Integer);
        private
                { Private \90é\8c¾ }
+               FColumnToSort: Integer;
+               FSortOrder:     Boolean;
                function GetRoundCount: Integer;
                procedure SetRoundItem(RoundName: string);
                function CompareTime(Time1: TDateTime; Time2: TDateTime; MarginMin: Integer): Boolean;
@@ -51,7 +57,7 @@ type
 implementation
 
 uses
-       Giko, BoardGroup, RoundData;
+       Giko, BoardGroup, RoundData, Math;
 
 {$R *.DFM}
 
@@ -161,6 +167,7 @@ procedure TRoundDialog.FormCreate(Sender: TObject);
 var
        i: Integer;
 begin
+    FColumnToSort := -1;
        RoundNameComboBox.Items.Add('\81i\82·\82×\82Ä\81j');
        for i := 0 to RoundList.RoundNameList.Count - 1 do
                RoundNameComboBox.Items.Add(RoundList.RoundNameList[i]);
@@ -306,4 +313,53 @@ begin
        end;
 end;
 
+procedure TRoundDialog.RoundListViewColumnClick(Sender: TObject;
+  Column: TListColumn);
+begin
+       if FColumnToSort > -1 then
+               (Sender as TCustomListView).Column[FColumnToSort].ImageIndex := -1;
+
+       if FColumnToSort = Column.Index then
+               FSortOrder := not FSortOrder
+       else
+               FSortOrder := false;
+
+       if FSortOrder then
+               Column.ImageIndex := 3
+       else
+               Column.ImageIndex := 2;
+
+       FColumnToSort := Column.Index;
+       (Sender as TCustomListView).AlphaSort;
+end;
+
+procedure TRoundDialog.RoundListViewCompare(Sender: TObject; Item1,
+  Item2: TListItem; Data: Integer; var Compare: Integer);
+var
+  ix: Integer;
+begin
+       if FColumnToSort = 0 then begin
+               if not FSortOrder then begin
+                       Compare := CompareText(Item1.Caption,Item2.Caption);
+                       if Compare = 0 then
+                               Compare := CompareValue(Item1.ImageIndex, item2.ImageIndex);
+               end else begin
+                       Compare := -CompareText(Item1.Caption,Item2.Caption);
+                       if Compare = 0 then
+                               Compare := -CompareValue(Item1.ImageIndex,item2.ImageIndex);
+               end;
+       end else begin
+               ix := FColumnToSort - 1;
+               if not FSortOrder then begin
+                       Compare := CompareText(Item1.SubItems[ix],Item2.SubItems[ix]);
+                       if Compare = 0 then
+                               Compare := CompareValue(Item1.ImageIndex, item2.ImageIndex);
+               end else begin
+                       Compare := -CompareText(Item1.SubItems[ix],Item2.SubItems[ix]);
+                       if Compare = 0 then
+                               Compare := -CompareValue(Item1.ImageIndex, item2.ImageIndex);
+               end;
+       end;
+end;
+
 end.