Develop and Download Open Source Software

Browse CVS Repository

Diff of /gikonavigoeson/gikonavi/Round.pas

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

revision 1.18.2.2 by genyakun, Thu Oct 6 16:05:08 2005 UTC revision 1.22 by h677, Sun Nov 20 14:58:02 2005 UTC
# Line 36  type Line 36  type
36                  procedure AllCancelButtonClick(Sender: TObject);                  procedure AllCancelButtonClick(Sender: TObject);
37                  procedure RoundNameComboBoxChange(Sender: TObject);                  procedure RoundNameComboBoxChange(Sender: TObject);
38                  procedure RoundDeleteButtonClick(Sender: TObject);                  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        procedure RoundListViewColumnRightClick(Sender: TObject;
44          Column: TListColumn; Point: TPoint);
45          private          private
46                  { Private 宣言 }                  { Private 宣言 }
47                    FColumnToSort: Integer;
48                    FSortOrder:     Boolean;
49                  function GetRoundCount: Integer;                  function GetRoundCount: Integer;
50                  procedure SetRoundItem(RoundName: string);                  procedure SetRoundItem(RoundName: string);
51                  function CompareTime(Time1: TDateTime; Time2: TDateTime; MarginMin: Integer): Boolean;                  function CompareTime(Time1: TDateTime; Time2: TDateTime; MarginMin: Integer): Boolean;
# Line 49  type Line 57  type
57  implementation  implementation
58    
59  uses  uses
60          Giko, BoardGroup, RoundData;          Giko, BoardGroup, RoundData, Math, GikoDataModule;
61    
62  {$R *.DFM}  {$R *.DFM}
63    
# Line 63  var Line 71  var
71          RoundItem: TRoundItem;          RoundItem: TRoundItem;
72  begin  begin
73  {$IF Defined(FRCRND) }  {$IF Defined(FRCRND) }
74          Giko.GikoForm.LoginAction.Checked := true; // 動作試験用途          GikoDM.LoginAction.Checked := true; // 動作試験用途
75  {$IFEND}  {$IFEND}
76    
77  {$IFNDEF LOOSENUP}      //巡回制限を緩めることにしてたら{$ELSE}の方を使う  {$IFNDEF LOOSENUP}      //巡回制限を緩めることにしてたら{$ELSE}の方を使う
78          if not Giko.GikoForm.LoginAction.Checked then begin          if not GikoDM.LoginAction.Checked then begin
79                  if GikoSys.Setting.UserID <> '' then begin                  if GikoSys.Setting.UserID <> '' then begin
80                          msg := 'ログインしないと巡回は出来ません' + #13#10                          msg := 'ログインしないと巡回は出来ません' + #13#10
81                                  + '今ログインしますか';                                  + '今ログインしますか';
82                          if MsgBox(Handle, msg, '確認', MB_YESNO or MB_ICONQUESTION or MB_DEFBUTTON2) <> IDYES then begin                          if MsgBox(Handle, msg, '確認', MB_YESNO or MB_ICONQUESTION or MB_DEFBUTTON2) <> IDYES then begin
83                                  Exit;                                  Exit;
84                          end;                          end;
85                          Giko.GikoForm.LoginAction.Execute;                          GikoDM.LoginAction.Execute;
86                  end;                  end;
87                  if not Giko.GikoForm.LoginAction.Checked then begin                  if not GikoDM.LoginAction.Checked then begin
88                          msg := 'ログインしないと巡回は出来ません';                          msg := 'ログインしないと巡回は出来ません';
89                          MsgBox(Handle, msg, 'エラー', MB_OK or MB_ICONSTOP);                          MsgBox(Handle, msg, 'エラー', MB_OK or MB_ICONSTOP);
90                          Exit;                          Exit;
# Line 84  begin Line 92  begin
92          end;          end;
93  {$ELSE}  {$ELSE}
94          //規制を緩めたほうは、スレ一覧のみ巡回可能          //規制を緩めたほうは、スレ一覧のみ巡回可能
95          if not Giko.GikoForm.LoginAction.Checked then begin          if not GikoDM.LoginAction.Checked then begin
96                  if GikoSys.Setting.UserID <> '' then begin                  if GikoSys.Setting.UserID <> '' then begin
97                          msg := 'ログインしないとスレッドの巡回は出来ません' + #13#10                          msg := 'ログインしないとスレッドの巡回は出来ません' + #13#10
98                                  + '今ログインしますか';                                  + '今ログインしますか';
99                          if MsgBox(Handle, msg, '確認', MB_YESNO or MB_ICONQUESTION or MB_DEFBUTTON2) <> IDYES then begin                          if MsgBox(Handle, msg, '確認', MB_YESNO or MB_ICONQUESTION or MB_DEFBUTTON2) <> IDYES then begin
100                                  Exit;                                  Exit;
101                          end;                          end;
102                          Giko.GikoForm.LoginAction.Execute;                          GikoDM.LoginAction.Execute;
103                  end;                  end;
104          end;          end;
105          //●なし巡回は15分以上の間隔を必要とする          //●なし巡回は15分以上の間隔を必要とする
106          if not Giko.GikoForm.LoginAction.Checked then begin          if not GikoDM.LoginAction.Checked then begin
107                  if CompareTime(GikoForm.LastRoundTime, Now, 30) then begin                  if CompareTime(GikoForm.LastRoundTime, Now, 30) then begin
108                          msg := '一度巡回すると30分間巡回は出来ません';                          msg := '一度巡回すると30分間巡回は出来ません';
109                          MsgBox(Handle, msg, 'エラー', MB_OK or MB_ICONSTOP);                          MsgBox(Handle, msg, 'エラー', MB_OK or MB_ICONSTOP);
# Line 114  begin Line 122  begin
122    
123  {$IFNDEF LOOSENUP}  {$IFNDEF LOOSENUP}
124          //●なし巡回は1度に100個までにする          //●なし巡回は1度に100個までにする
125          if not Giko.GikoForm.LoginAction.Checked then begin          if not GikoDM.LoginAction.Checked then begin
126                  if cnt > 100 then begin                  if cnt > 100 then begin
127                          msg := '100個以上は一度に巡回できません';                          msg := '100個以上は一度に巡回できません';
128                          MsgBox(Handle, msg, 'エラー', MB_OK or MB_ICONSTOP);                          MsgBox(Handle, msg, 'エラー', MB_OK or MB_ICONSTOP);
# Line 123  begin Line 131  begin
131          end;          end;
132  {$ENDIF}  {$ENDIF}
133    
         //巡回前に保存  
         RoundList.SaveRoundFile;  
   
