Develop and Download Open Source Software

Browse CVS Repository

Diff of /gikonavigoeson/gikonavi/Giko.pas

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

revision 1.605 by h677, Sun Jun 25 13:54:59 2006 UTC revision 1.606 by h677, Sat Jul 1 15:42:31 2006 UTC
# Line 648  type Line 648  type
648                  /// 各所にあるキャビネット・ BBS メニューをセット/更新                  /// 各所にあるキャビネット・ BBS メニューをセット/更新
649                  procedure SetBBSMenu;                  procedure SetBBSMenu;
650                  /// タブ取得                  /// タブ取得
651                  function GetTabURLs(AStringList: TStringList) : Boolean;                  procedure GetTabURLs(AStringList: TStringList);
652                  /// ListColumnPopupMenu アイテムのクリックイベント                  /// ListColumnPopupMenu アイテムのクリックイベント
653                  procedure       ListColumnPopupMenuOnClick( Sender : TObject );                  procedure       ListColumnPopupMenuOnClick( Sender : TObject );
654                  //! 絞り込み文字列設定                  //! 絞り込み文字列設定
# Line 756  type Line 756  type
756                  procedure DownloadList(Board: TBoard; ForceDownload: Boolean = False);                  procedure DownloadList(Board: TBoard; ForceDownload: Boolean = False);
757                  //履歴から削除                  //履歴から削除
758                  procedure DeleteHistory( threadItem: TThreadItem );                  procedure DeleteHistory( threadItem: TThreadItem );
759                  //タブを削除                  //タブを削除 スレッド指定
760                  procedure DeleteTab(ThreadItem: TThreadItem); overload;                  procedure DeleteTab(ThreadItem: TThreadItem); overload;
761                    //タブを削除 ブラウザレコード(タブ)指定
762                  procedure DeleteTab(BrowserRecord: TBrowserRecord); overload;                  procedure DeleteTab(BrowserRecord: TBrowserRecord); overload;
763            // タブ削除(実装部)
764            procedure DeleteTab(index, selectIndex: Integer); overload;
765                  //現在表示しているスレッドをスクロール                  //現在表示しているスレッドをスクロール
766                  procedure BrowserMovement(const AName: string);                  procedure BrowserMovement(const AName: string);
767                  //ApplicationのMainFormを取得する                  //ApplicationのMainFormを取得する
# Line 781  type Line 784  type
784                  //ListViewで選択されているアイテムを取得する                  //ListViewで選択されているアイテムを取得する
785                  procedure SelectListItem(List: TList);                  procedure SelectListItem(List: TList);
786                  /// タブ保存                  /// タブ保存
787                  function SaveTabURLs : Boolean;                  procedure SaveTabURLs;
788                  /// タブ読み出し                  /// タブ読み出し
789                  function LoadTabURLs : Boolean;                  procedure LoadTabURLs;
790                  //指定したレスをコピーする                  //指定したレスをコピーする
791                  procedure KonoresCopy(Number: Integer; ReplaceTag : Boolean);                  procedure KonoresCopy(Number: Integer; ReplaceTag : Boolean);
792                  //                  //
# Line 3674  end; Line 3677  end;
3677    
3678  procedure TGikoForm.DeleteTab(BrowserRecord: TBrowserRecord);  procedure TGikoForm.DeleteTab(BrowserRecord: TBrowserRecord);
3679  var  var
3680          i, j, idx: Integer;          i: Integer;
         doc: Variant;  
3681  begin  begin
         idx := BrowserTab.TabIndex;  
