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.9 - (hide annotations) (download) (as text)
Tue Jan 6 15:44:20 2004 UTC (20 years, 3 months ago) by deux
Branch: MAIN
CVS Tags: b46
Changes since 1.8: +3 -1 lines
File MIME type: text/x-pascal
・動作試験は{$IF}で分岐

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

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