Develop and Download Open Source Software

Browse CVS Repository

Annotation of /gikonavigoeson/gikonavi/Round.pas

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


Revision 1.20.2.1 - (hide 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 hi_ 1.1 unit Round;
2    
3     interface
4    
5     uses
6     Windows, Classes, Controls, Forms, StdCtrls, ComCtrls, Menus,
7 genyakun 1.16 SysUtils, ImgList, ExtCtrls, GikoSystem, GikoUtil;
8 hi_ 1.1
9     type
10     TRoundDialog = class(TForm)
11 h677 1.19 RoundPopupMenu: TPopupMenu;
12     C1: TMenuItem;
13     P1: TMenuItem;
14 hi_ 1.1 N1: TMenuItem;
15 h677 1.19 D1: TMenuItem;
16 hi_ 1.1 ItemIcon16: TImageList;
17 h677 1.19 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 hi_ 1.1 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 h677 1.20 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 hi_ 1.1 private
46     { Private 鐃緒申鐃緒申 }
47 h677 1.20 FColumnToSort: Integer;
48     FSortOrder: Boolean;
49 hi_ 1.1 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 h677 1.20 Giko, BoardGroup, RoundData, Math;
61 hi_ 1.1
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 genyakun 1.16 {$IF Defined(FRCRND) }
74 h677 1.19 Giko.GikoForm.LoginAction.Checked := true; // 鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?
75 genyakun 1.16 {$IFEND}
76    
77 h677 1.19 {$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 genyakun 1.17 cnt := GetRoundCount;
117 h677 1.19 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 genyakun 1.16 if not Giko.GikoForm.LoginAction.Checked then begin
126 h677 1.19 if cnt > 100 then begin
127     msg := '鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申';
128     MsgBox(Handle, msg, '鐃?鐃緒申鐃?', MB_OK or MB_ICONSTOP);
129     Exit;
130     end;
131 hi_ 1.1 end;
132 h677 1.19 {$ENDIF}
133 hi_ 1.1
134 h677 1.19 //鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
135 hi_ 1.1 for i := 0 to RoundList.Count[grtBoard] - 1 do begin
136     RoundItem := RoundList.Items[i, grtBoard];
137 h677 1.19 //鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?
138 hi_ 1.1 if not RoundItem.BoolData then Continue;
139 h677 1.19 //鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃?
140 hi_ 1.1 if RoundItem.RoundType = grtBoard then begin
141 h677 1.18 Board := TBoard( RoundItem.Item );
142 h677 1.19 //Board鐃緒申鐃?鐃?鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?DL鐃緒申鐃緒申
143 hi_ 1.1 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 h677 1.19 //鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?
153 hi_ 1.1 if not RoundItem.BoolData then Continue;
154 h677 1.19 {$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 hi_ 1.1 if ThreadItem <> nil then begin
165     GikoForm.DownloadContent(ThreadItem);
166     end;
167     end;
168     end;
169 genyakun 1.17 GikoForm.LastRoundTime := Now;
170 hi_ 1.1 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 h677 1.20 //鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃?鐃?鐃?鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申
206     RoundList.SaveRoundFile;
207 hi_ 1.1 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 h677 1.20 //鐃?鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
274     if FColumnToSort > -1 then
275 h677 1.20.2.1 RoundListView.Column[FColumnToSort].ImageIndex := -1;
276 h677 1.20 FColumnToSort := -1;
277 hi_ 1.1 if RoundNameComboBox.ItemIndex = 0 then
278     SetRoundItem('')
279     else
280     SetRoundItem(RoundNameComboBox.Items[RoundNameComboBox.itemIndex]);
281 h677 1.20.2.1
282 hi_ 1.1 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 deux 1.7 for i := 0 to RoundList.Count[grtBoard] - 1 do begin
295 hi_ 1.1 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 deux 1.7 for i := 0 to RoundList.Count[grtItem] - 1 do begin
306 hi_ 1.1 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 h677 1.8 // Board: TBoard;
324     // ThreadItem: TThreadItem;
325 hi_ 1.1 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 h677 1.18 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 h677 1.20 {
342 hi_ 1.1 if RoundItem.RoundType = grtBoard then begin
343 h677 1.4 //Board := TBoard( RoundItem.Item );
344     RoundList.Delete(RoundItem.URL,RoundItem.RoundType);
345 hi_ 1.1 Board.Round := False;
346     Board.RoundName := '';
347     end else begin
348 h677 1.4 //ThreadItem := TThreadItem( RoundItem.Item );
349 hi_ 1.1 RoundList.Delete(ThreadItem);
350     ThreadItem.Round := False;
351     ThreadItem.RoundName := '';
352     end;
353 h677 1.20 }
354 hi_ 1.1 GikoForm.ListView.Refresh;
355     end;
356     RoundListView.Selected.Delete;
357     finally
358     RoundListView.OnChange := ListChangeEvent;
359     end;
360     end;
361    
362 h677 1.20 procedure TRoundDialog.RoundListViewColumnClick(Sender: TObject;
363     Column: TListColumn);
364     begin
365 h677 1.20.2.1 if (Sender is TCustomListView) then begin
366 h677 1.20
367 h677 1.20.2.1 if FColumnToSort > -1 then
368     (Sender as TCustomListView).Column[FColumnToSort].ImageIndex := -1;
369 h677 1.20
370 h677 1.20.2.1 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 h677 1.20
380 h677 1.20.2.1 FColumnToSort := Column.Index;
381     (Sender as TCustomListView).AlphaSort;
382     end;
383 h677 1.20 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 hi_ 1.1 end.

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