3682          FTabHintIndex := -1;          FTabHintIndex := -1;
3683          for i := 0 to BrowserTab.Tabs.Count - 1 do begin          for i := 0 to BrowserTab.Tabs.Count - 1 do begin
3684                  if TBrowserRecord(BrowserTab.Tabs.Objects[i]) = BrowserRecord then begin                  if TBrowserRecord(BrowserTab.Tabs.Objects[i]) = BrowserRecord then begin
3685                          try              DeleteTab(i, BrowserTab.TabIndex);
3686                                  if TBrowserRecord(BrowserTab.Tabs.Objects[i]).Browser <> nil then begin                          Break;
                                         doc := TBrowserRecord(BrowserTab.Tabs.Objects[i]).Browser.Document;  
                                         TBrowserRecord(BrowserTab.Tabs.Objects[i]).Thread.ScrollTop := doc.Body.ScrollTop;  
                                 end;  
                         except  
                                 TBrowserRecord(BrowserTab.Tabs.Objects[i]).Thread.ScrollTop := 0;  
                         end;  
                         if( FActiveContent = TBrowserRecord(BrowserTab.Tabs.Objects[i]) ) then  
                                 FActiveContent := nil;  
                         if TBrowserRecord(BrowserTab.Tabs.Objects[i]).Browser <> nil then begin  
                                 j := FBrowsers.IndexOf(TBrowserRecord(BrowserTab.Tabs.Objects[i]).Browser);  
                                 if j <> -1 then  
                                         FBrowsers.Move(j, BROWSER_COUNT - 1);  
                         end;  
                         BrowserTab.Tabs.BeginUpdate;  
                         try  
                                 TBrowserRecord(BrowserTab.Tabs.Objects[i]).Free;  
                                 if ( BrowserTab.Tabs.Count - 1 = i ) and  
                                         ( BrowserTab.TabRect(i).Left  
                                                 <= BrowserTab.DisplayRect.Left ) then begin  
                                         BrowserTab.ScrollTabs(-1);  
                                 end;  
                                 BrowserTab.Tabs.Delete(i);  
                                 if idx > i then begin  
                                         BrowserTab.TabIndex := idx - 1;  
                                 end else begin  
                                         if BrowserTab.Tabs.Count -1 >= idx then  
                                                 BrowserTab.TabIndex := idx  
                                         else  
                                                 BrowserTab.TabIndex := BrowserTab.Tabs.Count - 1;  
                                 end;  
                         finally  
                                 BrowserTab.Tabs.EndUpdate;  
                         end;  
                         if BrowserTab.Tabs.Count = 0 then begin  
                                 BrowserNullTab.Thread := nil;  
                         end;  
                         if(BrowserTab.TabIndex <> -1) and  
                                 ( TBrowserRecord(BrowserTab.Tabs.Objects[BrowserTab.TabIndex]).Browser = nil) then begin  
                                 for j := BrowserTab.Tabs.Count - 1 downto 0 do begin  
                                         if(TBrowserRecord(BrowserTab.Tabs.Objects[j]).Browser  
                                                  = TWebBrowser(FBrowsers[BROWSER_COUNT - 1]) )then  
                                         begin  
                                                 ReleaseBrowser(TBrowserRecord(BrowserTab.Tabs.Objects[j]));  
                                                 break;  
                                         end;  
                                 end;  
                                 TBrowserRecord(BrowserTab.Tabs.Objects[BrowserTab.TabIndex]).Browser  
                                          :=  TWebBrowser(FBrowsers[BROWSER_COUNT - 1]);  
                                 TBrowserRecord(BrowserTab.Tabs.Objects[BrowserTab.TabIndex]).Repaint := true;  
                                 FBrowsers.Move(BROWSER_COUNT - 1, 0);  
                         end;  
                         if( FActiveContent = nil) then  
                                 BrowserTab.OnChange(nil);  
                         Exit;  
3687                  end;                  end;
3688          end;          end;
3689  end;  end;
3690  procedure TGikoForm.DeleteTab(ThreadItem: TThreadItem);  procedure TGikoForm.DeleteTab(ThreadItem: TThreadItem);
3691  var  var
3692          i, j, idx: Integer;          i: Integer;
         doc: Variant;  
3693  begin  begin
         idx := BrowserTab.TabIndex;  
