6 Windows, Messages, SysUtils, Classes, Graphics, Controls,
7 BoardGroup, StdCtrls, ComCtrls;
10 TListViewUtils = class(TObject)
15 class procedure SetBoardTreeNode(inBBS : TBBS; treeView: TTreeView);
16 class function SetCategoryListItem(ABBS2ch: TBBS; ListView: TListView;
17 NumberVisible: Boolean; var vSortIndex: Integer; var vSortOrder: Boolean): Integer;
18 class procedure ListViewSort(Sender: TObject; ListView: TListView; Column: TListColumn;
19 NumberVisible: Boolean; var vSortOrder: Boolean; var vSortIndex: Integer);
20 class function ActiveListTrueColumn( column : TListColumn ) : TListColumn;
21 class function SetBoardListItem(Category: TCategory; ListView: TListView;
22 NumberVisible: Boolean; var vSortIndex: Integer; var vSortOrder: Boolean): Integer;
23 class function SetThreadListItem(Board: TBoard; ListView: TListView;
24 NumberVisible: Boolean; var vSortIndex: Integer; var vSortOrder: Boolean): Integer;
25 class procedure ListViewData(Sender: TObject; Item: TListItem);
33 GikoSystem, Sort, Setting, Giko, MojuUtils;
36 //
\83c
\83\8a\81[
\81E
\83\8a\83X
\83g
\83A
\83C
\83R
\83\93
37 ITEM_ICON_2CH1 = 0; //2ch
\83A
\83C
\83R
\83\93
38 ITEM_ICON_2CH2 = 1; //2ch
\83A
\83C
\83R
\83\93
39 ITEM_ICON_CATEGORY1 = 2; //
\83J
\83e
\83S
\83\8a\83A
\83C
\83R
\83\93
40 ITEM_ICON_CATEGORY2 = 3; //
\83J
\83e
\83S
\83\8a\83A
\83C
\83R
\83\93
41 ITEM_ICON_BOARD_NOSUBJECT = 3; //
\93Ç
\82Ý
\8d\9e\82Ü
\82ê
\82Ä
\82¢
\82È
\82¢
\94Â
\83A
\83C
\83R
\83\93
42 ITEM_ICON_BOARD1 = 4; //
\94Â
\83A
\83C
\83R
\83\93
43 ITEM_ICON_BOARD2 = 5; //
\94Â
\83A
\83C
\83R
\83\93
44 ITEM_ICON_THREADLOG1 = 6; //
\83X
\83\8c\83A
\83C
\83R
\83\93\81i
\83\8d\83O
\82 \82è
\81j
45 ITEM_ICON_THREADLOG2 = 7; //
\83X
\83\8c\83A
\83C
\83R
\83\93\81i
\83\8d\83O
\82 \82è
\81j
46 ITEM_ICON_THREAD1 = 8; //
\83X
\83\8c\83A
\83C
\83R
\83\93\81i
\83\8d\83O
\82È
\82µ
\81j
47 ITEM_ICON_THREAD2 = 9; //
\83X
\83\8c\83A
\83C
\83R
\83\93\81i
\83\8d\83O
\82È
\82µ
\81j
48 ITEM_ICON_THREADNEW1 = 10; //
\83X
\83\8c\83A
\83C
\83R
\83\93\81i
\90V
\92\85\81j
49 ITEM_ICON_THREADNEW2 = 11; //
\83X
\83\8c\83A
\83C
\83R
\83\93\81i
\90V
\92\85\81j
50 ITEM_ICON_SORT1 = 12; //
\83\
\81[
\83g
\83A
\83C
\83R
\83\93
51 ITEM_ICON_SORT2 = 13; //
\83\
\81[
\83g
\83A
\83C
\83R
\83\93
52 ITEM_ICON_BOARD_LOG = 17; //
\83X
\83\8c\83\8d\83O
\82 \82è
\94Â
\83A
\83C
\83R
\83\93
53 ITEM_ICON_BOARD_NEW = 18; //
\83X
\83\8c\90V
\92\85\94Â
\83A
\83C
\83R
\83\93
56 //
\83{
\81[
\83h
\83c
\83\8a\81[
\90Ý
\92è
57 class procedure TListViewUtils.SetBoardTreeNode(
64 CategoryNode: TTreeNode;
69 //
\94Â
\83\8a\83X
\83g
\82Ì
\90Ý
\92è
70 //FActiveBBS := inBBS;
71 TreeView.Items.BeginUpdate;
74 if not inBBS.IsBoardFileRead then
75 GikoSys.ReadBoardFile( inBBS );
77 //
\83L
\83\83\83r
\83l
\83b
\83g
\95\
\8e¦
\91O
\82É
\8dÄ
\83\
\81[
\83g
78 if ( GikoSys.Setting.BBSSortIndex <> 0 ) or ( GikoSys.Setting.BBSSortOrder <> true ) then begin
79 Sort.SortOrder := true;
81 Sort.SortNoFlag := true;
82 inBBS.Sort(CategorySortProc);
85 Root := TreeView.Items.Add( nil, inBBS.Title );
86 Root.ImageIndex := ITEM_ICON_2CH1;
87 Root.SelectedIndex := ITEM_ICON_2CH2;
89 for i := inBBS.Count - 1 downto 0 do begin
90 Category := TCategory(inBBS.Items[i]);
91 CategoryNode := TreeView.Items.AddChildFirst(Root, Category.Title);
92 CategoryNode.Data := Category;
93 CategoryNode.ImageIndex := ITEM_ICON_CATEGORY1;
94 CategoryNode.SelectedIndex := ITEM_ICON_CATEGORY2;
96 //
\83L
\83\83\83r
\83l
\83b
\83g
\95\
\8e¦
\91O
\82É
\8dÄ
\83\
\81[
\83g
97 if ( GikoSys.Setting.CategorySortIndex <> 0 ) or ( GikoSys.Setting.CategorySortOrder <> true ) then begin
98 Sort.SortOrder := true;
100 Sort.SortNoFlag := true;
101 Category.CustomSort(BoardSortProc);
104 for j := Category.Count - 1 downto 0 do begin
105 Board := TBoard(Category.Items[j]);
107 BoardNode := TreeView.Items.AddChildFirst(CategoryNode, Board.Title);
108 BoardNode.Data := Board;
109 //if (Board.LastGetTime = 0) or (Board.LastGetTime = ZERO_DATE) then begin
110 if not Board.IsLogFile then begin
111 BoardNode.ImageIndex := ITEM_ICON_BOARD_NOSUBJECT;
112 BoardNode.SelectedIndex := ITEM_ICON_BOARD_NOSUBJECT;
114 BoardNode.ImageIndex := ITEM_ICON_BOARD1;
115 BoardNode.SelectedIndex := ITEM_ICON_BOARD2;
116 for k := 0 to Board.Count - 1 do begin
117 if Board.Items[ k ].IsLogFile then begin
118 BoardNode.ImageIndex := ITEM_ICON_BOARD_LOG;
119 BoardNode.SelectedIndex := ITEM_ICON_BOARD_LOG;
128 CategoryNode.Expanded := Category.NodeExpand;
132 TreeView.Items.EndUpdate;
136 //ListView
\82É
\83J
\83e
\83S
\83\8a\82ð
\90Ý
\92è
\82·
\82é
137 class function TListViewUtils.SetCategoryListItem(
140 NumberVisible: Boolean;
141 var vSortIndex: Integer;
142 var vSortOrder: Boolean
145 TitleColumn : TListColumn;
146 ListColumn : TListColumn;
147 i, id, idx : Integer;
149 ListView.Items.BeginUpdate;
151 ListView.Columns.Clear;
152 TitleColumn := ListView.Columns.Add;
153 TitleColumn.Caption := GikoBBSColumnCaption[ Ord( gbbscTitle ) ];
154 TitleColumn.Width := GikoSys.Setting.BBSColumnWidth[ Ord( gbbscTitle ) ];
156 for i := 0 to GikoSys.Setting.BBSColumnOrder.Count - 1 do begin
157 if GikoSys.Setting.BBSColumnOrder[ i ] = gbbscTitle then begin
158 TitleColumn.Tag := i;
161 id := Ord( GikoSys.Setting.BBSColumnOrder[ i ] );
162 if (Integer( Low( TGikoBBSColumnID ) ) <= id) and
163 (id <= Integer( High( TGikoBBSColumnID ) )) then begin
164 ListColumn := ListView.Columns.Add;
165 // ListColumn.Tag := id;
167 ListColumn.Caption := GikoBBSColumnCaption[ id ];
168 ListColumn.Width := GikoSys.Setting.BBSColumnWidth[ id ];
172 TitleColumn.Index := idx;
174 ListView.Items.Count := 0;
175 ListView.Items.Clear;
176 ListView.Items.Count := ABBS2ch.Count;
178 GikoForm.ListNameLabel.Caption := ABBS2ch.Title;
179 GikoForm.FolderImage.Picture := nil;
180 GikoForm.ItemIcon16.GetBitmap(1, GikoForm.FolderImage.Picture.Bitmap);
182 vSortIndex := GikoSys.Setting.BBSSortIndex;
183 vSortOrder := GikoSys.Setting.BBSSortOrder;
184 for i := ListView.Columns.Count - 1 downto 0 do begin
185 idx := ListView.Column[ i ].Tag;
186 if vSortIndex = Ord( GikoSys.Setting.BBSColumnOrder[ idx ] ) then
187 ListViewSort( nil, ListView, ListView.Column[ i ], NumberVisible, vSortOrder, vSortIndex );
190 Result := ABBS2ch.Count;
192 ListView.Items.EndUpdate;
196 class procedure TListViewUtils.ListViewSort(
200 NumberVisible: Boolean;
201 var vSortOrder: Boolean;
202 var vSortIndex: Integer
205 i, id, idx : Integer;
208 wkCategory: TCategory;
211 idx := ActiveListTrueColumn( Column ).Tag;
213 for i := 0 to ListView.Columns.Count - 1 do begin
214 ListView.Column[i].ImageIndex := -1;
218 ListView.Column[ idx ].ImageIndex := ITEM_ICON_SORT1
220 ListView.Column[ idx ].ImageIndex := ITEM_ICON_SORT2;
222 Sort.SortNoFlag := NumberVisible;
224 //if TObject(TreeView.Selected.Data) is TBBS then begin
225 if TObject( GikoForm.ActiveList ) is TBBS then begin
226 //wkBBS := TBBS(TreeView.Selected.Data);
227 wkBBS := TBBS( GikoForm.ActiveList );
228 orderList := GikoSys.Setting.BBSColumnOrder;
229 id := Integer( orderList[ idx ] );
230 Sort.SortOrder := vSortOrder;
231 Sort.SortIndex := id;
232 GikoSys.Setting.BBSSortIndex := id;
233 GikoSys.Setting.BBSSortOrder := vSortOrder;
234 wkBBS.Sort(Sort.CategorySortProc);
235 //end else if TObject(TreeView.Selected.Data) is TCategory then begin
236 end else if TObject( GikoForm.ActiveList ) is TCategory then begin
237 //wkCategory := TCategory(TreeView.Selected.Data);
238 wkCategory := TCategory( GikoForm.ActiveList );
239 orderList := GikoSys.Setting.CategoryColumnOrder;
240 id := Integer( orderList[ idx ] );
241 Sort.SortOrder := vSortOrder;
242 Sort.SortIndex := id;
243 GikoSys.Setting.CategorySortIndex := id;
244 GikoSys.Setting.CategorySortOrder := vSortOrder;
245 wkCategory.CustomSort(BoardSortProc);
246 //end else if TObject(TreeView.Selected.Data) is TBoard then begin
247 end else if TObject( GikoForm.ActiveList ) is TBoard then begin
248 //wkBoard := TBoard(TreeView.Selected.Data);
249 wkBoard := TBoard( GikoForm.ActiveList );
250 orderList := GikoSys.Setting.BoardColumnOrder;
251 id := Integer( orderList[ idx ] );
252 Sort.SortOrder := vSortOrder;
253 Sort.SortIndex := id;
254 GikoSys.Setting.BoardSortIndex := id;
255 GikoSys.Setting.BoardSortOrder := vSortOrder;
256 wkBoard.CustomSort(ThreadItemSortProc);
266 \brief ListView
\82Ì Column
\82ð
\90^
\82Ì
\83J
\83\89\83\80\82É
\95Ï
\8a·
268 Delphi 6 Personal
\82Å
\82Ì ListView
\82Å
\82Í ListViewColumnClick
\83C
\83x
\83\93\83g
\82Å
269 \90³
\82µ
\82¢
\83J
\83\89\83\80\82ª
\93n
\82³
\82ê
\82È
\82¢
\82½
\82ß
\81A
\90³
\82µ
\82¢
\83J
\83\89\83\80\82É
\95Ï
\8a·
\82µ
\82Ü
\82·
\81B
271 class function TListViewUtils.ActiveListTrueColumn( column : TListColumn ) : TListColumn;
279 //
\90³
\82µ
\82
\95Ï
\8a·
\82·
\82é
\95û
\96@
\82ª
\95ª
\82©
\82ç
\82È
\82¢
\82Ì
\82Å
\95Û
\97¯
285 if TObject( FActiveList ) is TBBS then
286 orderList := GikoSys.Setting.BBSColumnOrder
287 else if TObject( FActiveList ) is TCategory then
288 orderList := GikoSys.Setting.CategoryColumnOrder
289 else if TObject( FActiveList ) is TBoard then
290 orderList := GikoSys.Setting.BoardColumnOrder
296 for i := 0 to ListView.Columns.Count - 1 do begin
297 if Integer( orderList[ ListView.Column[ i ].Tag ] ) = 0 then begin
299 Result := ListView.Column[ i ]
300 else if idx <= i then
301 Result := ListView.Column[ idx - 1 ];
308 //ListView
\82ÉBoardItem
\82ð
\90Ý
\92è
\82·
\82é
309 class function TListViewUtils.SetBoardListItem(
312 NumberVisible: Boolean;
313 var vSortIndex: Integer;
314 var vSortOrder: Boolean
317 TitleColumn : TListColumn;
318 ListColumn : TListColumn;
319 i, id, idx : Integer;
321 ListView.Items.BeginUpdate;
323 ListView.Columns.Clear;
324 TitleColumn := ListView.Columns.Add;
325 TitleColumn.Caption := GikoCategoryColumnCaption[ Ord( gccTitle ) ];
326 TitleColumn.Width := GikoSys.Setting.CategoryColumnWidth[ Ord( gccTitle ) ];
328 for i := 0 to GikoSys.Setting.CategoryColumnOrder.Count - 1 do begin
329 if GikoSys.Setting.CategoryColumnOrder[ i ] = gccTitle then begin
330 TitleColumn.Tag := i;
333 id := Ord( GikoSys.Setting.CategoryColumnOrder[ i ] );
334 if (Integer( Low( TGikoCategoryColumnID ) ) <= id) and
335 (id <= Integer( High( TGikoCategoryColumnID ) )) then begin
336 ListColumn := ListView.Columns.Add;
337 // ListColumn.Tag := id;
339 ListColumn.Caption := GikoCategoryColumnCaption[ id ];
340 ListColumn.Width := GikoSys.Setting.CategoryColumnWidth[ id ];
344 TitleColumn.Index := idx;
346 ListView.Items.Count := 0;
347 ListView.Items.Clear;
348 ListView.Items.Count := Category.Count;
350 for i := Category.Count - 1 downto 0 do begin
351 if( Category.Items[i].ParentCategory <> Category ) then begin
352 Category.Items[i].ParentCategory := Category;
353 Category.Items[i].No := i + 1;
356 // UpFolderAction.Enabled := True;
357 // AllItemAction.Enabled := False;
358 // LogItemAction.Enabled := False;
359 // NewItemAction.Enabled := False;
360 // SelectItemAction.Enabled := False;
361 // ListDownloadToolButton.Enabled := False;
362 // BoardReservToolButton.Enabled := False;
363 // ListThreadDownloadToolButton.Enabled := False;
365 GikoForm.ListNameLabel.Caption := Category.Title;
366 GikoForm.FolderImage.Picture := nil;
367 GikoForm.ItemIcon16.GetBitmap(3, GikoForm.FolderImage.Picture.Bitmap);
369 vSortIndex := GikoSys.Setting.CategorySortIndex;
370 vSortOrder := GikoSys.Setting.CategorySortOrder;
371 for i := ListView.Columns.Count - 1 downto 0 do begin
372 idx := ListView.Column[ i ].Tag;
373 if vSortIndex = Ord( GikoSys.Setting.CategoryColumnOrder[ idx ] ) then
374 ListViewSort( nil, ListView, ListView.Column[ i ], NumberVisible, vSortOrder, vSortIndex );
377 Result := Category.Count;
379 ListView.Items.EndUpdate;
382 //ListView
\82ÉThreadItem
\82ð
\90Ý
\92è
\82·
\82é
383 class function TListViewUtils.SetThreadListItem(
386 NumberVisible: Boolean;
387 var vSortIndex: Integer;
388 var vSortOrder: Boolean
391 TitleColumn : TListColumn;
392 ListColumn : TListColumn;
393 i, id, idx : Integer;
395 ListView.Items.BeginUpdate;
397 //Screen.Cursor := crHourGlass;
400 //
\83`
\83\89\82Â
\82«
\96h
\8e~
\82Ì
\82½
\82ß
\81A
\95Ï
\8dX
\82³
\82ê
\82Ä
\82¢
\82é
\8fê
\8d\87\82Ì
\82Ý
401 //
\81¦
\96¼
\8fÌ
\82Í
\88á
\82¤
\82ª
\83J
\83\89\83\80\90\94\82ª
\93¯
\82¶
\81A
\82Æ
\82¢
\82Á
\82½
\8fê
\8d\87\82É
\91Î
\8f\88\82Å
\82«
\82È
\82¢
\82Ì
\82Å
\92\8d\88Ó
402 if ListView.Columns.Count <> GikoSys.Setting.BoardColumnOrder.Count then
405 ListView.Columns.Clear;
406 TitleColumn := ListView.Columns.Add;
407 TitleColumn.Caption := GikoBoardColumnCaption[ Ord( gbcTitle ) ];
408 TitleColumn.Width := GikoSys.Setting.BoardColumnWidth[ Ord( gbcTitle ) ];
410 for i := 0 to GikoSys.Setting.BoardColumnOrder.Count - 1 do begin
411 if GikoSys.Setting.BoardColumnOrder[ i ] = gbcTitle then begin
412 TitleColumn.Tag := i;
415 id := Ord( GikoSys.Setting.BoardColumnOrder[ i ] );
416 if (Integer( Low( TGikoBoardColumnID ) ) <= id) and
417 (id <= Integer( High( TGikoBoardColumnID ) )) then begin
418 ListColumn := ListView.Columns.Add;
419 ListColumn.Caption := GikoBoardColumnCaption[ id ];
420 // ListColumn.Tag := id;
422 ListColumn.Width := GikoSys.Setting.BoardColumnWidth[ id ];
423 ListColumn.Alignment := GikoBoardColumnAlignment[ id ];
427 TitleColumn.Index := idx;
430 ListView.Items.Count := 0;
431 ListView.Items.Clear;
433 {case GikoForm.ViewType of
434 gvtAll: ListView.Items.Count := Board.Count;
435 gvtLog: ListView.Items.Count := Board.GetLogThreadCount;
436 gvtNew: ListView.Items.Count := Board.GetNewThreadCount;
437 gvtUser: ListView.Items.Count := Board.GetUserThreadCount;
440 case GikoForm.ViewType of
441 gvtAll: ListView.Items.Count := Board.Count;
444 Board.LogThreadCount := Board.GetLogThreadCount;
445 ListView.Items.Count := Board.LogThreadCount;
449 Board.NewThreadCount := Board.GetNewThreadCount;
450 ListView.Items.Count := Board.NewThreadCount;
454 Board.UserThreadCount:= Board.GetUserThreadCount;
455 ListView.Items.Count := Board.UserThreadCount;
459 GikoForm.ListNameLabel.Caption := Board.Title;
460 GikoForm.FolderImage.Picture := nil;
461 GikoForm.ItemIcon16.GetBitmap(5, GikoForm.FolderImage.Picture.Bitmap);
463 vSortIndex := GikoSys.Setting.BoardSortIndex;
464 vSortOrder := GikoSys.Setting.BoardSortOrder;
465 for i := ListView.Columns.Count - 1 downto 0 do begin
466 idx := ListView.Column[ i ].Tag;
467 if vSortIndex = Ord( GikoSys.Setting.BoardColumnOrder[ idx ] ) then
468 ListViewSort( nil, ListView, ListView.Column[ i ], NumberVisible, vSortOrder, vSortIndex );
471 Result := Board.Count;
473 ListView.Items.EndUpdate;
477 class procedure TListViewUtils.ListViewData(Sender: TObject; Item: TListItem);
480 // DateTime: TDateTime;
485 ThreadItem: TThreadItem;
487 ActivListObj : TObject;
489 ListView : TListView;
491 if (Sender <> nil) and (Sender is TListView) then begin
492 ListView := TListView(Sender)
497 ActivListObj := GikoForm.ActiveList;
498 if ActivListObj is TBBS then begin
499 //=====
\83J
\83e
\83S
\83\8a\83\8a\83X
\83g =====
500 BBS := TBBS(ActivListObj);
502 GikoForm.ListView.StateImages := nil;
504 if (BBS = nil) or (BBS.Count <= 0) or (Item = nil)
505 or (Item.Index >= BBS.Count) or (ListView.Items.Count = 0)
506 or (not (BBS.Items[Item.index] is TCategory)) then Exit;
507 //if BBS.Count <= 0 then Exit;
508 //if Item = nil then Exit;
509 //if Item.Index >= BBS.Count then Exit;
510 //if ListView.Items.Count = 0 then Exit;
512 //if not (BBS.Items[Item.index] is TCategory) then Exit;
513 Category := TCategory(BBS.Items[Item.index]);
515 if Category = nil then Exit;
517 if GikoForm.ListNumberVisibleAction.Checked then
518 Item.Caption := IntToStr(Category.No) + ': ' + Category.Title
520 Item.Caption := Category.Title;
522 Item.ImageIndex := ITEM_ICON_CATEGORY1;
523 Item.Data := Category;
525 end else if ActivListObj is TCategory then begin
527 //=====
\94Â
\83\8a\83X
\83g =====
528 Category := TCategory(ActivListObj);
530 ListView.StateImages := nil;
532 if (Category = nil) or (Category.Count <= 0) or (Item = nil)
533 or (Item.Index >= Category.Count) or (ListView.Items.Count = 0)
534 or (not (Category.Items[Item.Index] is TBoard)) then Exit;
535 //if Category.Count <= 0 then Exit;
536 //if Item = nil then Exit;
537 //if Item.Index >= Category.Count then Exit;
538 //if ListView.Items.Count = 0 then Exit;
540 //if not (Category.Items[Item.Index] is TBoard) then Exit;
541 Board := TBoard(Category.Items[Item.Index]);
543 if Board = nil then Exit;
545 if GikoForm.ListNumberVisibleAction.Checked then
546 Item.Caption := IntToStr(Board.No) + ': ' + Board.Title
547 //Item.Caption := IntToStr(Item.Index + 1) + ': ' + Board.Title
549 Item.Caption := Board.Title;
551 if Item.SubItems.Count <> ListView.Columns.Count then begin
553 Item.SubItems.Capacity := GikoSys.Setting.CategoryColumnOrder.Count;
554 for i := GikoSys.Setting.CategoryColumnOrder.Count - 1 downto 1 do
555 Item.SubItems.Add('');
558 Item.ImageIndex := ITEM_ICON_BOARD1;
560 for i := 0 to ListView.Columns.Count - 1 do begin
561 if GikoSys.Setting.CategoryColumnOrder.Count <= i then
563 // case TGikoCategoryColumnID( ListView.Column[ i ].Tag ) of
564 case GikoSys.Setting.CategoryColumnOrder[ i ] of
566 // Item.Caption
\82Í SubItems
\82É
\8aÜ
\82Ü
\82ê
\96³
\82¢
\82Ì
\82Å
571 Item.SubItems[ idx ] := Board.RoundName // '
\97\
\96ñ'
573 Item.SubItems[ idx ] := '';
576 if Board.RoundDate = ZERO_DATE then begin
577 Item.SubItems[ idx ] := '';
579 Item.SubItems[ idx ] := FormatDateTime('yyyy/mm/dd hh:mm:ss', Board.RoundDate);
586 end else if ActivListObj is TBoard then begin
588 //=====
\83X
\83\8c\83\8a\83X
\83g =====
589 Board := TBoard(ActivListObj);
591 if GikoSys.Setting.ListIconVisible then
592 ListView.StateImages := GikoForm.StateIconImageList
594 ListView.StateImages := nil;
597 case GikoForm.ViewType of
598 gvtAll: BoardCnt := Board.Count;
599 gvtLog: BoardCnt := Board.LogThreadCount;
600 gvtNew: BoardCnt := Board.NewThreadCount;
601 gvtUser: BoardCnt := Board.UserThreadCount;
606 case GikoForm.ViewType of
607 gvtAll: BoardCnt := Board.Count;
608 gvtLog: BoardCnt := Board.GetLogThreadCount;
609 gvtNew: BoardCnt := Board.GetNewThreadCount;
610 gvtUser: BoardCnt := Board.GetUserThreadCount;
615 // if Board = nil then Exit;
616 if (BoardCnt <= 0) or (Item = nil) or (Item.Index > BoardCnt)
617 or (ListView.Items.Count = 0) or (not (Board.Items[Item.Index] is TThreadItem)) then Exit;
619 //
\89ü
\91P
\82·
\82×
\82«
\83u
\83\8d\83b
\83N/////////////////////////////////////////////////////
621 case GikoForm.ViewType of
622 gvtAll: if Item.Index >= Board.Count then Exit else
623 ThreadItem := TThreadItem(Board.Items[Item.Index]);
624 gvtLog: ThreadItem := Board.GetLogThread(Item.Index);
625 gvtNew: ThreadItem := Board.GetNewThread(Item.Index);
626 gvtUser: ThreadItem := Board.GetUserThread(Item.Index);
628 //////////////////////////////////////////////////////////////////////////
630 if ThreadItem = nil then Exit;
632 RepStr := CustomStringReplace(ThreadItem.Title, '<', '<' );
633 RepStr := CustomStringReplace(RepStr, '>', '>' );
634 RepStr := CustomStringReplace(RepStr, '"', '"' );
635 RepStr := CustomStringReplace(RepStr, '&', '&' );
636 //RepStr := StringReplace(RepStr, '
\81\97\81M', ',', [rfReplaceAll]);
637 if Item.SubItems.Count <> ListView.Columns.Count then begin
639 Item.SubItems.Capacity := GikoSys.Setting.BoardColumnOrder.Count;
640 for i := GikoSys.Setting.BoardColumnOrder.Count - 1 downto 1 do
641 Item.SubItems.Add('');
644 if GikoForm.ListNumberVisibleAction.Checked then
645 Item.Caption := IntToStr(ThreadItem.No) + ': ' + RepStr
647 Item.Caption := RepStr;
649 case ThreadItem.AgeSage of
650 gasNone: Item.StateIndex := -1;
651 gasNew: Item.StateIndex := 0;
652 gasAge: Item.StateIndex := 1;
653 gasSage: Item.StateIndex := 2;
656 if ThreadItem.IsLogFile then begin
658 for i := 0 to ListView.Columns.Count - 1 do begin
659 if GikoSys.Setting.BoardColumnOrder.Count <= i then
661 // case TGikoBoardColumnID( ListView.Column[ i ].Tag ) of
662 case GikoSys.Setting.BoardColumnOrder[ i ] of
664 // Item.Caption
\82Í SubItems
\82É
\8aÜ
\82Ü
\82ê
\96³
\82¢
\82Ì
\82Å
668 Item.SubItems[ idx ] := IntToStr(ThreadItem.AllResCount);
671 Item.SubItems[ idx ] := IntToStr(ThreadItem.Count);
674 Item.SubItems[ idx ] := IntToStr(ThreadItem.AllResCount - ThreadItem.Count);
677 if ThreadItem.NewResCount = 0 then
678 Item.SubItems[ idx ] := ''
680 Item.SubItems[ idx ] := IntToStr(ThreadItem.NewResCount);
683 Item.SubItems[ idx ] := '';
686 if ThreadItem.Round then
687 Item.SubItems[ idx ] := ThreadItem.RoundName
689 Item.SubItems[ idx ] := '';
691 gbcRoundDate://gbcLastModified:
692 if (ThreadItem.RoundDate = ZERO_DATE) then begin
693 Item.SubItems[ idx ] := '';
695 Item.SubItems[ idx ] := FormatDateTime('yyyy/mm/dd hh:mm:ss', ThreadItem.RoundDate);
698 if ThreadItem.CreateDate = ZERO_DATE then begin
699 Item.SubItems[ idx ] := '';
701 Item.SubItems[ idx ] := FormatDateTime('yyyy/mm/dd hh:mm:ss', ThreadItem.CreateDate);
704 if (ThreadItem.LastModified = ZERO_DATE) then begin
705 Item.SubItems[ idx ] := '';
707 Item.SubItems[ idx ] := FormatDateTime('yyyy/mm/dd hh:mm:ss', ThreadItem.LastModified);
714 if ThreadItem.NewArrival then
715 Item.ImageIndex := ITEM_ICON_THREADNEW1
717 Item.ImageIndex := ITEM_ICON_THREADLOG1;
722 for i := 0 to GikoSys.Setting.BoardColumnOrder.Count - 1 do begin
723 // case TGikoBoardColumnID( ListView.Column[ i ].Tag ) of
724 case GikoSys.Setting.BoardColumnOrder[ i ] of
726 // Item.Caption
\82Í SubItems
\82É
\8aÜ
\82Ü
\82ê
\96³
\82¢
\82Ì
\82Å
730 Item.SubItems[ idx ] := IntToStr(ThreadItem.AllResCount);
732 gbcRoundDate://gbcLastModified:
733 Item.SubItems[ idx ] := '';
736 if ThreadItem.CreateDate = ZERO_DATE then begin
737 Item.SubItems[ idx ] := '';
739 Item.SubItems[ idx ] := FormatDateTime('yyyy/mm/dd hh:mm:ss', ThreadItem.CreateDate);
742 Item.SubItems[ idx ] := '';
745 Item.SubItems[ idx ] := '';
749 if ThreadItem.NewArrival then
750 Item.ImageIndex := ITEM_ICON_THREADNEW1
752 Item.ImageIndex := ITEM_ICON_THREAD1;
755 Item.Data := ThreadItem;