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.12 - (show annotations) (download) (as text)
Sat Nov 20 07:53:52 2004 UTC (19 years, 5 months ago) by h677
Branch: MAIN
Changes since 1.11: +1 -0 lines
File MIME type: text/x-pascal
巡回フォームを呼び出したときに、ファイル出力するようにした。

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 private
44 { Private 鐃緒申鐃緒申 }
45 FColumnToSort: Integer;
46 FSortOrder: Boolean;
47 function GetRoundCount: Integer;
48 procedure SetRoundItem(RoundName: string);
49 function CompareTime(Time1: TDateTime; Time2: TDateTime; MarginMin: Integer): Boolean;
50 public
51 { Public 鐃緒申鐃緒申 }
52 end;
53
54 //var
55 // RoundDialog: TRoundDialog;
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 CompareTime(GikoForm.LastRoundTime, Now, 5) then begin
74 // msg := '鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申';
75 // GikoSys.MsgBox(msg, '鐃?鐃緒申鐃?', MB_OK or MB_ICONSTOP);
76 // Exit;
77 // end;
78 {$IF Defined(FRCRND) }
79 Giko.GikoForm.LoginAction.Checked := true; // 鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?
80 {$IFEND}
81
82 if not Giko.GikoForm.LoginAction.Checked then begin
83 if GikoSys.Setting.UserID <> '' then begin
84 msg := '鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申' + #13#10
85 + '鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申';
86 if MsgBox(Handle, msg, '鐃?鐃?', MB_YESNO or MB_ICONQUESTION or MB_DEFBUTTON2) <> IDYES then begin
87 Exit;
88 end;
89 Giko.GikoForm.LoginAction.Execute;
90 end;
91 end;
92
93 if not Giko.GikoForm.LoginAction.Checked then begin
94 msg := '鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申';// + #13#10
95 // + '鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃?鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申';
96 MsgBox(Handle, msg, '鐃?鐃緒申鐃?', MB_OK or MB_ICONSTOP);
97 Exit;
98 end;
99
100 cnt := GetRoundCount;
101 if cnt = 0 then begin
102 msg := '鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申';
103 MsgBox(Handle, msg, '鐃?鐃緒申鐃?', MB_OK or MB_ICONSTOP);
104 Exit;
105 end;
106
107 for i := 0 to RoundList.Count[grtBoard] - 1 do begin
108 RoundItem := RoundList.Items[i, grtBoard];
109 if not RoundItem.BoolData then Continue;
110 if not Giko.GikoForm.LoginAction.Checked then Exit;
111 if RoundItem.RoundType = grtBoard then begin
112 //Board := TBoard( RoundItem.Item );
113 Board := BBSsFindBoardFromURL(RoundItem.URL);
114 if Board <> nil then begin
115 if not Board.IsThreadDatRead then
116 GikoSys.ReadSubjectFile(Board);
117 GikoForm.DownloadList(Board);
118 end;
119 end;
120 end;
121 for i := 0 to RoundList.Count[grtItem] - 1 do begin
122 RoundItem := RoundList.Items[i, grtItem];
123 if not RoundItem.BoolData then Continue;
124 if not Giko.GikoForm.LoginAction.Checked then Exit;
125 if RoundItem.RoundType = grtItem then begin
126 //ThreadItem := TThreadItem( RoundItem.Item );
127 ThreadItem := BBSsFindThreadFromURL(RoundItem.URL);
128 if ThreadItem <> nil then begin
129 // GikoForm.AddMessageList('debug2:' + IntToStr(i), nil);
130 GikoForm.DownloadContent(ThreadItem);
131 end;
132 end;
133 end;
134 // GikoForm.LastRoundTime := Now;
135 Close;
136 end;
137
138 function TRoundDialog.GetRoundCount: Integer;
139 var
140 i: Integer;
141 RoundItem: TRoundItem;
142 begin
143 Result := 0;
144 for i := 0 to RoundList.Count[grtBoard] - 1 do begin
145 RoundItem := RoundList.Items[i, grtBoard];
146 if RoundItem.BoolData then
147 Result := Result + 1;
148 end;
149 for i := 0 to RoundList.Count[grtItem] - 1 do begin
150 RoundItem := RoundList.Items[i, grtItem];
151 if RoundItem.BoolData then
152 Result := Result + 1;
153 end;
154 end;
155
156 function TRoundDialog.CompareTime(Time1: TDateTime; Time2: TDateTime; MarginMin: Integer): Boolean;
157 const
158 AMin: Double = (1 / 24 / 60);
159 var
160 d: TDateTime;
161 begin
162 d := Time1 + (AMin * MarginMin);
163 Result := Time2 < d;
164 end;
165
166 procedure TRoundDialog.FormCreate(Sender: TObject);
167 var
168 i: Integer;
169 begin
170 FColumnToSort := -1;
171 RoundNameComboBox.Items.Add('鐃?鐃緒申鐃緒申鐃緒申鐃?');
172 for i := 0 to RoundList.RoundNameList.Count - 1 do
173 RoundNameComboBox.Items.Add(RoundList.RoundNameList[i]);
174 for i := 0 to RoundList.Count[grtBoard] - 1 do
175 RoundList.Items[i, grtBoard].BoolData := False;
176 for i := 0 to RoundList.Count[grtItem] - 1 do
177 RoundList.Items[i, grtItem].BoolData := False;
178 RoundNameComboBox.ItemIndex := 0;
179 SetRoundItem('');
180 RoundList.SaveRoundFile;
181 end;
182
183 procedure TRoundDialog.RoundListViewChange(Sender: TObject;
184 Item: TListItem; Change: TItemChange);
185 var
186 RoundItem: TRoundItem;
187 begin
188 if TObject(Item.Data) is TRoundItem then begin
189 RoundItem := TRoundItem(Item.Data);
190 RoundItem.BoolData := Item.Checked;
191 end;
192 end;
193
194 procedure TRoundDialog.AllSelectButtonClick(Sender: TObject);
195 var
196 i: Integer;
197 RoundItem: TRoundItem;
198 ListChangeEvent: TLVChangeEvent;
199 begin
200 ListChangeEvent := RoundListView.OnChange;
201 RoundListView.OnChange := nil;
202 try
203 for i := 0 to RoundListView.Items.Count - 1 do begin
204 if TObject(RoundListView.Items[i].Data) is TRoundItem then begin
205 RoundItem := TRoundItem(RoundListView.Items[i].Data);
206 RoundItem.BoolData := True;
207 RoundListView.Items[i].Checked := True;
208 end;
209 end;
210 finally
211 RoundListView.OnChange := ListChangeEvent;
212 end;
213 end;
214
215 procedure TRoundDialog.AllCancelButtonClick(Sender: TObject);
216 var
217 i: Integer;
218 RoundItem: TRoundItem;
219 ListChangeEvent: TLVChangeEvent;
220 begin
221 ListChangeEvent := RoundListView.OnChange;
222 RoundListView.OnChange := nil;
223 try
224 for i := 0 to RoundListView.Items.Count - 1 do begin
225 if TObject(RoundListView.Items[i].Data) is TRoundItem then begin
226 RoundItem := TRoundItem(RoundListView.Items[i].Data);
227 RoundItem.BoolData := False;
228 RoundListView.Items[i].Checked := False;
229 end;
230 end;
231 finally
232 RoundListView.OnChange := ListChangeEvent;
233 end;
234 end;
235
236 procedure TRoundDialog.RoundNameComboBoxChange(Sender: TObject);
237 begin
238 if RoundNameComboBox.ItemIndex = 0 then
239 SetRoundItem('')
240 else
241 SetRoundItem(RoundNameComboBox.Items[RoundNameComboBox.itemIndex]);
242 end;
243
244 procedure TRoundDialog.SetRoundItem(RoundName: string);
245 var
246 ListItem: TListItem;
247 i: Integer;
248 ListChangeEvent: TLVChangeEvent;
249 begin
250 ListChangeEvent := RoundListView.OnChange;
251 RoundListView.OnChange := nil;
252 try
253 RoundListView.Clear;
254 for i := 0 to RoundList.Count[grtBoard] - 1 do begin
255 if (RoundList.Items[i, grtBoard].RoundName = RoundName) or (RoundName = '') then begin
256 ListItem := RoundListView.Items.Add;
257 ListItem.Data := RoundList.Items[i, grtBoard];
258 ListItem.Caption := RoundList.Items[i, grtBoard].RoundName;
259 ListItem.SubItems.Add(RoundList.Items[i, grtBoard].BoardTitle);
260 ListItem.SubItems.Add('-');
261 ListItem.Checked := RoundList.Items[i, grtBoard].BoolData;
262 ListItem.ImageIndex := 0;
263 end;
264 end;
265 for i := 0 to RoundList.Count[grtItem] - 1 do begin
266 if (RoundList.Items[i, grtItem].RoundName = RoundName) or (RoundName = '') then begin
267 ListItem := RoundListView.Items.Add;
268 ListItem.Data := RoundList.Items[i, grtItem];
269 ListItem.Caption := RoundList.Items[i, grtItem].RoundName;
270 ListItem.SubItems.Add(RoundList.Items[i, grtItem].BoardTitle);
271 ListItem.SubItems.Add(RoundList.Items[i, grtItem].ThreadTitle);
272 ListItem.Checked := RoundList.Items[i, grtItem].BoolData;
273 ListItem.ImageIndex := 1;
274 end;
275 end;
276 finally
277 RoundListView.OnChange := ListChangeEvent;
278 end;
279 end;
280
281 procedure TRoundDialog.RoundDeleteButtonClick(Sender: TObject);
282 var
283 // Board: TBoard;
284 // ThreadItem: TThreadItem;
285 RoundItem: TRoundItem;
286 ListChangeEvent: TLVChangeEvent;
287 begin
288 ListChangeEvent := RoundListView.OnChange;
289 RoundListView.OnChange := nil;
290 try
291 if RoundListView.Selected = nil then
292 Exit;
293 if TObject(RoundListView.Selected.Data) is TRoundItem then begin
294 RoundItem := TRoundItem(RoundListView.Selected.Data);
295 RoundList.Delete(RoundItem.URL,RoundItem.RoundType);
296 {
297 if RoundItem.RoundType = grtBoard then begin
298 //Board := TBoard( RoundItem.Item );
299 RoundList.Delete(RoundItem.URL,RoundItem.RoundType);
300 Board.Round := False;
301 Board.RoundName := '';
302 end else begin
303 //ThreadItem := TThreadItem( RoundItem.Item );
304 RoundList.Delete(ThreadItem);
305 ThreadItem.Round := False;
306 ThreadItem.RoundName := '';
307 end;
308 }
309 GikoForm.ListView.Refresh;
310 end;
311 RoundListView.Selected.Delete;
312 finally
313 RoundListView.OnChange := ListChangeEvent;
314 end;
315 end;
316
317 procedure TRoundDialog.RoundListViewColumnClick(Sender: TObject;
318 Column: TListColumn);
319 begin
320 if FColumnToSort > -1 then
321 (Sender as TCustomListView).Column[FColumnToSort].ImageIndex := -1;
322
323 if FColumnToSort = Column.Index then
324 FSortOrder := not FSortOrder
325 else
326 FSortOrder := false;
327
328 if FSortOrder then
329 Column.ImageIndex := 3
330 else
331 Column.ImageIndex := 2;
332
333 FColumnToSort := Column.Index;
334 (Sender as TCustomListView).AlphaSort;
335 end;
336
337 procedure TRoundDialog.RoundListViewCompare(Sender: TObject; Item1,
338 Item2: TListItem; Data: Integer; var Compare: Integer);
339 var
340 ix: Integer;
341 begin
342 if FColumnToSort = 0 then begin
343 if not FSortOrder then begin
344 Compare := CompareText(Item1.Caption,Item2.Caption);
345 if Compare = 0 then
346 Compare := CompareValue(Item1.ImageIndex, item2.ImageIndex);
347 end else begin
348 Compare := -CompareText(Item1.Caption,Item2.Caption);
349 if Compare = 0 then
350 Compare := -CompareValue(Item1.ImageIndex,item2.ImageIndex);
351 end;
352 end else begin
353 ix := FColumnToSort - 1;
354 if not FSortOrder then begin
355 Compare := CompareText(Item1.SubItems[ix],Item2.SubItems[ix]);
356 if Compare = 0 then
357 Compare := CompareValue(Item1.ImageIndex, item2.ImageIndex);
358 end else begin
359 Compare := -CompareText(Item1.SubItems[ix],Item2.SubItems[ix]);
360 if Compare = 0 then
361 Compare := -CompareValue(Item1.ImageIndex, item2.ImageIndex);
362 end;
363 end;
364 end;
365
366 end.

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