3694          FTabHintIndex := -1;          FTabHintIndex := -1;
3695          for i := 0 to BrowserTab.Tabs.Count - 1 do begin          for i := 0 to BrowserTab.Tabs.Count - 1 do begin
3696                  if TBrowserRecord(BrowserTab.Tabs.Objects[i]).Thread = ThreadItem then begin                  if TBrowserRecord(BrowserTab.Tabs.Objects[i]).Thread = ThreadItem then begin
3697                          try              DeleteTab(i, BrowserTab.TabIndex);
3698                                  if TBrowserRecord(BrowserTab.Tabs.Objects[i]).Browser <> nil then begin                          Break;
                                         doc := TBrowserRecord(BrowserTab.Tabs.Objects[i]).Browser.Document;  
                                         TBrowserRecord(BrowserTab.Tabs.Objects[i]).Thread.ScrollTop := doc.Body.ScrollTop;  
   
                                 end;  
                         except  
                                 TBrowserRecord(BrowserTab.Tabs.Objects[i]).Thread.ScrollTop := 0;  
                         end;  
                         if(FActiveContent = TBrowserRecord(BrowserTab.Tabs.Objects[i])) then  
                                 FActiveContent := nil;  
                         if TBrowserRecord(BrowserTab.Tabs.Objects[i]).Browser <> nil then begin  
                                 j := FBrowsers.IndexOf(TBrowserRecord(BrowserTab.Tabs.Objects[i]).Browser);  
                                 if j <> -1 then  
                                         FBrowsers.Move(j, BROWSER_COUNT - 1);  
                         end;  
                         BrowserTab.Tabs.BeginUpdate;  
                         try  
                                 TBrowserRecord(BrowserTab.Tabs.Objects[i]).Free;  
                                 if ( BrowserTab.Tabs.Count - 1 = i ) and  
                                         ( BrowserTab.TabRect(i).Left  
                                                 <= BrowserTab.DisplayRect.Left ) then begin  
                                         BrowserTab.ScrollTabs(-1);  
                                 end;  
                                 BrowserTab.Tabs.Delete(i);  
                                 if idx > i then begin  
                                         BrowserTab.TabIndex := idx - 1;  
                                 end else begin  
                                         if BrowserTab.Tabs.Count -1 >= idx then  
                                                 BrowserTab.TabIndex := idx  
                                         else  
                                                 BrowserTab.TabIndex := BrowserTab.Tabs.Count - 1;  
                                 end;  
                         finally  
                                 BrowserTab.Tabs.EndUpdate;  
                         end;  
                         if(BrowserTab.TabIndex <> -1) and  
                                 ( TBrowserRecord(BrowserTab.Tabs.Objects[BrowserTab.TabIndex]).Browser = nil) then begin  
                                 for j := BrowserTab.Tabs.Count - 1 downto 0 do begin  
                                         if(TBrowserRecord(BrowserTab.Tabs.Objects[j]).Browser  
                                                  = TWebBrowser(FBrowsers[BROWSER_COUNT - 1]) )then  
                                         begin  
                                                 ReleaseBrowser(TBrowserRecord(BrowserTab.Tabs.Objects[j]));  
                                                 break;  
                                         end;  
                                 end;  
                                 TBrowserRecord(BrowserTab.Tabs.Objects[BrowserTab.TabIndex]).Browser  
                                          :=  TWebBrowser(FBrowsers[BROWSER_COUNT - 1]);  
                                 TBrowserRecord(BrowserTab.Tabs.Objects[BrowserTab.TabIndex]).Repaint := true;  
                                 FBrowsers.Move(BROWSER_COUNT - 1, 0);  
                         end;  
   
                         if( FActiveContent = nil) then  
                                 BrowserTab.OnChange(nil);  
                         Exit;  
