5 Windows, Messages, SysUtils, Classes, Controls, Forms,
9 function CategorySortProc(Item1, Item2: Pointer): integer;
10 function BoardSortProc(List: TStringList; Item1, Item2: Integer): integer;
11 function ThreadItemSortProc(List: TStringList; Item1, Item2: Integer): integer;
12 function CompareBool(Item1, Item2: Boolean): integer;
13 function CompareInt(Item1, Item2: Integer): Integer;
14 function CompareDate(Item1, Item2: TDateTime): Integer;
20 SortNonAcquiredCountFlag: Boolean;
24 function CategorySortProc(Item1, Item2: Pointer): integer;
26 CategoryItem1: TCategory;
27 CategoryItem2: TCategory;
29 CategoryItem1 := TCategory(Item1);
30 CategoryItem2 := TCategory(Item2);
32 case TGikoBBSColumnID( SortIndex ) of
35 Result := CompareInt(CategoryItem1.No, CategoryItem2.No)
37 Result := AnsiCompareText(CategoryItem1.Title, CategoryItem2.Title);
39 Result := CompareInt(CategoryItem1.No, CategoryItem2.No)
43 Result := Result * -1;
46 function BoardSortProc(List: TStringList; Item1, Item2: Integer): integer;
51 BoardItem1 := TBoard(List.Objects[Item1]);
52 BoardItem2 := TBoard(List.Objects[Item2]);
53 case TGikoCategoryColumnID( SortIndex ) of
56 Result := CompareInt(BoardItem1.No, BoardItem2.No)
58 Result := AnsiCompareText(BoardItem1.Title, BoardItem2.Title);
61 Result := CompareInt(BoardItem1.Count, BoardItem2.Count);
64 Result := CompareDate(BoardItem1.RoundDate, BoardItem2.RoundDate);
66 Result := CompareInt(BoardItem1.No, BoardItem2.No)
70 Result := Result * -1;
73 function ThreadItemSortProc(List: TStringList; Item1, Item2: Integer): integer;
75 ThreadItem1: TThreadItem;
76 ThreadItem2: TThreadItem;
78 ThreadItem1 := TThreadItem(List.Objects[ Item1 ]);
79 ThreadItem2 := TThreadItem(List.Objects[ Item2 ]);
80 case TGikoBoardColumnID( SortIndex ) of
84 Result := CompareInt(ThreadItem1.No, ThreadItem2.No)
86 Result := AnsiCompareText(ThreadItem1.Title, ThreadItem2.Title)
89 gbcAllCount: Result := CompareInt(ThreadItem1.AllResCount, ThreadItem2.AllResCount);
90 gbcLocalCount: Result := CompareInt(ThreadItem1.Count, ThreadItem2.Count);
93 if ThreadItem1.IsLogFile and ThreadItem2.IsLogFile then
94 Result := CompareInt(ThreadItem1.AllResCount - ThreadItem1.Count, ThreadItem2.AllResCount - ThreadItem2.Count)
95 else if ThreadItem1.IsLogFile then
97 else if ThreadItem2.IsLogFile then
103 gbcNewCount: Result := CompareInt(ThreadItem1.NewResCount, ThreadItem2.NewResCount);
104 gbcUnReadCount: Result := 0;
105 gbcRoundName: Result := AnsiCompareText(ThreadItem1.RoundName, ThreadItem2.RoundName);
106 gbcLastModified: Result := CompareDateTime(ThreadItem1.RoundDate, ThreadItem2.RoundDate);
107 gbcCreated: Result := CompareDateTime(ThreadItem1.CreateDate, ThreadItem2.CreateDate);
112 { if SortIndex = 0 then
114 Result := CompareInt(ThreadItem1.No, ThreadItem2.No)
116 Result := CompareText(ThreadItem1.Title, ThreadItem2.Title)
117 else if SortIndex = 1 then
118 Result := CompareInt(ThreadItem1.Count, ThreadItem2.Count)
119 else if SortIndex = 2 then
120 // Result := CompareInt(ThreadItem1.RoundNo, ThreadItem2.RoundNo)
121 Result := CompareText(ThreadItem1.RoundName, ThreadItem2.RoundName)
123 Result := CompareDate(ThreadItem1.LastModified, ThreadItem2.LastModified);
125 if not SortOrder then
126 Result := Result * -1;
128 //
\83\
\81[
\83g
\95]
\89¿
\82ª
\93¯
\82¶
\8fê
\8d\87\82Í
\81A
\91æ1
\83J
\83\89\83\80\82Ì
\8f¸
\8f\87\82É
\83\
\81[
\83g
129 if Result = 0 then begin
131 Result := CompareInt(ThreadItem1.No, ThreadItem2.No)
133 Result := AnsiCompareText(ThreadItem1.Title, ThreadItem2.Title)
137 function CompareBool(Item1, Item2: Boolean): Integer;
139 if (Item1 = True) and (Item2 = False) then
141 else if (Item2 = False) and (Item2 = True) then
147 function CompareInt(Item1, Item2: Integer): Integer;
149 if Item1 > Item2 then
151 else if Item1 < Item2 then
157 function CompareDate(Item1, Item2: TDateTime): Integer;
159 if Item1 > Item2 then
161 else if Item1 < Item2 then