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.18.2.2 - (hide annotations) (download) (as text)
Thu Oct 6 16:05:08 2005 UTC (18 years, 6 months ago) by genyakun
Branch: Bb50
Changes since 1.18.2.1: +3 -0 lines
File MIME type: text/x-pascal
巡回前に巡回リストが保存されない問題を修正

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.18.2.1 RoundPopupMenu: TPopupMenu;
12     C1: TMenuItem;
13     P1: TMenuItem;
14 hi_ 1.1 N1: TMenuItem;
15 h677 1.18.2.1 D1: TMenuItem;
16 hi_ 1.1 ItemIcon16: TImageList;
17 h677 1.18.2.1 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     private
40     { Private ?辿?転 }
41     function GetRoundCount: Integer;
42     procedure SetRoundItem(RoundName: string);
43     function CompareTime(Time1: TDateTime; Time2: TDateTime; MarginMin: Integer): Boolean;
44     public
45     { Public ?辿?転 }
46     end;
47    
48    
49     implementation
50    
51     uses
52 genyakun 1.16 Giko, BoardGroup, RoundData;
53 hi_ 1.1
54     {$R *.DFM}
55    
56     procedure TRoundDialog.RoundButtonClick(Sender: TObject);
57     var
58     i: Integer;
59     cnt: Integer;
60     msg: string;
61     Board: TBoard;
62     ThreadItem: TThreadItem;
63     RoundItem: TRoundItem;
64     begin
65 genyakun 1.16 {$IF Defined(FRCRND) }
66 h677 1.18.2.1 Giko.GikoForm.LoginAction.Checked := true; // ?貼???????p?r
67 genyakun 1.16 {$IFEND}
68    
69 h677 1.18.2.1 {$IFNDEF LOOSENUP} //?????則?????????辿???????直?????巽{$ELSE}???撤???g?造
70     if not Giko.GikoForm.LoginAction.Checked then begin
71     if GikoSys.Setting.UserID <> '' then begin
72     msg := '???O?C???直?????????????o?????邸??' + #13#10
73     + '?????O?C???直??????';
74     if MsgBox(Handle, msg, '?m?F', MB_YESNO or MB_ICONQUESTION or MB_DEFBUTTON2) <> IDYES then begin
75     Exit;
76     end;
77     Giko.GikoForm.LoginAction.Execute;
78     end;
79     if not Giko.GikoForm.LoginAction.Checked then begin
80     msg := '???O?C???直?????????????o?????邸??';
81     MsgBox(Handle, msg, '?G???[', MB_OK or MB_ICONSTOP);
82     Exit;
83     end;
84     end;
85     {$ELSE}
86     //?K?則?????????溺?造???A?X?????????????????\
87     if not Giko.GikoForm.LoginAction.Checked then begin
88     if GikoSys.Setting.UserID <> '' then begin
89     msg := '???O?C???直???????X???b?h?????????o?????邸??' + #13#10
90     + '?????O?C???直??????';
91     if MsgBox(Handle, msg, '?m?F', MB_YESNO or MB_ICONQUESTION or MB_DEFBUTTON2) <> IDYES then begin
92     Exit;
93     end;
94     Giko.GikoForm.LoginAction.Execute;
95     end;
96     end;
97     //?????直??????15???????????u???K?v?????辿
98     if not Giko.GikoForm.LoginAction.Checked then begin
99     if CompareTime(GikoForm.LastRoundTime, Now, 30) then begin
100     msg := '???x???????辿???R?O???????????o?????邸??';
101     MsgBox(Handle, msg, '?G???[', MB_OK or MB_ICONSTOP);
102     Exit;
103     end;
104     end;
105     {$ENDIF}
106    
107     //?????????????????直?????????????巽?G???[?????辿
108 genyakun 1.17 cnt := GetRoundCount;
109 h677 1.18.2.1 if cnt = 0 then begin
110     msg := '?????直???????????P???????`?F?b?N???端?????足?転????';
111     MsgBox(Handle, msg, '?G???[', MB_OK or MB_ICONSTOP);
112     Exit;
113     end;
114    
115     {$IFNDEF LOOSENUP}
116     //?????直???????P?x??100?????長?????辿
117 genyakun 1.16 if not Giko.GikoForm.LoginAction.Checked then begin
118 h677 1.18.2.1 if cnt > 100 then begin
119     msg := '?P?O?O???????????x???????長?鼎???邸??';
120     MsgBox(Handle, msg, '?G???[', MB_OK or MB_ICONSTOP);
121     Exit;
122     end;
123 hi_ 1.1 end;
124 h677 1.18.2.1 {$ENDIF}
125 hi_ 1.1
126 genyakun 1.18.2.2 //?????O???徹??
127     RoundList.SaveRoundFile;
128    
129 h677 1.18.2.1 //???????o?^?????????辿???????転?纏???鱈??
130 hi_ 1.1 for i := 0 to RoundList.Count[grtBoard] - 1 do begin
131     RoundItem := RoundList.Items[i, grtBoard];
132 h677 1.18.2.1 //???????`?F?b?N?????????????纏?????X???[
133 hi_ 1.1 if not RoundItem.BoolData then Continue;
134 h677 1.18.2.1 //?m???????????存?転?纏???`?F?b?N
135 hi_ 1.1 if RoundItem.RoundType = grtBoard then begin
136 h677 1.18 Board := TBoard( RoundItem.Item );
137 h677 1.18.2.1 //Board???I?u?W?F?N?g?????????????ADL???辿
138 hi_ 1.1 if Board <> nil then begin
139     if not Board.IsThreadDatRead then
140     GikoSys.ReadSubjectFile(Board);
141     GikoForm.DownloadList(Board);
142     end;
143     end;
144     end;
145     for i := 0 to RoundList.Count[grtItem] - 1 do begin
146     RoundItem := RoundList.Items[i, grtItem];
147 h677 1.18.2.1 //???????`?F?b?N?????????????纏?????X???[
148 hi_ 1.1 if not RoundItem.BoolData then Continue;
149 h677 1.18.2.1 {$IFDEF LOOSENUP}
150     //?????直???????X???b?h???長?鼎?????????????辿
151     if not Giko.GikoForm.LoginAction.Checked then begin
152     msg := '???O?C???直???????X???b?h?????????長?鼎???邸???B';
153     MsgBox(Handle, msg, '?G???[', MB_OK or MB_ICONSTOP);
154     break;
155     end;
156     {$ENDIF}
157     if RoundItem.RoundType = grtItem then begin
158     ThreadItem := TThreadItem( RoundItem.Item );
159 hi_ 1.1 if ThreadItem <> nil then begin
160     GikoForm.DownloadContent(ThreadItem);
161     end;
162     end;
163     end;
164 genyakun 1.17 GikoForm.LastRoundTime := Now;
165 hi_ 1.1 Close;
166     end;
167    
168     function TRoundDialog.GetRoundCount: Integer;
169     var
170     i: Integer;
171     RoundItem: TRoundItem;
172     begin
173     Result := 0;
174     for i := 0 to RoundList.Count[grtBoard] - 1 do begin
175     RoundItem := RoundList.Items[i, grtBoard];
176     if RoundItem.BoolData then
177     Result := Result + 1;
178     end;
179     for i := 0 to RoundList.Count[grtItem] - 1 do begin
180     RoundItem := RoundList.Items[i, grtItem];
181     if RoundItem.BoolData then
182     Result := Result + 1;
183     end;
184     end;
185    
186     function TRoundDialog.CompareTime(Time1: TDateTime; Time2: TDateTime; MarginMin: Integer): Boolean;
187     const
188     AMin: Double = (1 / 24 / 60);
189     var
190     d: TDateTime;
191     begin
192     d := Time1 + (AMin * MarginMin);
193     Result := Time2 < d;
194     end;
195    
196     procedure TRoundDialog.FormCreate(Sender: TObject);
197     var
198     i: Integer;
199     begin
200     RoundNameComboBox.Items.Add('?i???????j');
201     for i := 0 to RoundList.RoundNameList.Count - 1 do
202     RoundNameComboBox.Items.Add(RoundList.RoundNameList[i]);
203     for i := 0 to RoundList.Count[grtBoard] - 1 do
204     RoundList.Items[i, grtBoard].BoolData := False;
205     for i := 0 to RoundList.Count[grtItem] - 1 do
206     RoundList.Items[i, grtItem].BoolData := False;
207     RoundNameComboBox.ItemIndex := 0;
208     SetRoundItem('');
209     end;
210    
211     procedure TRoundDialog.RoundListViewChange(Sender: TObject;
212     Item: TListItem; Change: TItemChange);
213     var
214     RoundItem: TRoundItem;
215     begin
216     if TObject(Item.Data) is TRoundItem then begin
217     RoundItem := TRoundItem(Item.Data);
218     RoundItem.BoolData := Item.Checked;
219     end;
220     end;
221    
222     procedure TRoundDialog.AllSelectButtonClick(Sender: TObject);
223     var
224     i: Integer;
225     RoundItem: TRoundItem;
226     ListChangeEvent: TLVChangeEvent;
227     begin
228     ListChangeEvent := RoundListView.OnChange;
229     RoundListView.OnChange := nil;
230     try
231     for i := 0 to RoundListView.Items.Count - 1 do begin
232     if TObject(RoundListView.Items[i].Data) is TRoundItem then begin
233     RoundItem := TRoundItem(RoundListView.Items[i].Data);
234     RoundItem.BoolData := True;
235     RoundListView.Items[i].Checked := True;
236     end;
237     end;
238     finally
239     RoundListView.OnChange := ListChangeEvent;
240     end;
241     end;
242    
243     procedure TRoundDialog.AllCancelButtonClick(Sender: TObject);
244     var
245     i: Integer;
246     RoundItem: TRoundItem;
247     ListChangeEvent: TLVChangeEvent;
248     begin
249     ListChangeEvent := RoundListView.OnChange;
250     RoundListView.OnChange := nil;
251     try
252     for i := 0 to RoundListView.Items.Count - 1 do begin
253     if TObject(RoundListView.Items[i].Data) is TRoundItem then begin
254     RoundItem := TRoundItem(RoundListView.Items[i].Data);
255     RoundItem.BoolData := False;
256     RoundListView.Items[i].Checked := False;
257     end;
258     end;
259     finally
260     RoundListView.OnChange := ListChangeEvent;
261     end;
262     end;
263    
264     procedure TRoundDialog.RoundNameComboBoxChange(Sender: TObject);
265     begin
266     if RoundNameComboBox.ItemIndex = 0 then
267     SetRoundItem('')
268     else
269     SetRoundItem(RoundNameComboBox.Items[RoundNameComboBox.itemIndex]);
270     end;
271    
272     procedure TRoundDialog.SetRoundItem(RoundName: string);
273     var
274     ListItem: TListItem;
275     i: Integer;
276     ListChangeEvent: TLVChangeEvent;
277     begin
278     ListChangeEvent := RoundListView.OnChange;
279     RoundListView.OnChange := nil;
280     try
281     RoundListView.Clear;
282 deux 1.7 for i := 0 to RoundList.Count[grtBoard] - 1 do begin
283 hi_ 1.1 if (RoundList.Items[i, grtBoard].RoundName = RoundName) or (RoundName = '') then begin
284     ListItem := RoundListView.Items.Add;
285     ListItem.Data := RoundList.Items[i, grtBoard];
286     ListItem.Caption := RoundList.Items[i, grtBoard].RoundName;
287     ListItem.SubItems.Add(RoundList.Items[i, grtBoard].BoardTitle);
288     ListItem.SubItems.Add('-');
289     ListItem.Checked := RoundList.Items[i, grtBoard].BoolData;
290     ListItem.ImageIndex := 0;
291     end;
292     end;
293 deux 1.7 for i := 0 to RoundList.Count[grtItem] - 1 do begin
294 hi_ 1.1 if (RoundList.Items[i, grtItem].RoundName = RoundName) or (RoundName = '') then begin
295     ListItem := RoundListView.Items.Add;
296     ListItem.Data := RoundList.Items[i, grtItem];
297     ListItem.Caption := RoundList.Items[i, grtItem].RoundName;
298     ListItem.SubItems.Add(RoundList.Items[i, grtItem].BoardTitle);
299     ListItem.SubItems.Add(RoundList.Items[i, grtItem].ThreadTitle);
300     ListItem.Checked := RoundList.Items[i, grtItem].BoolData;
301     ListItem.ImageIndex := 1;
302     end;
303     end;
304     finally
305     RoundListView.OnChange := ListChangeEvent;
306     end;
307     end;
308    
309     procedure TRoundDialog.RoundDeleteButtonClick(Sender: TObject);
310     var
311 h677 1.8 // Board: TBoard;
312     // ThreadItem: TThreadItem;
313 hi_ 1.1 RoundItem: TRoundItem;
314     ListChangeEvent: TLVChangeEvent;
315     begin
316     ListChangeEvent := RoundListView.OnChange;
317     RoundListView.OnChange := nil;
318     try
319     if RoundListView.Selected = nil then
320     Exit;
321     if TObject(RoundListView.Selected.Data) is TRoundItem then begin
322     RoundItem := TRoundItem(RoundListView.Selected.Data);
323 h677 1.18 if( RoundItem.Item is TBoard ) then begin
324     TBoard(RoundItem.Item).Round := false;
325     end else if( RoundItem.Item is TThreadItem ) then begin
326     TThreadItem(RoundItem.Item).Round := false;
327     end;
328     //RoundList.Delete(RoundItem.URL,RoundItem.RoundType);
329 h677 1.4 {
330 hi_ 1.1 if RoundItem.RoundType = grtBoard then begin
331 h677 1.4 //Board := TBoard( RoundItem.Item );
332     RoundList.Delete(RoundItem.URL,RoundItem.RoundType);
333 hi_ 1.1 Board.Round := False;
334     Board.RoundName := '';
335     end else begin
336 h677 1.4 //ThreadItem := TThreadItem( RoundItem.Item );
337 hi_ 1.1 RoundList.Delete(ThreadItem);
338     ThreadItem.Round := False;
339     ThreadItem.RoundName := '';
340     end;
341 h677 1.4 }
342 hi_ 1.1 GikoForm.ListView.Refresh;
343     end;
344     RoundListView.Selected.Delete;
345     finally
346     RoundListView.OnChange := ListChangeEvent;
347     end;
348     end;
349    
350     end.

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