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.8 - (show annotations) (download) (as text)
Tue Jan 6 13:49:18 2004 UTC (20 years, 3 months ago) by h677
Branch: MAIN
Changes since 1.7: +3 -3 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 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 //var
49 // RoundDialog: TRoundDialog;
50
51 implementation
52
53 uses
54 Giko, BoardGroup, RoundData;
55
56 {$R *.DFM}
57
58 procedure TRoundDialog.RoundButtonClick(Sender: TObject);
59 var
60 i: Integer;
61 cnt: Integer;
62 msg: string;
63 Board: TBoard;
64 ThreadItem: TThreadItem;
65 RoundItem: TRoundItem;
66 begin
67 // if CompareTime(GikoForm.LastRoundTime, Now, 5) then begin
68 // msg := '鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申';
69 // GikoSys.MsgBox(msg, '鐃?鐃緒申鐃?', MB_OK or MB_ICONSTOP);
70 // Exit;
71 // end;
72 Giko.GikoForm.LoginAction.Checked := true;
73 if not Giko.GikoForm.LoginAction.Checked then begin
74 msg := '鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申';// + #13#10
75 // + '鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃?鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申';
76 MsgBox(Handle, msg, '鐃?鐃緒申鐃?', MB_OK or MB_ICONSTOP);
77 Exit;
78 end;
79
80 cnt := GetRoundCount;
81 if cnt = 0 then begin
82 msg := '鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申';
83 MsgBox(Handle, msg, '鐃?鐃緒申鐃?', MB_OK or MB_ICONSTOP);
84 Exit;
85 end;
86
87 for i := 0 to RoundList.Count[grtBoard] - 1 do begin
88 RoundItem := RoundList.Items[i, grtBoard];
89 if not RoundItem.BoolData then Continue;
90 if not Giko.GikoForm.LoginAction.Checked then Exit;
91 if RoundItem.RoundType = grtBoard then begin
92 //Board := TBoard( RoundItem.Item );
93 Board := BBSsFindBoardFromURL(RoundItem.URL);
94 if Board <> nil then begin
95 if not Board.IsThreadDatRead then
96 GikoSys.ReadSubjectFile(Board);
97 GikoForm.DownloadList(Board);
98 end;
99 end;
100 end;
101 for i := 0 to RoundList.Count[grtItem] - 1 do begin
102 RoundItem := RoundList.Items[i, grtItem];
103 if not RoundItem.BoolData then Continue;
104 if not Giko.GikoForm.LoginAction.Checked then Exit;
105 if RoundItem.RoundType = grtItem then begin
106 //ThreadItem := TThreadItem( RoundItem.Item );
107 ThreadItem := BBSsFindThreadFromURL(RoundItem.URL);
108 if ThreadItem <> nil then begin
109 // GikoForm.AddMessageList('debug2:' + IntToStr(i), nil);
110 GikoForm.DownloadContent(ThreadItem);
111 end;
112 end;
113 end;
114 // GikoForm.LastRoundTime := Now;
115 Close;
116 end;
117
118 function TRoundDialog.GetRoundCount: Integer;
119 var
120 i: Integer;
121 RoundItem: TRoundItem;
122 begin
123 Result := 0;
124 for i := 0 to RoundList.Count[grtBoard] - 1 do begin
125 RoundItem := RoundList.Items[i, grtBoard];
126 if RoundItem.BoolData then
127 Result := Result + 1;
128 end;
129 for i := 0 to RoundList.Count[grtItem] - 1 do begin
130 RoundItem := RoundList.Items[i, grtItem];
131 if RoundItem.BoolData then
132 Result := Result + 1;
133 end;
134 end;
135
136 function TRoundDialog.CompareTime(Time1: TDateTime; Time2: TDateTime; MarginMin: Integer): Boolean;
137 const
138 AMin: Double = (1 / 24 / 60);
139 var
140 d: TDateTime;
141 begin
142 d := Time1 + (AMin * MarginMin);
143 Result := Time2 < d;
144 end;
145
146 procedure TRoundDialog.FormCreate(Sender: TObject);
147 var
148 i: Integer;
149 begin
150 RoundNameComboBox.Items.Add('鐃?鐃緒申鐃緒申鐃緒申鐃?');
151 for i := 0 to RoundList.RoundNameList.Count - 1 do
152 RoundNameComboBox.Items.Add(RoundList.RoundNameList[i]);
153 for i := 0 to RoundList.Count[grtBoard] - 1 do
154 RoundList.Items[i, grtBoard].BoolData := False;
155 for i := 0 to RoundList.Count[grtItem] - 1 do
156 RoundList.Items[i, grtItem].BoolData := False;
157 RoundNameComboBox.ItemIndex := 0;
158 SetRoundItem('');
159 end;
160
161 procedure TRoundDialog.RoundListViewChange(Sender: TObject;
162 Item: TListItem; Change: TItemChange);
163 var
164 RoundItem: TRoundItem;
165 begin
166 if TObject(Item.Data) is TRoundItem then begin
167 RoundItem := TRoundItem(Item.Data);
168 RoundItem.BoolData := Item.Checked;
169 end;
170 end;
171
172 procedure TRoundDialog.AllSelectButtonClick(Sender: TObject);
173 var
174 i: Integer;
175 RoundItem: TRoundItem;
176 ListChangeEvent: TLVChangeEvent;
177 begin
178 ListChangeEvent := RoundListView.OnChange;
179 RoundListView.OnChange := nil;
180 try
181 for i := 0 to RoundListView.Items.Count - 1 do begin
182 if TObject(RoundListView.Items[i].Data) is TRoundItem then begin
183 RoundItem := TRoundItem(RoundListView.Items[i].Data);
184 RoundItem.BoolData := True;
185 RoundListView.Items[i].Checked := True;
186 end;
187 end;
188 finally
189 RoundListView.OnChange := ListChangeEvent;
190 end;
191 end;
192
193 procedure TRoundDialog.AllCancelButtonClick(Sender: TObject);
194 var
195 i: Integer;
196 RoundItem: TRoundItem;
197 ListChangeEvent: TLVChangeEvent;
198 begin
199 ListChangeEvent := RoundListView.OnChange;
200 RoundListView.OnChange := nil;
201 try
202 for i := 0 to RoundListView.Items.Count - 1 do begin
203 if TObject(RoundListView.Items[i].Data) is TRoundItem then begin
204 RoundItem := TRoundItem(RoundListView.Items[i].Data);
205 RoundItem.BoolData := False;
206 RoundListView.Items[i].Checked := False;
207 end;
208 end;
209 finally
210 RoundListView.OnChange := ListChangeEvent;
211 end;
212 end;
213
214 procedure TRoundDialog.RoundNameComboBoxChange(Sender: TObject);
215 begin
216 if RoundNameComboBox.ItemIndex = 0 then
217 SetRoundItem('')
218 else
219 SetRoundItem(RoundNameComboBox.Items[RoundNameComboBox.itemIndex]);
220 end;
221
222 procedure TRoundDialog.SetRoundItem(RoundName: string);
223 var
224 ListItem: TListItem;
225 i: Integer;
226 ListChangeEvent: TLVChangeEvent;
227 begin
228 ListChangeEvent := RoundListView.OnChange;
229 RoundListView.OnChange := nil;
230 try
231 RoundListView.Clear;
232 for i := 0 to RoundList.Count[grtBoard] - 1 do begin
233 if (RoundList.Items[i, grtBoard].RoundName = RoundName) or (RoundName = '') then begin
234 ListItem := RoundListView.Items.Add;
235 ListItem.Data := RoundList.Items[i, grtBoard];
236 ListItem.Caption := RoundList.Items[i, grtBoard].RoundName;
237 ListItem.SubItems.Add(RoundList.Items[i, grtBoard].BoardTitle);
238 ListItem.SubItems.Add('-');
239 ListItem.Checked := RoundList.Items[i, grtBoard].BoolData;
240 ListItem.ImageIndex := 0;
241 end;
242 end;
243 for i := 0 to RoundList.Count[grtItem] - 1 do begin
244 if (RoundList.Items[i, grtItem].RoundName = RoundName) or (RoundName = '') then begin
245 ListItem := RoundListView.Items.Add;
246 ListItem.Data := RoundList.Items[i, grtItem];
247 ListItem.Caption := RoundList.Items[i, grtItem].RoundName;
248 ListItem.SubItems.Add(RoundList.Items[i, grtItem].BoardTitle);
249 ListItem.SubItems.Add(RoundList.Items[i, grtItem].ThreadTitle);
250 ListItem.Checked := RoundList.Items[i, grtItem].BoolData;
251 ListItem.ImageIndex := 1;
252 end;
253 end;
254 finally
255 RoundListView.OnChange := ListChangeEvent;
256 end;
257 end;
258
259 procedure TRoundDialog.RoundDeleteButtonClick(Sender: TObject);
260 var
261 // Board: TBoard;
262 // ThreadItem: TThreadItem;
263 RoundItem: TRoundItem;
264 ListChangeEvent: TLVChangeEvent;
265 begin
266 ListChangeEvent := RoundListView.OnChange;
267 RoundListView.OnChange := nil;
268 try
269 if RoundListView.Selected = nil then
270 Exit;
271 if TObject(RoundListView.Selected.Data) is TRoundItem then begin
272 RoundItem := TRoundItem(RoundListView.Selected.Data);
273 RoundList.Delete(RoundItem.URL,RoundItem.RoundType);
274 {
275 if RoundItem.RoundType = grtBoard then begin
276 //Board := TBoard( RoundItem.Item );
277 RoundList.Delete(RoundItem.URL,RoundItem.RoundType);
278 Board.Round := False;
279 Board.RoundName := '';
280 end else begin
281 //ThreadItem := TThreadItem( RoundItem.Item );
282 RoundList.Delete(ThreadItem);
283 ThreadItem.Round := False;
284 ThreadItem.RoundName := '';
285 end;
286 }
287 GikoForm.ListView.Refresh;
288 end;
289 RoundListView.Selected.Delete;
290 finally
291 RoundListView.OnChange := ListChangeEvent;
292 end;
293 end;
294
295 end.

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