Develop and Download Open Source Software

Browse CVS Repository

Contents of /gikonavigoeson/gikonavi/Round.pas

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.20.2.1 - (show annotations) (download) (as text)
Thu Nov 3 03:21:52 2005 UTC (18 years, 5 months ago) by h677
Branch: Bdraw
CVS Tags: v1_51_0_612, v1_51_0_611, v1_51_0_616, v1_51_0_614, v1_51_0_615, v1_51_0_613
Changes since 1.20: +17 -14 lines
File MIME type: text/x-pascal
巡回名を選択するとエラーが出る不具合の修正(1.21)分をマージ

1 unit Round;
2
3 interface
4
5 uses
6 Windows, Classes, Controls, Forms, StdCtrls, ComCtrls, Menus,
7 SysUtils, ImgList, ExtCtrls, GikoSystem, GikoUtil;
8
9 type
10 TRoundDialog = class(TForm)
11 RoundPopupMenu: TPopupMenu;
12 C1: TMenuItem;
13 P1: TMenuItem;
14 N1: TMenuItem;
15 D1: TMenuItem;
16 ItemIcon16: TImageList;
17 Panel1: TPanel;
18 Label1: TLabel;
19 Label2: TLabel;
20 RoundNameComboBox: TComboBox;
21 Panel2: TPanel;
22 Panel3: TPanel;
23 AllSelectButton: TButton;
24 AllCancelButton: TButton;
25 RoundDeleteButton: TButton;
26 Panel4: TPanel;
27 Button1: TButton;
28 RoundButton: TButton;
29 StatusBar1: TStatusBar;
30 RoundListView: TListView;
31 procedure RoundButtonClick(Sender: TObject);
32 procedure FormCreate(Sender: TObject);
33 procedure RoundListViewChange(Sender: TObject; Item: TListItem;
34 Change: TItemChange);
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;
40 Column: TListColumn);
41 procedure RoundListViewCompare(Sender: TObject; Item1,
42 Item2: TListItem; Data: Integer; var Compare: Integer);
43 procedure RoundListViewColumnRightClick(Sender: TObject;
44 Column: TListColumn; Point: TPoint);
45 private
46 { Private 鐃緒申鐃緒申 }
47 FColumnToSort: Integer;
48 FSortOrder: Boolean;
49 function GetRoundCount: Integer;
50 procedure SetRoundItem(RoundName: string);
51 function CompareTime(Time1: TDateTime; Time2: TDateTime; MarginMin: Integer): Boolean;
52 public
53 { Public 鐃緒申鐃緒申 }
54 end;
55
56
57 implementation
58
59 uses
60 Giko, BoardGroup, RoundData, Math;
61
62 {$R *.DFM}
63
64 procedure TRoundDialog.RoundButtonClick(Sender: TObject);
65 var
66 i: Integer;
67 cnt: Integer;
68 msg: string;
69 Board: TBoard;
70 ThreadItem: TThreadItem;
71 RoundItem: TRoundItem;
72 begin
73 {$IF Defined(FRCRND) }
74 Giko.GikoForm.LoginAction.Checked := true; // 鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?
75 {$IFEND}
76
77 {$IFNDEF LOOSENUP} //鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申{$ELSE}鐃緒申鐃緒申鐃緒申鐃?鐃緒申
78 if not Giko.GikoForm.LoginAction.Checked then begin
79 if GikoSys.Setting.UserID <> '' then begin
80 msg := '鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申' + #13#10
81 + '鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申';
82 if MsgBox(Handle, msg, '鐃?鐃?', MB_YESNO or MB_ICONQUESTION or MB_DEFBUTTON2) <> IDYES then begin
83 Exit;
84 end;
85 Giko.GikoForm.LoginAction.Execute;
86 end;
87 if not Giko.GikoForm.LoginAction.Checked then begin
88 msg := '鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申';
89 MsgBox(Handle, msg, '鐃?鐃緒申鐃?', MB_OK or MB_ICONSTOP);
90 Exit;
91 end;
92 end;
93 {$ELSE}
94 //鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?
95 if not Giko.GikoForm.LoginAction.Checked then begin
96 if GikoSys.Setting.UserID <> '' then begin
97 msg := '鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申' + #13#10
98 + '鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申';
99 if MsgBox(Handle, msg, '鐃?鐃?', MB_YESNO or MB_ICONQUESTION or MB_DEFBUTTON2) <> IDYES then begin
100 Exit;
101 end;
102 Giko.GikoForm.LoginAction.Execute;
103 end;
104 end;
105 //鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申15鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申
106 if not Giko.GikoForm.LoginAction.Checked then begin
107 if CompareTime(GikoForm.LastRoundTime, Now, 30) then begin
108 msg := '鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申';
109 MsgBox(Handle, msg, '鐃?鐃緒申鐃?', MB_OK or MB_ICONSTOP);
110 Exit;
111 end;
112 end;
113 {$ENDIF}
114
115 //鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申
116 cnt := GetRoundCount;
117 if cnt = 0 then begin
118 msg := '鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申';
119 MsgBox(Handle, msg, '鐃?鐃緒申鐃?', MB_OK or MB_ICONSTOP);
120 Exit;
121 end;
122
123 {$IFNDEF LOOSENUP}
124 //鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申100鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
125 if not Giko.GikoForm.LoginAction.Checked then begin
126 if cnt > 100 then begin
127 msg := '鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申';
128 MsgBox(Handle, msg, '鐃?鐃緒申鐃?', MB_OK or MB_ICONSTOP);
129 Exit;
130 end;
131 end;
132 {$ENDIF}
133
134 //鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
135 for i := 0 to RoundList.Count[grtBoard] - 1 do begin
136 RoundItem := RoundList.Items[i, grtBoard];
137 //鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?
138 if not RoundItem.BoolData then Continue;
139 //鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃?
140 if RoundItem.RoundType = grtBoard then begin
141 Board := TBoard( RoundItem.Item );
142 //Board鐃緒申鐃?鐃?鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?DL鐃緒申鐃緒申
143 if Board <> nil then begin
144 if not Board.IsThreadDatRead then
145 GikoSys.ReadSubjectFile(Board);
146 GikoForm.DownloadList(Board);
147 end;
148 end;
149 end;
150 for i := 0 to RoundList.Count[grtItem] - 1 do begin
151 RoundItem := RoundList.Items[i, grtItem];
152 //鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?
153 if not RoundItem.BoolData then Continue;
154 {$IFDEF LOOSENUP}
155 //鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
156 if not Giko.GikoForm.LoginAction.Checked then begin
157 msg := '鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?';
158 MsgBox(Handle, msg, '鐃?鐃緒申鐃?', MB_OK or MB_ICONSTOP);
159 break;
160 end;
161 {$ENDIF}
162 if RoundItem.RoundType = grtItem then begin
163 ThreadItem := TThreadItem( RoundItem.Item );
164 if ThreadItem <> nil then begin
165 GikoForm.DownloadContent(ThreadItem);
166 end;
167 end;
168 end;
169 GikoForm.LastRoundTime := Now;
170 Close;
171 end;
172
173 function TRoundDialog.GetRoundCount: Integer;
174 var
175 i: Integer;
176 RoundItem: TRoundItem;
177 begin
178 Result := 0;
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;
183 end;
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;
188 end;
189 end;
190
191 function TRoundDialog.CompareTime(Time1: TDateTime; Time2: TDateTime; MarginMin: Integer): Boolean;
192 const
193 AMin: Double = (1 / 24 / 60);
194 var
195 d: TDateTime;
196 begin
197 d := Time1 + (AMin * MarginMin);
198 Result := Time2 < d;
199 end;
200
201 procedure TRoundDialog.FormCreate(Sender: TObject);
202 var
203 i: Integer;
204 begin
205 //鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃?鐃?鐃?鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申
206 RoundList.SaveRoundFile;
207 RoundNameComboBox.Items.Add('鐃?鐃緒申鐃緒申鐃緒申鐃?');
208 for i := 0 to RoundList.RoundNameList.Count - 1 do
209 RoundNameComboBox.Items.Add(RoundList.RoundNameList[i]);
210 for i := 0 to RoundList.Count[grtBoard] - 1 do
211 RoundList.Items[i, grtBoard].BoolData := False;
212 for i := 0 to RoundList.Count[grtItem] - 1 do
213 RoundList.Items[i, grtItem].BoolData := False;
214 RoundNameComboBox.ItemIndex := 0;
215 SetRoundItem('');
216 end;
217
218 procedure TRoundDialog.RoundListViewChange(Sender: TObject;
219 Item: TListItem; Change: TItemChange);
220 var
221 RoundItem: TRoundItem;
222 begin
223 if TObject(Item.Data) is TRoundItem then begin
224 RoundItem := TRoundItem(Item.Data);
225 RoundItem.BoolData := Item.Checked;
226 end;
227 end;
228
229 procedure TRoundDialog.AllSelectButtonClick(Sender: TObject);
230 var
231 i: Integer;
232 RoundItem: TRoundItem;
233 ListChangeEvent: TLVChangeEvent;
234 begin
235 ListChangeEvent := RoundListView.OnChange;
236 RoundListView.OnChange := nil;
237 try
238 for i := 0 to RoundListView.Items.Count - 1 do begin
239 if TObject(RoundListView.Items[i].Data) is TRoundItem then begin
240 RoundItem := TRoundItem(RoundListView.Items[i].Data);
241 RoundItem.BoolData := True;
242 RoundListView.Items[i].Checked := True;
243 end;
244 end;
245 finally
246 RoundListView.OnChange := ListChangeEvent;
247 end;
248 end;
249
250 procedure TRoundDialog.AllCancelButtonClick(Sender: TObject);
251 var
252 i: Integer;
253 RoundItem: TRoundItem;
254 ListChangeEvent: TLVChangeEvent;
255 begin
256 ListChangeEvent := RoundListView.OnChange;
257 RoundListView.OnChange := nil;
258 try
259 for i := 0 to RoundListView.Items.Count - 1 do begin
260 if TObject(RoundListView.Items[i].Data) is TRoundItem then begin
261 RoundItem := TRoundItem(RoundListView.Items[i].Data);
262 RoundItem.BoolData := False;
263 RoundListView.Items[i].Checked := False;
264 end;
265 end;
266 finally
267 RoundListView.OnChange := ListChangeEvent;
268 end;
269 end;
270
271 procedure TRoundDialog.RoundNameComboBoxChange(Sender: TObject);
272 begin
273 //鐃?鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
274 if FColumnToSort > -1 then
275 RoundListView.Column[FColumnToSort].ImageIndex := -1;
276 FColumnToSort := -1;
277 if RoundNameComboBox.ItemIndex = 0 then
278 SetRoundItem('')
279 else
280 SetRoundItem(RoundNameComboBox.Items[RoundNameComboBox.itemIndex]);
281
282 end;
283
284 procedure TRoundDialog.SetRoundItem(RoundName: string);
285 var
286 ListItem: TListItem;
287 i: Integer;
288 ListChangeEvent: TLVChangeEvent;
289 begin
290 ListChangeEvent := RoundListView.OnChange;
291 RoundListView.OnChange := nil;
292 try
293 RoundListView.Clear;
294 for i := 0 to RoundList.Count[grtBoard] - 1 do begin
295 if (RoundList.Items[i, grtBoard].RoundName = RoundName) or (RoundName = '') then begin
296 ListItem := RoundListView.Items.Add;
297 ListItem.Data := RoundList.Items[i, grtBoard];
298 ListItem.Caption := RoundList.Items[i, grtBoard].RoundName;
299 ListItem.SubItems.Add(RoundList.Items[i, grtBoard].BoardTitle);
300 ListItem.SubItems.Add('-');
301 ListItem.Checked := RoundList.Items[i, grtBoard].BoolData;
302 ListItem.ImageIndex := 0;
303 end;
304 end;
305 for i := 0 to RoundList.Count[grtItem] - 1 do begin
306 if (RoundList.Items[i, grtItem].RoundName = RoundName) or (RoundName = '') then begin
307 ListItem := RoundListView.Items.Add;
308 ListItem.Data := RoundList.Items[i, grtItem];
309 ListItem.Caption := RoundList.Items[i, grtItem].RoundName;
310 ListItem.SubItems.Add(RoundList.Items[i, grtItem].BoardTitle);
311 ListItem.SubItems.Add(RoundList.Items[i, grtItem].ThreadTitle);
312 ListItem.Checked := RoundList.Items[i, grtItem].BoolData;
313 ListItem.ImageIndex := 1;
314 end;
315 end;
316 finally
317 RoundListView.OnChange := ListChangeEvent;
318 end;
319 end;
320
321 procedure TRoundDialog.RoundDeleteButtonClick(Sender: TObject);
322 var
323 // Board: TBoard;
324 // ThreadItem: TThreadItem;
325 RoundItem: TRoundItem;
326 ListChangeEvent: TLVChangeEvent;
327 begin
328 ListChangeEvent := RoundListView.OnChange;
329 RoundListView.OnChange := nil;
330 try
331 if RoundListView.Selected = nil then
332 Exit;
333 if TObject(RoundListView.Selected.Data) is TRoundItem then begin
334 RoundItem := TRoundItem(RoundListView.Selected.Data);
335 if( RoundItem.Item is TBoard ) then begin
336 TBoard(RoundItem.Item).Round := false;
337 end else if( RoundItem.Item is TThreadItem ) then begin
338 TThreadItem(RoundItem.Item).Round := false;
339 end;
340 //RoundList.Delete(RoundItem.URL,RoundItem.RoundType);
341 {
342 if RoundItem.RoundType = grtBoard then begin
343 //Board := TBoard( RoundItem.Item );
344 RoundList.Delete(RoundItem.URL,RoundItem.RoundType);
345 Board.Round := False;
346 Board.RoundName := '';
347 end else begin
348 //ThreadItem := TThreadItem( RoundItem.Item );
349 RoundList.Delete(ThreadItem);
350 ThreadItem.Round := False;
351 ThreadItem.RoundName := '';
352 end;
353 }
354 GikoForm.ListView.Refresh;
355 end;
356 RoundListView.Selected.Delete;
357 finally
358 RoundListView.OnChange := ListChangeEvent;
359 end;
360 end;
361
362 procedure TRoundDialog.RoundListViewColumnClick(Sender: TObject;
363 Column: TListColumn);
364 begin
365 if (Sender is TCustomListView) then begin
366
367 if FColumnToSort > -1 then
368 (Sender as TCustomListView).Column[FColumnToSort].ImageIndex := -1;
369
370 if FColumnToSort = Column.Index then
371 FSortOrder := not FSortOrder
372 else
373 FSortOrder := false;
374
375 if FSortOrder then
376 Column.ImageIndex := 3
377 else
378 Column.ImageIndex := 2;
379
380 FColumnToSort := Column.Index;
381 (Sender as TCustomListView).AlphaSort;
382 end;
383 end;
384
385 procedure TRoundDialog.RoundListViewCompare(Sender: TObject; Item1,
386 Item2: TListItem; Data: Integer; var Compare: Integer);
387 var
388 ix: Integer;
389 begin
390 if FColumnToSort = 0 then begin
391 if not FSortOrder then begin
392 Compare := CompareText(Item1.Caption,Item2.Caption);
393 if Compare = 0 then
394 Compare := CompareValue(Item1.ImageIndex, item2.ImageIndex);
395 end else begin
396 Compare := -CompareText(Item1.Caption,Item2.Caption);
397 if Compare = 0 then
398 Compare := -CompareValue(Item1.ImageIndex,item2.ImageIndex);
399 end;
400 end else begin
401 ix := FColumnToSort - 1;
402 if not FSortOrder then begin
403 Compare := CompareText(Item1.SubItems[ix],Item2.SubItems[ix]);
404 if Compare = 0 then
405 Compare := CompareValue(Item1.ImageIndex, item2.ImageIndex);
406 end else begin
407 Compare := -CompareText(Item1.SubItems[ix],Item2.SubItems[ix]);
408 if Compare = 0 then
409 Compare := -CompareValue(Item1.ImageIndex, item2.ImageIndex);
410 end;
411 end;
412 end;
413 (*
414 * 鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
415 *)
416 procedure TRoundDialog.RoundListViewColumnRightClick(Sender: TObject;
417 Column: TListColumn; Point: TPoint);
418 begin
419 RoundNameComboBox.OnChange(Sender);
420 end;
421
422 end.

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26