134          //巡回に登録されている板の数だけまわす          //巡回に登録されている板の数だけまわす
135          for i := 0 to RoundList.Count[grtBoard] - 1 do begin          for i := 0 to RoundList.Count[grtBoard] - 1 do begin
136                  RoundItem := RoundList.Items[i, grtBoard];                  RoundItem := RoundList.Items[i, grtBoard];
# Line 148  begin Line 153  begin
153                  if not RoundItem.BoolData then Continue;                  if not RoundItem.BoolData then Continue;
154  {$IFDEF LOOSENUP}  {$IFDEF LOOSENUP}
155                  //●なし巡回はスレッドはできないことにする                  //●なし巡回はスレッドはできないことにする
156                  if not Giko.GikoForm.LoginAction.Checked then begin                  if not GikoDM.LoginAction.Checked then begin
157                          msg := 'ログインしないとスレッドの巡回はできません。';                          msg := 'ログインしないとスレッドの巡回はできません。';
158                          MsgBox(Handle, msg, 'エラー', MB_OK or MB_ICONSTOP);                          MsgBox(Handle, msg, 'エラー', MB_OK or MB_ICONSTOP);
159                          break;                          break;
# Line 197  procedure TRoundDialog.FormCreate(Sender Line 202  procedure TRoundDialog.FormCreate(Sender
202  var  var
203          i: Integer;          i: Integer;
204  begin  begin
205            //現在の巡回データをファイルアウトする
206            RoundList.SaveRoundFile;
207          RoundNameComboBox.Items.Add('(すべて)');          RoundNameComboBox.Items.Add('(すべて)');
208          for i := 0 to RoundList.RoundNameList.Count - 1 do          for i := 0 to RoundList.RoundNameList.Count - 1 do
209                  RoundNameComboBox.Items.Add(RoundList.RoundNameList[i]);                  RoundNameComboBox.Items.Add(RoundList.RoundNameList[i]);
# Line 263  end; Line 270  end;
270    
271  procedure TRoundDialog.RoundNameComboBoxChange(Sender: TObject);  procedure TRoundDialog.RoundNameComboBoxChange(Sender: TObject);
272  begin  begin
273            //カラムのソート記号イメージを解除する
274            if FColumnToSort > -1 then
275                    RoundListView.Column[FColumnToSort].ImageIndex := -1;
276            FColumnToSort := -1;
277          if RoundNameComboBox.ItemIndex = 0 then          if RoundNameComboBox.ItemIndex = 0 then
278                  SetRoundItem('')                  SetRoundItem('')
279          else          else
280                  SetRoundItem(RoundNameComboBox.Items[RoundNameComboBox.itemIndex]);                  SetRoundItem(RoundNameComboBox.Items[RoundNameComboBox.itemIndex]);
281    
282  end;  end;
283    
284  procedure TRoundDialog.SetRoundItem(RoundName: string);  procedure TRoundDialog.SetRoundItem(RoundName: string);
# Line 326  begin Line 338  begin
338                                  TThreadItem(RoundItem.Item).Round := false;                                  TThreadItem(RoundItem.Item).Round := false;
339                          end;                          end;
340                          //RoundList.Delete(RoundItem.URL,RoundItem.RoundType);                          //RoundList.Delete(RoundItem.URL,RoundItem.RoundType);
341              {                          {
342                          if RoundItem.RoundType = grtBoard then begin                          if RoundItem.RoundType = grtBoard then begin
343                                  //Board := TBoard( RoundItem.Item );                                  //Board := TBoard( RoundItem.Item );
344                                  RoundList.Delete(RoundItem.URL,RoundItem.RoundType);                                  RoundList.Delete(RoundItem.URL,RoundItem.RoundType);
# Line 338  begin Line 350  begin
350                                  ThreadItem.Round := False;                                  ThreadItem.Round := False;
351                                  ThreadItem.RoundName := '';                                  ThreadItem.RoundName := '';
352                          end;                          end;
353              }                          }
354                          GikoForm.ListView.Refresh;                          GikoForm.ListView.Refresh;
355                  end;                  end;
356                  RoundListView.Selected.Delete;                  RoundListView.Selected.Delete;
# Line 347  begin Line 359  begin
359          end;          end;
360  end;  end;
361    
362    procedure TRoundDialog.RoundListViewColumnClick(Sender: TObject;
363      Column: TListColumn);
364    begin
365            if (Sender is TCustomListView) then begin
366    
367                    if FColumnToSort > -1 then
368                            (Sender as TCustomListView).Column[FColumnToSort].ImageIndex := -1;
369    
370                    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    
380                    FColumnToSort := Column.Index;
381                    (Sender as TCustomListView).AlphaSort;
382            end;
383    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  end.  end.

Legend:
Removed from v.1.18.2.2  
changed lines
  Added in v.1.22

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