3699                  end;                  end;
3700          end;          end;
3701  end;  end;
3702    procedure TGikoForm.DeleteTab(index, selectIndex: Integer);
3703    var
3704        doc: Variant;
3705        j: Integer;
3706    begin
3707        try
3708            if TBrowserRecord(BrowserTab.Tabs.Objects[index]).Browser <> nil then begin
3709                doc := TBrowserRecord(BrowserTab.Tabs.Objects[index]).Browser.Document;
3710                TBrowserRecord(BrowserTab.Tabs.Objects[index]).Thread.ScrollTop := doc.Body.ScrollTop;
3711            end;
3712        except
3713            TBrowserRecord(BrowserTab.Tabs.Objects[index]).Thread.ScrollTop := 0;
3714        end;
3715        if(FActiveContent = TBrowserRecord(BrowserTab.Tabs.Objects[index])) then
3716            FActiveContent := nil;
3717        if TBrowserRecord(BrowserTab.Tabs.Objects[index]).Browser <> nil then begin
3718            j := FBrowsers.IndexOf(TBrowserRecord(BrowserTab.Tabs.Objects[index]).Browser);
3719            if j <> -1 then
3720                FBrowsers.Move(j, BROWSER_COUNT - 1);
3721        end;
3722        BrowserTab.Tabs.BeginUpdate;
3723        try
3724            TBrowserRecord(BrowserTab.Tabs.Objects[index]).Free;
3725            if ( BrowserTab.Tabs.Count - 1 = index ) and
3726                ( BrowserTab.TabRect(index).Left
3727                    <= BrowserTab.DisplayRect.Left ) then begin
3728                BrowserTab.ScrollTabs(-1);
3729            end;
3730            BrowserTab.Tabs.Delete(index);
3731            if selectIndex > index then begin
3732                BrowserTab.TabIndex := selectIndex - 1;
3733            end else begin
3734                if BrowserTab.Tabs.Count -1 >= selectIndex then
3735                    BrowserTab.TabIndex := selectIndex
3736                else
3737                    BrowserTab.TabIndex := BrowserTab.Tabs.Count - 1;
3738            end;
3739        finally
3740            BrowserTab.Tabs.EndUpdate;
3741        end;
3742        if(BrowserTab.TabIndex <> -1) and
3743            ( TBrowserRecord(BrowserTab.Tabs.Objects[BrowserTab.TabIndex]).Browser = nil) then begin
3744            for j := BrowserTab.Tabs.Count - 1 downto 0 do begin
3745                if(TBrowserRecord(BrowserTab.Tabs.Objects[j]).Browser
3746                     = TWebBrowser(FBrowsers[BROWSER_COUNT - 1]) )then
3747                begin
3748                    ReleaseBrowser(TBrowserRecord(BrowserTab.Tabs.Objects[j]));
3749                    break;
3750                end;
3751            end;
3752            TBrowserRecord(BrowserTab.Tabs.Objects[BrowserTab.TabIndex]).Browser
3753                 :=  TWebBrowser(FBrowsers[BROWSER_COUNT - 1]);
3754            TBrowserRecord(BrowserTab.Tabs.Objects[BrowserTab.TabIndex]).Repaint := true;
3755            FBrowsers.Move(BROWSER_COUNT - 1, 0);
3756        end;
3757    
3758        if( FActiveContent = nil) then
3759            BrowserTab.OnChange(nil);
3760    end;
3761  function TGikoForm.Hook(var Message: TMessage): Boolean;  function TGikoForm.Hook(var Message: TMessage): Boolean;
3762  begin  begin
3763          //サブフォームがメインメニューを持たないときに、メインフォームの          //サブフォームがメインメニューを持たないときに、メインフォームの
# Line 6962  begin Line 6913  begin
6913                  end;                  end;
6914  end;  end;
6915    
6916  function TGikoForm.GetTabURLs(AStringList: TStringList) : Boolean;  procedure TGikoForm.GetTabURLs(AStringList: TStringList);
6917  var  var
6918    rec : TBrowserRecord;    rec : TBrowserRecord;
6919    i, bound : Integer;    i : Integer;
6920  begin  begin
6921          bound := BrowserTab.Tabs.Count -1;      for i := 0 to BrowserTab.Tabs.Count -1 do begin
6922          if bound = -1 then begin          try
6923                  Result := False;              rec := TBrowserRecord( BrowserTab.Tabs.Objects[ i ] );
6924                  Exit; //forに飛ばないで操作を抜ける              if( rec <> nil) and (rec.Thread <> nil) then
6925          end;                  AStringList.Add( rec.Thread.URL );
6926            except
6927          for i := 0 to bound do begin          end;
6928                  try      end;
                         rec := TBrowserRecord( BrowserTab.Tabs.Objects[ i ] );  
                         if( rec <> nil) and (rec.Thread <> nil) then  
                                 AStringList.Add( rec.Thread.URL );  
                 except  
                 end;  
         end;  
         Result := True;  
6929  end;  end;
6930    
6931  function TGikoForm.SaveTabURLs : Boolean;  procedure TGikoForm.SaveTabURLs;
6932  const  const
6933          Filename = 'tab.sav';          Filename = 'tab.sav';
6934          bFilename = '~tab.sav';          bFilename = '~tab.sav';
6935  var  var
6936          SaveStringList: TStringList;          SaveStringList: TStringList;
6937  begin  begin
         Result := false;  
   
