6 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
7 Dialogs, StdCtrls, ExtCtrls, ComCtrls,
8 BoardGroup, GikoSystem;
11 TSearchDialog = class(TForm)
12 BoardListView: TListView;
15 CancelBotton: TButton;
18 CategoryListView: TListView;
19 AllReleaseButton: TButton;
20 AllSelectButton: TButton;
26 procedure FormCreate(Sender: TObject);
27 procedure CategoryListViewSelectItem(Sender: TObject; Item: TListItem;
29 procedure BoardListViewChange(Sender: TObject; Item: TListItem;
31 procedure AllSelectButtonClick(Sender: TObject);
32 procedure AllReleaseButtonClick(Sender: TObject);
33 procedure OkBottonClick(Sender: TObject);
37 procedure SetCategoryList;
38 procedure SetBoardList(Item: TListItem);
39 procedure CheckItem(Item: TObject);
42 // constructor Create(AOwner: TComponent); overload; override;
43 constructor Create(AOwner: TComponent; ChkItem: TObject); virtual; //overload;
47 SearchDialog: TSearchDialog;
53 {constructor TSearchDialog.Create(AOwner: TComponent);
58 constructor TSearchDialog.Create(AOwner: TComponent; ChkItem: TObject);
60 inherited Create(AOwner);
64 procedure TSearchDialog.FormCreate(Sender: TObject);
67 if (FChkItem is TCategory) or (FChkItem is TBoard) then
71 procedure TSearchDialog.CategoryListViewSelectItem(Sender: TObject;
72 Item: TListItem; Selected: Boolean);
74 if not Selected then Exit;
78 procedure TSearchDialog.SetCategoryList;
83 Item := CategoryListView.Items.Add;
84 Item.Caption := '
\81i
\82·
\82×
\82Ä
\81j';
86 for i := 0 to BBS2ch.Count - 1 do begin
87 Item := CategoryListView.Items.Add;
88 Item.Caption := BBS2ch.Items[i].Title;
89 Item.Data := BBS2ch.Items[i];
90 for j := 0 to BBS2ch.Items[i].Count - 1 do
91 BBS2ch.Items[i].Items[j].BoolData := False;
95 procedure TSearchDialog.SetBoardList(Item: TListItem);
102 if Item.Data = nil then begin
103 for i := 0 to BBS2ch.Count - 1 do begin
104 Category := BBS2ch.Items[i];
105 for j := 0 to Category.Count - 1 do begin
106 NewItem := BoardListView.Items.Add;
107 NewItem.Caption := Category.Items[j].Title;
108 NewItem.Checked := Category.Items[j].BoolData;
109 NewItem.Data := Category.Items[j];
112 end else if TObject(Item.Data) is TCategory then begin
113 Category := TCategory(Item.Data);
114 for i := 0 to Category.Count - 1 do begin
115 NewItem := BoardListView.Items.Add;
116 NewItem.Caption := Category.Items[i].Title;
117 NewItem.Checked := Category.Items[i].BoolData;
118 NewItem.Data := Category.Items[i];
123 procedure TSearchDialog.CheckItem(Item: TObject);
129 if Item is TCategory then begin
130 Category := TCategory(Item);
131 for i := 0 to CategoryListView.Items.Count - 1 do begin
132 if TObject(CategoryListView.Items[i].Data) is TCategory then
133 if TCategory(CategoryListView.Items[i].Data) = Category then begin
134 CategoryListView.Items[i].Selected := True;
135 CategoryListView.Items[i].MakeVisible(False);
138 end else if Item is TBoard then begin
139 Board := TBoard(Item);
140 Category := Board.ParentCategory;
141 Board.BoolData := True;
142 for i := 0 to CategoryListView.Items.Count - 1 do begin
143 if TObject(CategoryListView.Items[i].Data) is TCategory then begin
144 if TCategory(CategoryListView.Items[i].Data) = Category then begin
145 CategoryListView.Items[i].Selected := True;
146 CategoryListView.Items[i].MakeVisible(False);
153 procedure TSearchDialog.BoardListViewChange(Sender: TObject;
154 Item: TListItem; Change: TItemChange);
158 if TObject(Item.Data) is TBoard then begin
159 Board := TBoard(Item.Data);
160 Board.BoolData := Item.Checked;
164 procedure TSearchDialog.AllSelectButtonClick(Sender: TObject);
169 for i := 0 to BoardListView.Items.Count - 1 do begin
170 if TObject(BoardListView.Items[i].Data) is TBoard then begin
171 //Board := TBoard(BoardListView.Items[i].Data);
172 BoardListView.Items[i].Checked := True;
177 procedure TSearchDialog.AllReleaseButtonClick(Sender: TObject);
182 for i := 0 to BoardListView.Items.Count - 1 do begin
183 if TObject(BoardListView.Items[i].Data) is TBoard then begin
184 //Board := TBoard(BoardListView.Items[i].Data);
185 BoardListView.Items[i].Checked := False;
190 procedure TSearchDialog.OkBottonClick(Sender: TObject);
194 ThreadItem: TThreadItem;
198 Screen.Cursor := crHourglass;
199 sl := TStringList.Create;
200 List := TList.Create;
203 for i := 0 to BBS2ch.Count - 1 do begin
204 for j := 0 to BBS2ch.Items[i].Count - 1 do begin
205 Board := TBoard(BBS2ch.Items[i]);
206 if not Board.IsThreadDatRead then
207 GikoSys.ReadSubjectFile(Board);
208 for k := 0 to Board.Count - 1 do begin
209 ThreadItem := Board.Items[k];
210 if FileExists(ThreadItem.FileName) then begin
211 sl.LoadFromFile(ThreadItem.FileName);
219 Screen.Cursor := crDefault;