6 Windows, Classes, Controls, Forms, StdCtrls, ComCtrls, Menus,
7 SysUtils, ImgList, ExtCtrls, GikoSystem, GikoUtil;
10 TRoundDialog = class(TForm)
11 RoundPopupMenu: TPopupMenu;
16 ItemIcon16: TImageList;
20 RoundNameComboBox: TComboBox;
23 AllSelectButton: TButton;
24 AllCancelButton: TButton;
25 RoundDeleteButton: TButton;
29 StatusBar1: TStatusBar;
30 RoundListView: TListView;
31 procedure RoundButtonClick(Sender: TObject);
32 procedure FormCreate(Sender: TObject);
33 procedure RoundListViewChange(Sender: TObject; Item: TListItem;
35 procedure AllSelectButtonClick(Sender: TObject);
36 procedure AllCancelButtonClick(Sender: TObject);
37 procedure RoundNameComboBoxChange(Sender: TObject);
38 procedure RoundDeleteButtonClick(Sender: TObject);
39 procedure RoundListViewColumnClick(Sender: TObject;
41 procedure RoundListViewCompare(Sender: TObject; Item1,
42 Item2: TListItem; Data: Integer; var Compare: Integer);
43 procedure RoundListViewColumnRightClick(Sender: TObject;
44 Column: TListColumn; Point: TPoint);
47 FColumnToSort: Integer;
49 function GetRoundCount: Integer;
50 procedure SetRoundItem(RoundName: string);
51 function CompareTime(Time1: TDateTime; Time2: TDateTime; MarginMin: Integer): Boolean;
60 Giko, BoardGroup, RoundData, Math, GikoDataModule;
64 procedure TRoundDialog.RoundButtonClick(Sender: TObject);
70 ThreadItem: TThreadItem;
71 RoundItem: TRoundItem;
73 {$IF Defined(FRCRND) }
74 GikoDM.LoginAction.Checked := true; //
\93®
\8dì
\8e\8e\8c±
\97p
\93r
77 {$IFNDEF LOOSENUP} //
\8f\84\89ñ
\90§
\8cÀ
\82ð
\8aÉ
\82ß
\82é
\82±
\82Æ
\82É
\82µ
\82Ä
\82½
\82ç{$ELSE}
\82Ì
\95û
\82ð
\8eg
\82¤
78 if not GikoDM.LoginAction.Checked then begin
79 if GikoSys.Setting.UserID <> '' then begin
80 msg := '
\83\8d\83O
\83C
\83\93\82µ
\82È
\82¢
\82Æ
\8f\84\89ñ
\82Í
\8fo
\97\88\82Ü
\82¹
\82ñ' + #13#10
81 + '
\8d¡
\83\8d\83O
\83C
\83\93\82µ
\82Ü
\82·
\82©';
82 if MsgBox(Handle, msg, '
\8am
\94F', MB_YESNO or MB_ICONQUESTION or MB_DEFBUTTON2) <> IDYES then begin
85 GikoDM.LoginAction.Execute;
87 if not GikoDM.LoginAction.Checked then begin
88 msg := '
\83\8d\83O
\83C
\83\93\82µ
\82È
\82¢
\82Æ
\8f\84\89ñ
\82Í
\8fo
\97\88\82Ü
\82¹
\82ñ';
89 MsgBox(Handle, msg, '
\83G
\83\89\81[', MB_OK or MB_ICONSTOP);
94 //
\8bK
\90§
\82ð
\8aÉ
\82ß
\82½
\82Ù
\82¤
\82Í
\81A
\83X
\83\8c\88ê
\97\97\82Ì
\82Ý
\8f\84\89ñ
\89Â
\94\
95 if not GikoDM.LoginAction.Checked then begin
96 if GikoSys.Setting.UserID <> '' then begin
97 msg := '
\83\8d\83O
\83C
\83\93\82µ
\82È
\82¢
\82Æ
\83X
\83\8c\83b
\83h
\82Ì
\8f\84\89ñ
\82Í
\8fo
\97\88\82Ü
\82¹
\82ñ' + #13#10
98 + '
\8d¡
\83\8d\83O
\83C
\83\93\82µ
\82Ü
\82·
\82©';
99 if MsgBox(Handle, msg, '
\8am
\94F', MB_YESNO or MB_ICONQUESTION or MB_DEFBUTTON2) <> IDYES then begin
102 GikoDM.LoginAction.Execute;
105 //
\81\9c\82È
\82µ
\8f\84\89ñ
\82Í15
\95ª
\88È
\8fã
\82Ì
\8aÔ
\8au
\82ð
\95K
\97v
\82Æ
\82·
\82é
106 if not GikoDM.LoginAction.Checked then begin
107 if CompareTime(GikoForm.LastRoundTime, Now, 30) then begin
108 msg := '
\88ê
\93x
\8f\84\89ñ
\82·
\82é
\82Æ
\82R
\82O
\95ª
\8aÔ
\8f\84\89ñ
\82Í
\8fo
\97\88\82Ü
\82¹
\82ñ';
109 MsgBox(Handle, msg, '
\83G
\83\89\81[', MB_OK or MB_ICONSTOP);
115 //
\88ê
\82Â
\82à
\8f\84\89ñ
\82É
\90Ý
\92è
\82µ
\82Ä
\82¢
\82È
\82©
\82Á
\82½
\82ç
\83G
\83\89\81[
\82É
\82·
\82é
116 cnt := GetRoundCount;
117 if cnt = 0 then begin
118 msg := '
\8f\84\89ñ
\82µ
\82½
\82¢
\8d\80\96Ú
\82É
\82P
\82Â
\88È
\8fã
\83`
\83F
\83b
\83N
\82ð
\93ü
\82ê
\82Ä
\82
\82¾
\82³
\82¢';
119 MsgBox(Handle, msg, '
\83G
\83\89\81[', MB_OK or MB_ICONSTOP);
124 //
\81\9c\82È
\82µ
\8f\84\89ñ
\82Í
\82P
\93x
\82É100
\8cÂ
\82Ü
\82Å
\82É
\82·
\82é
125 if not GikoDM.LoginAction.Checked then begin
126 if cnt > 100 then begin
127 msg := '
\82P
\82O
\82O
\8cÂ
\88È
\8fã
\82Í
\88ê
\93x
\82É
\8f\84\89ñ
\82Å
\82«
\82Ü
\82¹
\82ñ';
128 MsgBox(Handle, msg, '
\83G
\83\89\81[', MB_OK or MB_ICONSTOP);
134 //
\8f\84\89ñ
\82É
\93o
\98^
\82³
\82ê
\82Ä
\82¢
\82é
\94Â
\82Ì
\90\94\82¾
\82¯
\82Ü
\82í
\82·
135 for i := 0 to RoundList.Count[grtBoard] - 1 do begin
136 RoundItem := RoundList.Items[i, grtBoard];
137 //
\8f\84\89ñ
\82Ì
\83`
\83F
\83b
\83N
\82ª
\82Â
\82¢
\82Ä
\82¢
\82È
\82¯
\82ê
\82Î
\83X
\83\8b\81[
138 if not RoundItem.BoolData then Continue;
139 //
\8am
\8eÀ
\82É
\94Â
\82Ì
\82Í
\82¸
\82¾
\82¯
\82Ç
\83`
\83F
\83b
\83N
140 if RoundItem.RoundType = grtBoard then begin
141 Board := TBoard( RoundItem.Item );
142 //Board
\82Ì
\83I
\83u
\83W
\83F
\83N
\83g
\82ª
\91¶
\8dÝ
\82·
\82ê
\82Î
\81ADL
\82·
\82é
143 if Board <> nil then begin
144 if not Board.IsThreadDatRead then
145 GikoSys.ReadSubjectFile(Board);
146 GikoForm.DownloadList(Board);
150 for i := 0 to RoundList.Count[grtItem] - 1 do begin
151 RoundItem := RoundList.Items[i, grtItem];
152 //
\8f\84\89ñ
\82Ì
\83`
\83F
\83b
\83N
\82ª
\82Â
\82¢
\82Ä
\82¢
\82È
\82¯
\82ê
\82Î
\83X
\83\8b\81[
153 if not RoundItem.BoolData then Continue;
155 //
\81\9c\82È
\82µ
\8f\84\89ñ
\82Í
\83X
\83\8c\83b
\83h
\82Í
\82Å
\82«
\82È
\82¢
\82±
\82Æ
\82É
\82·
\82é
156 if not GikoDM.LoginAction.Checked then begin
157 msg := '
\83\8d\83O
\83C
\83\93\82µ
\82È
\82¢
\82Æ
\83X
\83\8c\83b
\83h
\82Ì
\8f\84\89ñ
\82Í
\82Å
\82«
\82Ü
\82¹
\82ñ
\81B';
158 MsgBox(Handle, msg, '
\83G
\83\89\81[', MB_OK or MB_ICONSTOP);
162 if RoundItem.RoundType = grtItem then begin
163 ThreadItem := TThreadItem( RoundItem.Item );
164 if ThreadItem <> nil then begin
165 GikoForm.DownloadContent(ThreadItem);
169 GikoForm.LastRoundTime := Now;
173 function TRoundDialog.GetRoundCount: Integer;
176 RoundItem: TRoundItem;
179 for i := 0 to RoundList.Count[grtBoard] - 1 do begin
180 RoundItem := RoundList.Items[i, grtBoard];
181 if RoundItem.BoolData then
182 Result := Result + 1;
184 for i := 0 to RoundList.Count[grtItem] - 1 do begin
185 RoundItem := RoundList.Items[i, grtItem];
186 if RoundItem.BoolData then
187 Result := Result + 1;
191 function TRoundDialog.CompareTime(Time1: TDateTime; Time2: TDateTime; MarginMin: Integer): Boolean;
193 AMin: Double = (1 / 24 / 60);
197 d := Time1 + (AMin * MarginMin);
201 procedure TRoundDialog.FormCreate(Sender: TObject);
204 CenterForm: TCustomForm;
206 CenterForm := TCustomForm(Owner);
207 if Assigned(CenterForm) then begin
208 Left := ((CenterForm.Width - Width) div 2) + CenterForm.Left;
209 Top := ((CenterForm.Height - Height) div 2) + CenterForm.Top;
211 Left := (Screen.Width - Width) div 2;
212 Top := (Screen.Height - Height) div 2;
215 //
\8c»
\8dÝ
\82Ì
\8f\84\89ñ
\83f
\81[
\83^
\82ð
\83t
\83@
\83C
\83\8b\83A
\83E
\83g
\82·
\82é
216 RoundList.SaveRoundFile;
217 RoundNameComboBox.Items.Add('
\81i
\82·
\82×
\82Ä
\81j');
218 for i := 0 to RoundList.RoundNameList.Count - 1 do
219 RoundNameComboBox.Items.Add(RoundList.RoundNameList[i]);
220 for i := 0 to RoundList.Count[grtBoard] - 1 do
221 RoundList.Items[i, grtBoard].BoolData := False;
222 for i := 0 to RoundList.Count[grtItem] - 1 do
223 RoundList.Items[i, grtItem].BoolData := False;
224 RoundNameComboBox.ItemIndex := 0;
228 procedure TRoundDialog.RoundListViewChange(Sender: TObject;
229 Item: TListItem; Change: TItemChange);
231 RoundItem: TRoundItem;
233 if TObject(Item.Data) is TRoundItem then begin
234 RoundItem := TRoundItem(Item.Data);
235 RoundItem.BoolData := Item.Checked;
239 procedure TRoundDialog.AllSelectButtonClick(Sender: TObject);
242 RoundItem: TRoundItem;
243 ListChangeEvent: TLVChangeEvent;
245 ListChangeEvent := RoundListView.OnChange;
246 RoundListView.OnChange := nil;
248 for i := 0 to RoundListView.Items.Count - 1 do begin
249 if TObject(RoundListView.Items[i].Data) is TRoundItem then begin
250 RoundItem := TRoundItem(RoundListView.Items[i].Data);
251 RoundItem.BoolData := True;
252 RoundListView.Items[i].Checked := True;
256 RoundListView.OnChange := ListChangeEvent;
260 procedure TRoundDialog.AllCancelButtonClick(Sender: TObject);
263 RoundItem: TRoundItem;
264 ListChangeEvent: TLVChangeEvent;
266 ListChangeEvent := RoundListView.OnChange;
267 RoundListView.OnChange := nil;
269 for i := 0 to RoundListView.Items.Count - 1 do begin
270 if TObject(RoundListView.Items[i].Data) is TRoundItem then begin
271 RoundItem := TRoundItem(RoundListView.Items[i].Data);
272 RoundItem.BoolData := False;
273 RoundListView.Items[i].Checked := False;
277 RoundListView.OnChange := ListChangeEvent;
281 procedure TRoundDialog.RoundNameComboBoxChange(Sender: TObject);
283 //
\83J
\83\89\83\80\82Ì
\83\
\81[
\83g
\8bL
\8d\86\83C
\83\81\81[
\83W
\82ð
\89ð
\8f\9c\82·
\82é
284 if FColumnToSort > -1 then
285 RoundListView.Column[FColumnToSort].ImageIndex := -1;
287 if RoundNameComboBox.ItemIndex = 0 then
290 SetRoundItem(RoundNameComboBox.Items[RoundNameComboBox.itemIndex]);
294 procedure TRoundDialog.SetRoundItem(RoundName: string);
298 ListChangeEvent: TLVChangeEvent;
300 ListChangeEvent := RoundListView.OnChange;
301 RoundListView.OnChange := nil;
304 for i := 0 to RoundList.Count[grtBoard] - 1 do begin
305 if (RoundList.Items[i, grtBoard].RoundName = RoundName) or (RoundName = '') then begin
306 ListItem := RoundListView.Items.Add;
307 ListItem.Data := RoundList.Items[i, grtBoard];
308 ListItem.Caption := RoundList.Items[i, grtBoard].RoundName;
309 ListItem.SubItems.Add(RoundList.Items[i, grtBoard].BoardTitle);
310 ListItem.SubItems.Add('-');
311 ListItem.Checked := RoundList.Items[i, grtBoard].BoolData;
312 ListItem.ImageIndex := 0;
315 for i := 0 to RoundList.Count[grtItem] - 1 do begin
316 if (RoundList.Items[i, grtItem].RoundName = RoundName) or (RoundName = '') then begin
317 ListItem := RoundListView.Items.Add;
318 ListItem.Data := RoundList.Items[i, grtItem];
319 ListItem.Caption := RoundList.Items[i, grtItem].RoundName;
320 ListItem.SubItems.Add(RoundList.Items[i, grtItem].BoardTitle);
321 ListItem.SubItems.Add(RoundList.Items[i, grtItem].ThreadTitle);
322 ListItem.Checked := RoundList.Items[i, grtItem].BoolData;
323 ListItem.ImageIndex := 1;
327 RoundListView.OnChange := ListChangeEvent;
331 procedure TRoundDialog.RoundDeleteButtonClick(Sender: TObject);
334 // ThreadItem: TThreadItem;
335 RoundItem: TRoundItem;
336 ListChangeEvent: TLVChangeEvent;
338 ListChangeEvent := RoundListView.OnChange;
339 RoundListView.OnChange := nil;
341 if RoundListView.Selected = nil then
343 if TObject(RoundListView.Selected.Data) is TRoundItem then begin
344 RoundItem := TRoundItem(RoundListView.Selected.Data);
345 if( RoundItem.Item is TBoard ) then begin
346 TBoard(RoundItem.Item).Round := false;
347 end else if( RoundItem.Item is TThreadItem ) then begin
348 TThreadItem(RoundItem.Item).Round := false;
350 //RoundList.Delete(RoundItem.URL,RoundItem.RoundType);
352 if RoundItem.RoundType = grtBoard then begin
353 //Board := TBoard( RoundItem.Item );
354 RoundList.Delete(RoundItem.URL,RoundItem.RoundType);
355 Board.Round := False;
356 Board.RoundName := '';
358 //ThreadItem := TThreadItem( RoundItem.Item );
359 RoundList.Delete(ThreadItem);
360 ThreadItem.Round := False;
361 ThreadItem.RoundName := '';
364 GikoForm.ListView.Refresh;
366 RoundListView.Selected.Delete;
368 RoundListView.OnChange := ListChangeEvent;
372 procedure TRoundDialog.RoundListViewColumnClick(Sender: TObject;
373 Column: TListColumn);
375 if (Sender is TCustomListView) then begin
377 if FColumnToSort > -1 then
378 (Sender as TCustomListView).Column[FColumnToSort].ImageIndex := -1;
380 if FColumnToSort = Column.Index then
381 FSortOrder := not FSortOrder
386 Column.ImageIndex := 3
388 Column.ImageIndex := 2;
390 FColumnToSort := Column.Index;
391 (Sender as TCustomListView).AlphaSort;
395 procedure TRoundDialog.RoundListViewCompare(Sender: TObject; Item1,
396 Item2: TListItem; Data: Integer; var Compare: Integer);
400 if FColumnToSort = 0 then begin
401 if not FSortOrder then begin
402 Compare := CompareText(Item1.Caption,Item2.Caption);
404 Compare := CompareValue(Item1.ImageIndex, item2.ImageIndex);
406 Compare := -CompareText(Item1.Caption,Item2.Caption);
408 Compare := -CompareValue(Item1.ImageIndex,item2.ImageIndex);
411 ix := FColumnToSort - 1;
412 if not FSortOrder then begin
413 Compare := CompareText(Item1.SubItems[ix],Item2.SubItems[ix]);
415 Compare := CompareValue(Item1.ImageIndex, item2.ImageIndex);
417 Compare := -CompareText(Item1.SubItems[ix],Item2.SubItems[ix]);
419 Compare := -CompareValue(Item1.ImageIndex, item2.ImageIndex);
424 *
\83J
\83\89\83\80\8fã
\82Å
\89E
\83N
\83\8a\83b
\83N
\82µ
\82½
\82ç
\83\
\81[
\83g
\82ð
\89ð
\8f\9c\82µ
\82Ä
\8f\89\8aú
\8fó
\91Ô
\82É
\96ß
\82·
426 procedure TRoundDialog.RoundListViewColumnRightClick(Sender: TObject;
427 Column: TListColumn; Point: TPoint);
429 RoundNameComboBox.OnChange(Sender);