6938          SaveStringList := TStringList.Create;          SaveStringList := TStringList.Create;
6939          try          try
6940                  if GetTabURLs(SaveStringList) then begin                  GetTabURLs(SaveStringList);
6941                          try          try
6942                                  if FileExists( GikoSys.GetAppDir + Filename) then begin              if FileExists( GikoSys.GetAppDir + Filename) then begin
6943                                          if FileExists( GikoSys.GetAppDir + bFilename) then                  CopyFile(PChar(GikoSys.GetAppDir + Filename),
6944                                                  DeleteFile(GikoSys.GetAppDir + bFilename);                      PChar(GikoSys.GetAppDir + bFilename), False);
6945                end;
6946                                          //バックアップを作る。          except
6947                                          RenameFile(GikoSys.GetAppDir + Filename, GikoSys.GetAppDir + bFilename);          end;
6948                                  end;          SaveStringList.SaveToFile(GikoSys.GetAppDir + Filename);
                         except  
                         end;  
                         SaveStringList.SaveToFile(GikoSys.GetAppDir + Filename);  
                         Result := true;  
                 end;  
6949          finally          finally
6950                  SaveStringList.Free;                  SaveStringList.Free;
6951          end;          end;
6952  end;  end;
6953    
6954  function TGikoForm.LoadTabURLs : Boolean;  procedure TGikoForm.LoadTabURLs;
6955  const  const
6956          TABFILE = 'tab.sav';          TABFILE = 'tab.sav';
6957  var  var
# Line 7024  var Line 6961  var
6961          GikoTab                 : TGikoTabAppend;          GikoTab                 : TGikoTabAppend;
6962          fileName                : string;          fileName                : string;
6963  begin  begin
   
         fileName := ExtractFilePath(Application.ExeName) + TABFILE;  
         URLs := TStringList.Create();  
6964          GikoTab := GikoSys.Setting.BrowserTabAppend;          GikoTab := GikoSys.Setting.BrowserTabAppend;
6965        URLs := TStringList.Create();
6966          try          try
6967                  try          fileName := ExtractFilePath(Application.ExeName) + TABFILE;
6968                          Result := True;                  if FileExists(fileName) then begin
6969                          if FileExists(fileName) then begin                      try
6970                                  URLs.LoadFromFile(fileName);                                  URLs.LoadFromFile(fileName);
6971                                  bound    := URLs.Count - 1;                                  bound    := URLs.Count - 1;
6972                                  if bound > -1 then begin                                  if bound > -1 then begin
6973                                          GikoSys.Setting.BrowserTabAppend := gtpLast;//TGikoTabAppend(1);                                          GikoSys.Setting.BrowserTabAppend := gtpLast;
6974                                          for i := 0 to bound do begin                                          for i := 0 to bound do begin
6975                                                  item := BBSsFindThreadFromURL( URLs[ i ] );                                                  item := BBSsFindThreadFromURL( URLs[ i ] );
6976                                                  if item <> nil then                                                  if item <> nil then
# Line 7045  begin Line 6980  begin
6980                                          if BrowserTab.Tabs.Count > 0 then begin                                          if BrowserTab.Tabs.Count > 0 then begin
6981                          BrowserTab.OnChange(nil);                          BrowserTab.OnChange(nil);
6982                                          end;                                          end;
6983                                  end else                                  end else begin
6984                                          Result := False;                      // 空のファイルの場合,バックアップを削除しないために削除
6985                          end else                      DeleteFile(fileName);
6986                                  Result := False;                  end;
6987                  except                  except
6988                          on EFOpenError do begin                          on EFOpenError do ShowMessage('タブファイルが開けません');
6989                                  ShowMessage('タブファイルが開けません');              end;
6990                          end;          end;
                 end;  
6991          finally          finally
6992            URLs.Free;
6993                  GikoSys.Setting.BrowserTabAppend := GikoTab;                  GikoSys.Setting.BrowserTabAppend := GikoTab;
                 URLs.Free;  
6994          end;          end;
6995    
6996  end;  end;

Legend:
Removed from v.1.605  
changed lines
  Added in v.1.606

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