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.298 by h677, Thu May 13 16:59:50 2004 UTC revision 1.299 by h677, Wed May 19 15:07:09 2004 UTC
# Line 28  type Line 28  type
28          TToolBarSettingSenderType = (tssNone, tssMain, tssList, tssBrowser);          TToolBarSettingSenderType = (tssNone, tssMain, tssList, tssBrowser);
29          TMinimizeType = (mtNone, mtMinimizing, mtMinimized);          TMinimizeType = (mtNone, mtMinimizing, mtMinimized);
30    
31            TBrowserRecord = class;
32    
33          TGikoForm = class(TForm)          TGikoForm = class(TForm)
34                  StatusBar: TStatusBar;                  StatusBar: TStatusBar;
35                  MainPanel: TPanel;                  MainPanel: TPanel;
# Line 522  type Line 524  type
524      KoreCopy: TAction;      KoreCopy: TAction;
525      N64: TMenuItem;      N64: TMenuItem;
526      dummy1: TMenuItem;      dummy1: TMenuItem;
     Browser: TWebBrowser;  
527      TreeSelectLogDeletePopupMenu: TMenuItem;      TreeSelectLogDeletePopupMenu: TMenuItem;
528      N65: TMenuItem;      N65: TMenuItem;
529      BBSSelectPopupMenu: TPopupMenu;      BBSSelectPopupMenu: TPopupMenu;
# Line 530  type Line 531  type
531      TmpToolBar: TToolBar;      TmpToolBar: TToolBar;
532      TreeSelectNameCopy: TAction;      TreeSelectNameCopy: TAction;
533      TreeSelectNamePupupMenu: TMenuItem;      TreeSelectNamePupupMenu: TMenuItem;
534        Browser: TWebBrowser;
535        BrowserPanel: TPanel;
536                                  procedure FormCreate(Sender: TObject);                                  procedure FormCreate(Sender: TObject);
537                  procedure FormDestroy(Sender: TObject);                  procedure FormDestroy(Sender: TObject);
538                  procedure CabinetPanelHide(Sender: TObject);                  procedure CabinetPanelHide(Sender: TObject);
# Line 848  type Line 851  type
851      procedure TreeSelectNameCopyExecute(Sender: TObject);      procedure TreeSelectNameCopyExecute(Sender: TObject);
852      procedure FavoriteTreeViewMouseUp(Sender: TObject;      procedure FavoriteTreeViewMouseUp(Sender: TObject;
853        Button: TMouseButton; Shift: TShiftState; X, Y: Integer);        Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
854        procedure ThreadPanelResize(Sender: TObject);
855        procedure OnlyAHundredResUpdate(Sender: TObject);
856          private          private
857                  { Private 宣言 }                  { Private 宣言 }
858          //RoundList : TRoundList;          //RoundList : TRoundList;
# Line 873  type Line 878  type
878                  FItemNoVisible: Boolean;                        //リスト番号表示フラグ                  FItemNoVisible: Boolean;                        //リスト番号表示フラグ
879                  FViewType: TGikoViewType;                       //リストアイテム表示タイプ                  FViewType: TGikoViewType;                       //リストアイテム表示タイプ
880                  FActiveList: TObject;                  FActiveList: TObject;
881                  FActiveContent: TThreadItem;    //                  FActiveContent: TBrowserRecord; //
882                  FActiveBBS : TBBS;                  FActiveBBS : TBBS;
883                  FHistoryList: TList;                                    //ヒストリリスト                  FHistoryList: TList;                                    //ヒストリリスト
884                  FTreeType: TGikoTreeType;                  FTreeType: TGikoTreeType;
# Line 881  type Line 886  type
886                  FNameCookie: string;                  FNameCookie: string;
887                  FMailCookie: string;                  FMailCookie: string;
888  //              FLastRoundTime: TDateTime;  //              FLastRoundTime: TDateTime;
889                  BrowserNullTab: TThreadItem;                  BrowserNullTab: TBrowserRecord;
890  //              DoubleClickOccurred: array [TMouseButton] of Boolean;  //              DoubleClickOccurred: array [TMouseButton] of Boolean;
891                  FDownloadTitle: string;                         //ダウンロード中のタイトル名                  FDownloadTitle: string;                         //ダウンロード中のタイトル名
892                  FDownloadMax: Integer;                          //ダウンロード中の最大サイズ                  FDownloadMax: Integer;                          //ダウンロード中の最大サイズ
# Line 925  type Line 930  type
930                  procedure SetActiveList(Obj: TObject);                  procedure SetActiveList(Obj: TObject);
931                  procedure ListClick;                  procedure ListClick;
932                  procedure ListDoubleClick(Shift: TShiftState);                  procedure ListDoubleClick(Shift: TShiftState);
933                  procedure BrowserMovement(AName: string);                  procedure BrowserMovement(const AName: string); overload;
934                    procedure BrowserMovement(const AName: string; BrowserRecord: TBrowserRecord); overload;
935                  procedure SelectListItem(List: TList);                  procedure SelectListItem(List: TList);
936  //              procedure SetProgressValue(Number: Integer; Value: Integer; Max: Integer = -1);  //              procedure SetProgressValue(Number: Integer; Value: Integer; Max: Integer = -1);
937                  procedure DeleteTab(ThreadItem: TThreadItem);                  procedure DeleteTab(ThreadItem: TThreadItem); overload;
938                    procedure DeleteTab(BrowserRecord: TBrowserRecord); overload;
939                  function Hook(var Message: TMessage): Boolean;                  function Hook(var Message: TMessage): Boolean;
940                  procedure AddRoundNameMenu(MenuItem: TMenuItem);                  procedure AddRoundNameMenu(MenuItem: TMenuItem);
941                  procedure SetSelectItemRound(RoundFlag: Boolean; RoundName: string); overload;                  procedure SetSelectItemRound(RoundFlag: Boolean; RoundName: string); overload;
# Line 951  type Line 958  type
958  //              procedure SetStdToolBar;  //              procedure SetStdToolBar;
959  //              function GetAction(ActionName: string): TContainedAction;  //              function GetAction(ActionName: string): TContainedAction;
960                  procedure SetLinkBar;                  procedure SetLinkBar;
                 procedure ClearLinkBar;  
961                  function GetWidthAllToolButton(ToolBar: TToolBar): Integer;                  function GetWidthAllToolButton(ToolBar: TToolBar): Integer;
962                  procedure MenuBarChevronMenu;                  procedure MenuBarChevronMenu;
963                  procedure LinkBarChevronMenu;                  procedure LinkBarChevronMenu;
# Line 968  type Line 974  type
974                  procedure FavoriteAddTo( SenderNode: TTreeNode; Source: TObject );                  procedure FavoriteAddTo( SenderNode: TTreeNode; Source: TObject );
975                  procedure FavoriteDragDrop( SenderNode: TTreeNode; Source: TObject );                  procedure FavoriteDragDrop( SenderNode: TTreeNode; Source: TObject );
976                  //                  //
                 procedure BrowserTabClick(Sender: TObject);  
977                  procedure SetListViewBackGroundColor(value: TColor);                  procedure SetListViewBackGroundColor(value: TColor);
978                  procedure BBSMenuItemOnClick( Sender : TObject );                  procedure BBSMenuItemOnClick( Sender : TObject );
979                  //                  //
# Line 1023  type Line 1028  type
1028                  property NameCookie: string read FNameCookie write FNameCookie;                  property NameCookie: string read FNameCookie write FNameCookie;
1029                  property MailCookie: string read FMailCookie write FMailCookie;                  property MailCookie: string read FMailCookie write FMailCookie;
1030    
1031                  procedure SetContent(ThreadItem: TThreadItem);                  procedure SetContent(inThread: TBrowserRecord);
1032                  function GetActiveContent: TThreadItem;                  function GetActiveContent: TThreadItem;
1033                  function GetActiveList: TObject;                  function GetActiveList: TObject;
1034    
# Line 1085  type Line 1090  type
1090                  property Data: Pointer read FData write FData;                  property Data: Pointer read FData write FData;
1091          end;          end;
1092    
1093            TBrowserRecord = class( TObject )
1094            private
1095                    FBrowser        : TWebBrowser;
1096                    FEvent: THTMLDocumentEventSink;//ブラウザドキュメントイベント
1097                    FThread         : TThreadItem;
1098                    FLastSize       : Integer;
1099                    FRepaint        : Boolean;
1100                    FOnlyHundred: Boolean;
1101            public
1102                    destructor      Destroy; override;
1103                    property        Browser : TWebBrowser   read FBrowser   write FBrowser;
1104                    property        Thread  : TThreadItem   read FThread    write FThread;
1105                    property        LastSize        : Integer               read FLastSize  write FLastSize;
1106                    property        Repaint         : Boolean               read FRepaint   write FRepaint;
1107                    property        OnlyHundred : Boolean           read FOnlyHundred write FOnlyHundred;
1108            end;
1109    
1110  var  var
1111          GikoForm: TGikoForm;          GikoForm: TGikoForm;
1112    
# Line 1185  begin Line 1207  begin
1207          FTreeType := gttNone;          FTreeType := gttNone;
1208    
1209          FSearchDialog := nil;          FSearchDialog := nil;
1210            BrowserNullTab := TBrowserRecord.Create;
1211            BrowserNullTab.Browser := Browser;
1212          // 起動時に保存されてしまう対策          // 起動時に保存されてしまう対策
1213          FIsIgnoreResize := True;          FIsIgnoreResize := True;
1214    
# Line 1288  begin Line 1311  begin
1311          BrowserTab.Font.Name := GikoSys.Setting.BrowserTabFontName;          BrowserTab.Font.Name := GikoSys.Setting.BrowserTabFontName;
1312          BrowserTab.Font.Size := GikoSys.Setting.BrowserTabFontSize;          BrowserTab.Font.Size := GikoSys.Setting.BrowserTabFontSize;
1313          FDragWFirst := false;          FDragWFirst := false;
1314            SetContent(BrowserNullTab);                                                                                                     //ブラウザを空白表示
1315  //      TreeView.TopItem.Expanded := True;                              //ツリートップ項目だけを開く  //      TreeView.TopItem.Expanded := True;                              //ツリートップ項目だけを開く
1316  //      TreeView.Selected := TreeView.Items[0];         //ツリーのトップ項目を選択する  //      TreeView.Selected := TreeView.Items[0];         //ツリーのトップ項目を選択する
1317          SetContent(nil);                                                                                                        //ブラウザを空白表示  
1318    
1319          //最大化・ウィンドウ位置復元          //最大化・ウィンドウ位置復元
1320          wp.length := sizeof(wp);          wp.length := sizeof(wp);
# Line 1484  begin Line 1507  begin
1507          FHint := TResPopup.Create(Self);          FHint := TResPopup.Create(Self);
1508    
1509          // 最後に選択されたキャビネットの復元          // 最後に選択されたキャビネットの復元
1510          CabinetVisible( False );          CabinetVisible( False );
1511          if GikoSys.Setting.CabinetVisible then begin          if GikoSys.Setting.CabinetVisible then begin
1512                  i := CabinetSelectPopupMenu.Items.Count - 1;                  i := CabinetSelectPopupMenu.Items.Count - 1;
1513                  if GikoSys.Setting.CabinetIndex = i - 1 then                  if GikoSys.Setting.CabinetIndex = i - 1 then
# Line 1527  begin Line 1550  begin
1550    
1551          //Samba24のファイルチェック          //Samba24のファイルチェック
1552          GikoSys.SambaFileExists();          GikoSys.SambaFileExists();
1553    
1554  end;  end;
1555    
1556  // CoolBar の設定を変数に保存  // CoolBar の設定を変数に保存
# Line 1740  begin Line 1764  begin
1764                  GikoSys.Setting.MessegeBarHeight := MessagePanel.Height;                  GikoSys.Setting.MessegeBarHeight := MessagePanel.Height;
1765          except          except
1766          end;          end;
   
1767    // リアルタイムに保存されるので、また、ウィンドウサイズが CoolBar より    // リアルタイムに保存されるので、また、ウィンドウサイズが CoolBar より
1768          // 小さくなっているときに保存すると値が上書きされてしまうのでここでは保存しない          // 小さくなっているときに保存すると値が上書きされてしまうのでここでは保存しない
1769          {          {
# Line 1765  begin Line 1788  begin
1788    
1789          try          try
1790                  //タブクローズ                  //タブクローズ
1791                  //NotSelectTabCloseAction.Execute;  
1792                  {if BrowserTab.Tabs.Count >= 1 then begin                  BrowserNullTab.Thread := nil;
1793                          DeleteTab(TThreadItem(BrowserTab.Tabs.Objects[0]));                  BrowserTab.OnChange := nil;
1794                    BrowserTab.Tabs.BeginUpdate;
1795                    for i := BrowserTab.Tabs.Count - 1 downto 0 do begin
1796                            TBrowserRecord(BrowserTab.Tabs.Objects[i]).Free;
1797                    end;
1798                    FActiveContent := nil;
1799                    BrowserTab.Tabs.Clear;
1800                    BrowserTab.Tabs.EndUpdate;
1801                    BrowserTab.OnChange := BrowserTabChange;
1802            except
1803            end;
1804            try
1805                    if BrowserNullTab <> nil then begin
1806                            BrowserNullTab.Browser := nil;  {*BrowserNullTabのBrowserは設計時に貼り付けてる奴
1807                                                                                             *なのでここでFreeされると困るのではずしてしまう。
1808                                                                                             *}
1809                            BrowserNullTab.Free;
1810                  end;                  end;
         }  
1811          except          except
1812          end;          end;
1813    
# Line 1930  begin Line 1968  begin
1968          //タブクローズ          //タブクローズ
1969          NotSelectTabCloseAction.Execute;          NotSelectTabCloseAction.Execute;
1970          if BrowserTab.Tabs.Count >= 1 then          if BrowserTab.Tabs.Count >= 1 then
1971                  DeleteTab(TThreadItem(BrowserTab.Tabs.Objects[0]));                  for i := BrowserTab.Tabs.Count - 1 downto 0 do
1972                            DeleteTab(TBrowserRecord(BrowserTab.Tabs.Objects[i]));
1973          //TreeViewクリア(BBS2ch.Freeの後にクリアするとXPスタイル時にエラー出る)          //TreeViewクリア(BBS2ch.Freeの後にクリアするとXPスタイル時にエラー出る)
1974          TreeView.Items.Clear;          TreeView.Items.Clear;
1975    
# Line 2420  var Line 2459  var
2459  begin  begin
2460          try          try
2461                  try                  try
2462                          if (FActiveContent <> nil) and (Assigned(Browser.Document)) then begin                          if (FActiveContent <> nil) and (Assigned(TWebBrowser(Sender).Document)) then begin
2463                                  if LowerCase(OleVariant(IHTMLDocument2(Browser.Document)).charset) <> 'shift_jis' then                          //      if LowerCase(OleVariant(IHTMLDocument2(TWebBrowser(Sender).Document)).charset) <> 'shift_jis' then
2464                                          OleVariant(IHTMLDocument2(Browser.Document)).charset := 'shift_jis';                          //              OleVariant(IHTMLDocument2(TWebBrowser(Sender).Document)).charset := 'shift_jis';
2465                          end;                          end;
2466                  except                  except
2467                  end;                  end;
# Line 2542  begin Line 2581  begin
2581                                          wkIntTo := 9999;                                          wkIntTo := 9999;
2582    
2583                                  //ATitle := ActiveFileName <> PathRec.FKey;                                  //ATitle := ActiveFileName <> PathRec.FKey;
2584                                  if GetActiveContent.URL = URL then                                  if (FActiveContent <> nil) and (FActiveContent.Thread.URL = URL) then
2585                                          ATitle := false                                          ATitle := false
2586                                  else                                  else
2587                                          ATitle := true;                                          ATitle := true;
# Line 2763  procedure TGikoForm.ListViewAdvancedCust Line 2802  procedure TGikoForm.ListViewAdvancedCust
2802  var  var
2803          ThreadItem: TThreadItem;          ThreadItem: TThreadItem;
2804  begin  begin
         //  
2805  //      TListView(Sender).Canvas.Font.Style := [];  //      TListView(Sender).Canvas.Font.Style := [];
2806          if TObject(Item.Data) is TThreadItem then begin          if TObject(Item.Data) is TThreadItem then begin
2807                  ThreadItem := TThreadItem(Item.Data);                  ThreadItem := TThreadItem(Item.Data);
# Line 3135  var Line 3173  var
3173          i: Integer;          i: Integer;
3174           //     OldIndex: Integer;           //     OldIndex: Integer;
3175          favItem : TFavoriteThreadItem;          favItem : TFavoriteThreadItem;
3176            newBrowser      : TBrowserRecord;
3177  begin  begin
3178    
3179          if Threaditem = nil then Exit;          if Threaditem = nil then Exit;
3180    
3181          if ThreadItem.IsLogFile then begin          if ThreadItem.IsLogFile then begin
# Line 3144  begin Line 3184  begin
3184                  if not AddHistory( favItem ) then                  if not AddHistory( favItem ) then
3185                          favItem.Free;                          favItem.Free;
3186    
   
3187                  for i := 0 to BrowserTab.Tabs.Count - 1 do begin                  for i := 0 to BrowserTab.Tabs.Count - 1 do begin
3188                          if TObject(BrowserTab.Tabs.Objects[i]) is TThreadItem then begin                          if TObject(BrowserTab.Tabs.Objects[i]) is TBrowserRecord then begin
3189                                  if TThreadItem(BrowserTab.Tabs.Objects[i]) = ThreadItem then begin                                  if TBrowserRecord(BrowserTab.Tabs.Objects[i]).Thread = ThreadItem then begin
3190                                          if ActiveTab then begin                                          if ActiveTab then begin
3191                                                  //OldIndex := BrowserTab.TabIndex;                                                  //OldIndex := BrowserTab.TabIndex;
3192                                                  BrowserTab.TabIndex := i;                                                  BrowserTab.TabIndex := i;
# Line 3162  begin Line 3201  begin
3201    
3202                  if GikoSys.Setting.BrowserTabAppend = gtaFirst then begin                  if GikoSys.Setting.BrowserTabAppend = gtaFirst then begin
3203                          BrowserTab.Tabs.Insert(0, GikoSys.GetShortName(ThreadItem.Title, 20));                          BrowserTab.Tabs.Insert(0, GikoSys.GetShortName(ThreadItem.Title, 20));
3204                          BrowserTab.Tabs.Objects[0] := ThreadItem;                          newBrowser := TBrowserRecord.Create;
3205                          if ActiveTab then                          newBrowser.Browser := TWebBrowser.CreateParented( BrowserPanel.Handle );
3206                            TOleControl(newBrowser.Browser).Parent := BrowserPanel;
3207                            //TOleControl(newBrowser.Browser).Visible := false;
3208                            TOleControl(newBrowser.Browser).Align := alClient;
3209                            newBrowser.Browser.OnDocumentComplete   := BrowserDocumentComplete;
3210                            newBrowser.Browser.OnBeforeNavigate2    := BrowserBeforeNavigate2;
3211                            newBrowser.Browser.OnEnter                              := BrowserEnter;
3212                            newBrowser.Browser.OnNewWindow2                 := BrowserNewWindow2;
3213                            newBrowser.Browser.OnStatusTextChange   := BrowserStatusTextChange;
3214                            newBrowser.Browser.OnTitleChange                := BrowserTitleChange;
3215                            newBrowser.thread := ThreadItem;
3216                            newBrowser.Repaint := false;
3217                            newBrowser.OnlyHundred := GikoSys.OnlyAHundredRes;
3218                            newBrowser.Browser.Navigate( 'about:blank' );
3219                            //ShowWindow(newBrowser.Browser.Handle, SW_SHOWNOACTIVATE);
3220                            //SetWindowPos( newBrowser.Browser.Handle, HWND_TOPMOST, 0, 0, BrowserPanel.Width, BrowserPanel.Height, SWP_NOACTIVATE or SWP_NOZORDER);
3221                            BrowserTab.Tabs.Objects[0] := newBrowser;
3222                            if ActiveTab then begin
3223                                  BrowserTab.TabIndex := 0;                                  BrowserTab.TabIndex := 0;
3224                                    //BrowserTab.OnChange(nil);
3225                            end;
3226    
3227                  end else begin                  end else begin
3228                          i := BrowserTab.Tabs.Add(GikoSys.GetShortName(ThreadItem.Title, 20));                          i := BrowserTab.Tabs.Add(GikoSys.GetShortName(ThreadItem.Title, 20));
3229                          BrowserTab.Tabs.Objects[i] := ThreadItem;                          newBrowser := TBrowserRecord.Create;
3230                          if ActiveTab then                          newBrowser.Browser := TWebBrowser.CreateParented( BrowserPanel.Handle );
3231                            TOleControl(newBrowser.Browser).Parent := BrowserPanel;
3232                            //TOleControl(newBrowser.Browser).Visible := false;
3233                            TOleControl(newBrowser.Browser).Align := alClient;
3234                            newBrowser.Browser.OnDocumentComplete   := BrowserDocumentComplete;
3235                            newBrowser.Browser.OnBeforeNavigate2    := BrowserBeforeNavigate2;
3236                            newBrowser.Browser.OnEnter                              := BrowserEnter;
3237                            newBrowser.Browser.OnNewWindow2                 := BrowserNewWindow2;
3238                            newBrowser.Browser.OnStatusTextChange   := BrowserStatusTextChange;
3239                            newBrowser.Browser.OnTitleChange                := BrowserTitleChange;
3240                            newBrowser.thread := ThreadItem;
3241                            newBrowser.OnlyHundred := GikoSys.OnlyAHundredRes;
3242                            newBrowser.Repaint := false;
3243                            newBrowser.Browser.Navigate( 'about:blank' );
3244                            //ShowWindow(newBrowser.Browser.Handle, SW_SHOWNOACTIVATE);
3245                            //SetWindowPos( newBrowser.Browser.Handle, HWND_TOPMOST, 0, 0, BrowserPanel.Width, BrowserPanel.Height, SWP_NOACTIVATE or SWP_NOZORDER);
3246                            BrowserTab.Tabs.Objects[i] := newBrowser;
3247                            if ActiveTab then begin
3248                                  BrowserTab.TabIndex := i;                                  BrowserTab.TabIndex := i;
3249                                    //BrowserTab.OnChange(nil);
3250                            end;
3251                  end;                  end;
3252                  if ( ActiveTab ) or ( BrowserTab.Tabs.Count = 1 ) then begin                  if ( ActiveTab ) or ( BrowserTab.Tabs.Count = 1 ) then begin
3253                          BrowserTab.OnChange(nil);                          BrowserTab.OnChange(nil);
3254                          BrowserNullTab := nil;                          //BrowserNullTab := nil;
3255                  end;                  end;
3256          end else begin          end else begin
3257                  //OldIndex := BrowserTab.TabIndex;                  //OldIndex := BrowserTab.TabIndex;
3258                  BrowserNullTab := ThreadItem;                  if BrowserNullTab = nil then begin
3259                            BrowserNullTab := TBrowserRecord.Create;
3260                            BrowserNullTab.Browser := Browser;
3261                    end;
3262                    //BrowserNullTab.browser := TWebBrowser.CreateParented( BrowserPanel.Handle );
3263                    BrowserNullTab.thread := ThreadItem;
3264                    BrowserNullTab.Browser.Navigate( 'about:blank' );
3265                    SetWindowPos( BrowserNullTab.Browser.Handle, HWND_TOPMOST, 0, 0, BrowserPanel.Width, BrowserPanel.Height, SWP_NOACTIVATE or SWP_NOZORDER);
3266                  BrowserTab.TabIndex := -1;                  BrowserTab.TabIndex := -1;
3267  //              if OldIndex = -1 then  //              if OldIndex = -1 then
3268                  BrowserTab.OnChange(nil);                  SetContent(BrowserNullTab);
3269                    //BrowserTab.OnChange(nil);
3270          end;          end;
3271          BrowserTab.Repaint;          BrowserTab.Repaint;
3272          if GikoSys.Setting.URLDisplay then          if GikoSys.Setting.URLDisplay then
3273                  AddressComboBox.Text := ThreadItem.URL;                  AddressComboBox.Text := ThreadItem.URL;
3274    
3275  end;  end;
3276    
3277  procedure TGikoForm.SetContent(ThreadItem: TThreadItem);  procedure TGikoForm.SetContent(inThread : TBrowserRecord);
3278  var  var
3279          BBSID: string;          BBSID: string;
3280          FileName: string;          FileName: string;
# Line 3198  var Line 3284  var
3284          s: string;          s: string;
3285  //      OldCursor: TCursor;  //      OldCursor: TCursor;
3286          //i: Integer;          //i: Integer;
3287            ThreadItem      : TThreadItem;
3288            Thread : TBrowserRecord;
3289  begin  begin
3290          while (Browser.ReadyState <> READYSTATE_COMPLETE) and          if inThread = nil then
3291                                  (Browser.ReadyState <> READYSTATE_INTERACTIVE) do begin          begin
3292                  Application.ProcessMessages;                  Thread := TBrowserRecord.Create;
3293                    Thread.Browser := Browser;
3294                    Thread.Thread := nil;
3295            end else begin
3296                    Thread := inThread;
3297          end;          end;
3298    
3299          if (FActiveContent <> nil) and          if (FActiveContent <> nil) and
3300                  (FActiveContent <> ThreadItem) and                  (FActiveContent.Thread <> Thread.Thread) and
3301                  (Assigned(Browser.Document)) then begin                  (Assigned(FActiveContent.Browser.Document)) then begin
3302                  try                  try
3303                  try                  try
3304                          Sleep(1);                          Sleep(1);
3305                          //Application.ProcessMessages;                          //Application.ProcessMessages;
3306                          FActiveContent.ScrollTop := OleVariant(IHTMLDocument2(Browser.Document)).Body.ScrollTop;                          FActiveContent.Thread.ScrollTop := OleVariant(IHTMLDocument2(FActiveContent.Browser.Document)).Body.ScrollTop;
3307                            TOleControl(FActiveContent.Browser).Visible := false;
3308                  except                  except
3309                          on E: Exception do                          on E: Exception do
3310                                  MsgBox(Handle, E.Message, 'SetContent[<-ScrollTop]', 0);                                  MsgBox(Handle, E.Message, 'SetContent[<-ScrollTop]', 0);
# Line 3220  begin Line 3313  begin
3313                  end;                  end;
3314          end;          end;
3315    
3316          FActiveContent := ThreadItem;          while (Thread.Browser.ReadyState <> READYSTATE_COMPLETE) and
3317                                    (Thread.Browser.ReadyState <> READYSTATE_INTERACTIVE) do begin
3318                    Application.ProcessMessages;
3319            end;
3320    
3321            ThreadItem := Thread.Thread;
3322    
3323          if ThreadItem = nil then begin          if Thread.Thread = nil then begin
3324                  Browser.Navigate(BLANK_HTML);                  Thread.Browser.Navigate(BLANK_HTML);
3325                  BrowserBoardNameLabel.Caption := '';                  BrowserBoardNameLabel.Caption := '';
3326                  ItemBoardImage.Picture := nil;                  ItemBoardImage.Picture := nil;
3327                  BrowserNameLabel.Caption := '';                  BrowserNameLabel.Caption := '';
3328                  ItemImage.Picture := nil;                  ItemImage.Picture := nil;
3329                    BrowserNullTab.Thread := nil;
3330                  FActiveContent := nil;                  FActiveContent := nil;
3331                  Exit;                  Exit;
3332          end;          end;
# Line 3245  begin Line 3344  begin
3344                          if ThreadItem.ParentBoard.UnRead < 0 then ThreadItem.ParentBoard.UnRead := 0;                          if ThreadItem.ParentBoard.UnRead < 0 then ThreadItem.ParentBoard.UnRead := 0;
3345                          TreeView.Refresh;                          TreeView.Refresh;
3346                  end;                  end;
   
3347                  if not ThreadItem.IsLogFile then begin                  if not ThreadItem.IsLogFile then begin
3348    
3349                          if (not Assigned(Browser.Document)) then begin                          if (not Assigned(Thread.Browser.Document)) then begin
3350                                  Browser.Navigate('about:blank');                                  Thread.Browser.Navigate('about:blank');
3351                                  while (not Assigned(Browser.Document)) do begin                                  //while (not Assigned(Thread.Browser.Document)) do begin
3352                                          Application.ProcessMessages;                                  //      Application.ProcessMessages;
3353                                  end;                                  //end;
3354                          end;                          end;
3355                          try                          try
3356                                  s := '<HTML><BODY><CENTER>このスレッドは取得していません</CENTER></BODY></HTML>';                                  s := '<HTML><BODY><CENTER>このスレッドは取得していません</CENTER></BODY></HTML>';
3357                                  doc := Browser.Document;                                  doc := Idispatch( olevariant(Thread.Browser.ControlInterface).Document) as IHTMLDocument2;
3358                                  doc.open;                                  doc.open;
3359                                  doc.charset := 'Shift_JIS';                                  doc.charset := 'Shift_JIS';
3360                                  doc.Write(s);                                  doc.Write(s);
# Line 3264  begin Line 3362  begin
3362                          finally                          finally
3363                          end;                          end;
3364                  end else begin                  end else begin
3365                          GikoSys.CreateHTML2(Browser.Document, ThreadItem, sTitle);                          if(ThreadItem.Size <> Thread.LastSize) or (Thread.Repaint) or(Thread.OnlyHundred <> GikoSys.OnlyAHundredRes)then begin
3366                          try                                  Thread.LastSize := ThreadItem.Size;
3367                                  doc := Browser.Document;                                  Thread.Repaint := false;
3368                                  Application.ProcessMessages;                                  try
3369                                  //ここでApplication.ProcessMessagesを呼ぶことによってWebBrowserを更新させる。                                          doc := Idispatch( olevariant(Thread.Browser.ControlInterface).Document) as IHTMLDocument2;
3370                                  //相しないと一画面分しか描画できてないのでそれ以上のスクロール量を指定しても無効になる                                          GikoSys.CreateHTML2(doc, ThreadItem, sTitle);
3371                                  // byもじゅ(2004/01/20)                                          Thread.OnlyHundred := GikoSys.OnlyAHundredRes;
3372                                            Application.ProcessMessages;
3373                                  if ThreadItem.UnRead then                                          {
3374                                          BrowserMovement('new')                                          while (Thread.Browser.ReadyState <> READYSTATE_COMPLETE) and
3375                                                                  else if (ThreadItem.ScrollTop <> 0) and (not ThreadItem.UnRead) then begin                                                  (Thread.Browser.ReadyState <> READYSTATE_INTERACTIVE) do begin
3376                                          try                                                  Application.ProcessMessages;
                                                                                                 doc.Body.ScrollTop := ThreadItem.ScrollTop;  
                                                                                 except  
                                                 on E: Exception do  
                                                         MsgBox(Handle, E.Message, 'SetContent[ScrollTop<-]', 0);  
3377                                          end;                                          end;
3378                                            }
3379                                            //ここでApplication.ProcessMessagesを呼ぶことによってWebBrowserを更新させる。
3380                                            //相しないと一画面分しか描画できてないのでそれ以上のスクロール量を指定しても無効になる
3381                                            // byもじゅ(2004/01/20)
3382    
3383                                            if ThreadItem.UnRead then
3384                                                    BrowserMovement('new', Thread)
3385                                            else if ThreadItem.ScrollTop <> 0 then begin
3386                                                    try
3387                                                            doc.Body.ScrollTop := ThreadItem.ScrollTop;
3388                                                    except
3389                                                            on E: Exception do
3390                                                                    MsgBox(Handle, E.Message, 'SetContent[ScrollTop<-]', 0);
3391                                                    end;
3392                                            end;
3393                                    finally
3394                                             //     Application.ProcessMessages;
3395                                  end;                                  end;
3396                          finally  
3397                             //   Application.ProcessMessages;                                  ThreadItem.UnRead := False;
3398                                    ListView.Refresh;
3399                            end else begin
3400                                    ThreadItem.UnRead := False;
3401                                    ListView.Refresh;
3402                          end;                          end;
3403    
                         ThreadItem.UnRead := False;  
                         ListView.Refresh;  
                 end;  
3404    
3405                    end;
3406                    if(FActiveContent <> nil) and (FActiveContent <> Thread) then begin
3407                            TOleControl(FActiveContent.Browser).Visible := false;
3408                    end;
3409                    FActiveContent := Thread;
3410                    LockWindowUpdate(FActiveContent.Browser.Handle);
3411                    TOleControl(FActiveContent.Browser).Visible := true;
3412                    LockWindowUpdate(0);
3413                  BrowserBoardNameLabel.Caption := ThreadItem.ParentBoard.Title;                  BrowserBoardNameLabel.Caption := ThreadItem.ParentBoard.Title;
3414                  ItemIcon16.GetBitmap(4, ItemBoardImage.Picture.Bitmap);                  ItemIcon16.GetBitmap(4, ItemBoardImage.Picture.Bitmap);
3415                  BrowserNameLabel.Caption := ThreadItem.Title;                  BrowserNameLabel.Caption := ThreadItem.Title;
# Line 3304  begin Line 3424  begin
3424    
3425                  ItemImage.Left := BrowserBoardNameLabel.Left + BrowserBoardNameLabel.Width + 8;                  ItemImage.Left := BrowserBoardNameLabel.Left + BrowserBoardNameLabel.Width + 8;
3426                  BrowserNameLabel.Left := ItemImage.Left + 20;                  BrowserNameLabel.Left := ItemImage.Left + 20;
3427    
3428          finally          finally
3429                  Screen.Cursor := crDefault;                  Screen.Cursor := crDefault;
3430          end;          end;
3431  end;  end;
3432    
3433  function TGikoForm.GetActiveContent: TThreadItem;  function TGikoForm.GetActiveContent: TThreadItem;
3434  var  //var
3435          Index: Integer;          //Index: Integer;
3436  begin  begin
3437            if FActiveContent <> nil then
3438                    Result := FActiveContent.Thread
3439            else
3440            Result := nil;
3441            {
3442          Result := nil;          Result := nil;
3443          if BrowserTab.TabIndex = -1 then begin          if BrowserTab.TabIndex = -1 then begin
3444                  Result := BrowserNullTab;                  try
3445                            if (BrowserNullTab <> nil )and (BrowserNullTab.Thread <> nil )then
3446                                    Result := BrowserNullTab.Thread;
3447                    except
3448                    end;
3449                  Exit;                  Exit;
3450          end;          end;
3451          Index := BrowserTab.TabIndex;          Index := BrowserTab.TabIndex;
3452          if BrowserTab.Tabs.Objects[Index] is TThreadItem then          if(TObject(BrowserTab.Tabs.Objects[Index]) is TBrowserRecord) and
3453                  Result := TThreadItem(BrowserTab.Tabs.Objects[Index]);                  (TBrowserRecord(BrowserTab.Tabs.Objects[Index]).Thread <> nil) then
3454                            Result := TBrowserRecord(BrowserTab.Tabs.Objects[Index]).Thread;
3455            }
3456  //      Result := FActiveContent;  //      Result := FActiveContent;
3457  end;  end;
3458    
# Line 4075  begin Line 4206  begin
4206                  //TreeViewChange(nil, TreeView.Selected);                  //TreeViewChange(nil, TreeView.Selected);
4207          end else if TObject(ListView.Selected.Data) is TThreadItem then begin          end else if TObject(ListView.Selected.Data) is TThreadItem then begin
4208                  //if TObject(ListView.Selected.Data) is TThreadItem then begin                  //if TObject(ListView.Selected.Data) is TThreadItem then begin
4209              Application.ProcessMessages;                          Application.ProcessMessages;
4210                          ThreadItem := TThreadItem(ListView.Selected.Data);                          ThreadItem := TThreadItem(ListView.Selected.Data);
4211                          DownloadContent(ThreadItem, shiftDown);                          DownloadContent(ThreadItem, shiftDown);
4212                  //end;                  //end;
4213          end;          end;
4214  end;  end;
4215    procedure TGikoForm.BrowserMovement(const AName: string; BrowserRecord: TBrowserRecord);
4216    var
4217            top: Integer;
4218            item: OleVariant;
4219            nm: OleVariant;
4220            activeBrower :TWebBrowser;
4221    begin
4222    //      OleVariant(Browser.Document).parentWindow.location.hash := AName;
4223    
4224            while (BrowserRecord.Browser.ReadyState <> READYSTATE_COMPLETE) and
4225                                    (BrowserRecord.Browser.ReadyState <> READYSTATE_INTERACTIVE) do begin
4226                    Application.ProcessMessages;
4227            end;
4228    
4229  procedure TGikoForm.BrowserMovement(AName: string);          // Access Violation が起きる事があるので今後要チェック
4230            if(BrowserRecord <> nil) and (BrowserRecord.FBrowser <> nil) then begin
4231                    activeBrower := BrowserRecord.FBrowser;
4232                    try
4233                            top := 0;
4234                            nm := AName;
4235                            item := OleVariant( activeBrower.Document as IHTMLDocument2).anchors.item(nm);
4236                            repeat
4237                                    top := top + item.offsetTop;
4238                                    item := item.offsetParent;
4239                            until AnsiCompareText(item.tagName, 'body' ) = 0;
4240    
4241                            OleVariant(activeBrower.Document as IHTMLDocument2).body.scrollTop := top;
4242                    except
4243                    end;
4244            end;
4245    end;
4246    
4247    procedure TGikoForm.BrowserMovement(const AName: string);
4248  var  var
4249      top: Integer;          top: Integer;
4250      item: OleVariant;          item: OleVariant;
4251          nm: OleVariant;          nm: OleVariant;
4252            activeBrower :TWebBrowser;
4253  begin  begin
4254  //      OleVariant(Browser.Document).parentWindow.location.hash := AName;  //      OleVariant(Browser.Document).parentWindow.location.hash := AName;
4255      {          {
4256          while (Browser.ReadyState <> READYSTATE_COMPLETE) and          while (Browser.ReadyState <> READYSTATE_COMPLETE) and
4257                                  (Browser.ReadyState <> READYSTATE_INTERACTIVE) do begin                                  (Browser.ReadyState <> READYSTATE_INTERACTIVE) do begin
4258                  Application.ProcessMessages;                  Application.ProcessMessages;
4259          end;          end;
4260      }          }
4261          // Access Violation が起きる事があるので今後要チェック          // Access Violation が起きる事があるので今後要チェック
4262          try          if(BrowserTab.Tabs.Count > 0) and (BrowserTab.TabIndex >= 0) then begin
4263                  top := 0;                  activeBrower := FActiveContent.Browser;
4264                  nm := AName;                  try
4265                  item := OleVariant( Browser.Document as IHTMLDocument2).anchors.item(nm);                          top := 0;
4266                  repeat                          nm := AName;
4267                          top := top + item.offsetTop;                          item := OleVariant( activeBrower.Document as IHTMLDocument2).anchors.item(nm);
4268                          item := item.offsetParent;                          repeat
4269                  until AnsiCompareText(item.tagName, 'body' ) = 0;                                  top := top + item.offsetTop;
4270                                    item := item.offsetParent;
4271                            until AnsiCompareText(item.tagName, 'body' ) = 0;
4272    
4273                  OleVariant(Browser.Document as IHTMLDocument2).body.scrollTop := top;                          OleVariant(activeBrower.Document as IHTMLDocument2).body.scrollTop := top;
4274          except                  except
4275                    end;
4276          end;          end;
4277  end;  end;
4278    
# Line 4897  begin Line 5063  begin
5063          if FIsMinimize = mtMinimized then begin          if FIsMinimize = mtMinimized then begin
5064                  if FActiveContent <> nil then begin                  if FActiveContent <> nil then begin
5065                          Application.ProcessMessages;                          Application.ProcessMessages;
5066                          doc := Browser.Document;                          doc := Idispatch( olevariant(FActiveContent.Browser.ControlInterface).Document) as IHTMLDocument2;
5067                          doc.Body.ScrollTop := FActiveContent.ScrollTop;                          doc.Body.ScrollTop := FActiveContent.Thread.ScrollTop;
5068                          FIsMinimize := mtNone;                          FIsMinimize := mtNone;
5069                  end;                  end;
5070          end;          end;
# Line 5043  begin Line 5209  begin
5209                  List.Free;                  List.Free;
5210          end;          end;
5211  end;  end;
5212    procedure TGikoForm.DeleteTab(BrowserRecord: TBrowserRecord);
5213    var
5214            i: Integer;
5215            doc: Variant;
5216    begin
5217            FTabHintIndex := -1;
5218            for i := 0 to BrowserTab.Tabs.Count - 1 do begin
5219                    if TBrowserRecord(BrowserTab.Tabs.Objects[i]) = BrowserRecord then begin
5220                            BrowserTab.Tabs.BeginUpdate;
5221                            try
5222                                    doc := TBrowserRecord(BrowserTab.Tabs.Objects[i]).Browser.Document;
5223                                    TBrowserRecord(BrowserTab.Tabs.Objects[i]).Thread.ScrollTop := doc.Body.ScrollTop;
5224                            except
5225                                    TBrowserRecord(BrowserTab.Tabs.Objects[i]).Thread.ScrollTop := 0;
5226                            end;
5227                            if( FActiveContent = TBrowserRecord(BrowserTab.Tabs.Objects[i]) ) then
5228                    FActiveContent := nil;
5229                            TBrowserRecord(BrowserTab.Tabs.Objects[i]).Free;
5230                            BrowserTab.Tabs.Delete(i);
5231                            if i > (BrowserTab.Tabs.Count - 1) then
5232                                    BrowserTab.TabIndex := BrowserTab.Tabs.Count - 1
5233                            else
5234                                    BrowserTab.TabIndex := i;
5235                            if BrowserTab.Tabs.Count = 0 then begin
5236                                    BrowserNullTab.Thread := nil;
5237                            end;
5238                            BrowserTab.Tabs.EndUpdate;
5239                            BrowserTab.OnChange(nil);
5240                            Exit;
5241                    end;
5242            end;
5243    end;
5244  procedure TGikoForm.DeleteTab(ThreadItem: TThreadItem);  procedure TGikoForm.DeleteTab(ThreadItem: TThreadItem);
5245  var  var
5246          i: Integer;          i: Integer;
5247            doc: Variant;
5248  begin  begin
5249          FTabHintIndex := -1;          FTabHintIndex := -1;
5250          for i := 0 to BrowserTab.Tabs.Count - 1 do begin          for i := 0 to BrowserTab.Tabs.Count - 1 do begin
5251                  if TThreadItem(BrowserTab.Tabs.Objects[i]) = ThreadItem then begin                  if TBrowserRecord(BrowserTab.Tabs.Objects[i]).Thread = ThreadItem then begin
5252                            BrowserTab.Tabs.BeginUpdate;
5253                            try
5254                                    doc := TBrowserRecord(BrowserTab.Tabs.Objects[i]).Browser.Document;
5255                                    TBrowserRecord(BrowserTab.Tabs.Objects[i]).Thread.ScrollTop := doc.Body.ScrollTop;
5256                            except
5257                                    TBrowserRecord(BrowserTab.Tabs.Objects[i]).Thread.ScrollTop := 0;
5258                            end;
5259                            if(FActiveContent = TBrowserRecord(BrowserTab.Tabs.Objects[i])) then
5260                    FActiveContent := nil;
5261                            TBrowserRecord(BrowserTab.Tabs.Objects[i]).Free;
5262                          BrowserTab.Tabs.Delete(i);                          BrowserTab.Tabs.Delete(i);
5263                          if i > (BrowserTab.Tabs.Count - 1) then                          if i > (BrowserTab.Tabs.Count - 1) then
5264                                  BrowserTab.TabIndex := BrowserTab.Tabs.Count - 1                                  BrowserTab.TabIndex := BrowserTab.Tabs.Count - 1
5265                          else                          else
5266                                  BrowserTab.TabIndex := i;                                  BrowserTab.TabIndex := i;
5267                          if BrowserTab.Tabs.Count = 0 then                          if BrowserTab.Tabs.Count = 0 then begin
5268                                  SetContent(nil)                                  BrowserNullTab.Thread := nil;
5269                          else if BrowserTab.TabIndex <> -1 then                          end;
5270                                  SetContent(TThreadItem(BrowserTab.Tabs.Objects[BrowserTab.TabIndex]));                          BrowserTab.Tabs.EndUpdate;
5271                            BrowserTab.OnChange(nil);
5272                          Exit;                          Exit;
5273                  end;                  end;
5274          end;          end;
# Line 5069  procedure TGikoForm.KokomadeActionExecut Line 5278  procedure TGikoForm.KokomadeActionExecut
5278  var  var
5279          No: Integer;          No: Integer;
5280          ThreadItem: TThreadItem;          ThreadItem: TThreadItem;
         sTitle: string;  
         ScrollTop: Integer;  
         doc: Variant;  
5281  begin  begin
5282          No := KokoPopupMenu.Tag;          No := KokoPopupMenu.Tag;
5283          if No = 0 then Exit;          if No = 0 then Exit;
5284          ThreadItem := GetActiveContent;          ThreadItem := GetActiveContent;
5285          if ThreadItem = nil then Exit;          if ThreadItem = nil then Exit;
5286          ThreadItem.Kokomade := No;          ThreadItem.Kokomade := No;
5287          doc := Browser.Document;          FActiveContent.Thread.ScrollTop := OleVariant(IHTMLDocument2(FActiveContent.Browser.Document)).Body.ScrollTop;
5288          ScrollTop := doc.Body.ScrollTop;          FActiveContent.FRepaint := true;
5289            InsertBrowserTab(FActiveContent.Thread, true);
         GikoSys.CreateHTML2(doc, ThreadItem, sTitle);  
 //      HtmlName := GikoSys.CreateHTML(ThreadItem, sTitle) + '#koko';  
 //      Flags := 2;  
 //      Browser.Navigate(HtmlName, Flags);  
 //      Sleep(10);  
5290          Application.ProcessMessages;          Application.ProcessMessages;
         doc.Body.ScrollTop := ScrollTop;  
5291  end;  end;
5292    
5293  procedure TGikoForm.ZenbuActionExecute(Sender: TObject);  procedure TGikoForm.ZenbuActionExecute(Sender: TObject);
5294  var  var
5295          ThreadItem: TThreadItem;          ThreadItem: TThreadItem;
         sTitle: string;  
         ScrollTop: Integer;  
         doc: Variant;  
5296  begin  begin
5297          ThreadItem := GetActiveContent;          ThreadItem := GetActiveContent;
5298          if ThreadItem = nil then Exit;          if ThreadItem = nil then Exit;
5299          ThreadItem.Kokomade := -1;          ThreadItem.Kokomade := -1;
5300          doc := Browser.Document;          FActiveContent.Thread.ScrollTop := OleVariant(IHTMLDocument2(FActiveContent.Browser.Document)).Body.ScrollTop;
5301          ScrollTop := doc.Body.ScrollTop;          FActiveContent.FRepaint := true;
5302          GikoSys.CreateHTML2(doc, ThreadItem, sTitle);          InsertBrowserTab(FActiveContent.Thread, true);
 //      HtmlName := GikoSys.CreateHTML(ThreadItem, sTitle) + '#koko';  
 //      Flags := 2;  
 //      Browser.Navigate(HtmlName, Flags);  
 //      Sleep(10);  
5303          Application.ProcessMessages;          Application.ProcessMessages;
         doc.Body.ScrollTop := ScrollTop;  
5304  end;  end;
5305    
5306  function TGikoForm.Hook(var Message: TMessage): Boolean;  function TGikoForm.Hook(var Message: TMessage): Boolean;
# Line 5300  end; Line 5492  end;
5492  procedure TGikoForm.BrowserTabCloseActionExecute(Sender: TObject);  procedure TGikoForm.BrowserTabCloseActionExecute(Sender: TObject);
5493  var  var
5494          idx: Integer;          idx: Integer;
5495          ThreadItem: TThreadItem;  //      ThreadItem: TThreadItem;
5496  begin  begin
5497          idx := BrowserTab.TabIndex;          idx := BrowserTab.TabIndex;
5498          if idx <> -1 then begin          if idx <> -1 then begin
5499                  if BrowserTab.Tabs.Objects[idx] <> nil then begin                  if BrowserTab.Tabs.Objects[idx] <> nil then begin
5500                          ThreadItem := TThreadItem(BrowserTab.Tabs.Objects[idx]);                          //ThreadItem := TThreadItem(BrowserTab.Tabs.Objects[idx]);
5501                          DeleteTab(ThreadItem);                          DeleteTab(TBrowserRecord(BrowserTab.Tabs.Objects[idx]));
5502                  end;                  end;
5503          end;          end;
5504  end;  end;
# Line 5314  end; Line 5506  end;
5506  procedure TGikoForm.NotSelectTabCloseActionExecute(Sender: TObject);  procedure TGikoForm.NotSelectTabCloseActionExecute(Sender: TObject);
5507  var  var
5508          i: Integer;          i: Integer;
5509            idx: Integer;
5510  begin  begin
5511          for i := BrowserTab.Tabs.Count - 1 downto 0 do begin          idx := BrowserTab.TabIndex;
5512                  if BrowserTab.TabIndex <> i then begin          if idx = -1 then Exit;
5513            BrowserTab.Tabs.BeginUpdate;
5514            for i := BrowserTab.Tabs.Count - 1 downto BrowserTab.TabIndex + 1 do begin
5515                    TBrowserRecord(BrowserTab.Tabs.Objects[i]).Free;
5516                    BrowserTab.Tabs.Delete(i);
5517            end;
5518            if idx > 0 then begin
5519                    for i := BrowserTab.TabIndex - 1 downto 0 do begin
5520                            TBrowserRecord(BrowserTab.Tabs.Objects[i]).Free;
5521                          BrowserTab.Tabs.Delete(i);                          BrowserTab.Tabs.Delete(i);
5522                  end;                  end;
5523          end;          end;
5524            BrowserTab.Tabs.EndUpdate;
5525  end;  end;
5526    
5527  procedure TGikoForm.AllTabCloseActionExecute(Sender: TObject);  procedure TGikoForm.AllTabCloseActionExecute(Sender: TObject);
5528  var  var
5529          i: Integer;          i: Integer;
5530  begin  begin
5531      SetContent(nil);          //SetContent(BrowserNullTab);
5532            FActiveContent := nil;
5533            BrowserNullTab.Thread := nil;
5534          BrowserTab.OnChange := nil;          BrowserTab.OnChange := nil;
5535          for i := BrowserTab.Tabs.Count - 1 downto 0 do          BrowserTab.Tabs.BeginUpdate;
5536                  BrowserTab.Tabs.Delete(i);          for i := BrowserTab.Tabs.Count - 1 downto 0 do begin
5537                    TBrowserRecord(BrowserTab.Tabs.Objects[i]).Free;
5538            end;
5539            BrowserTab.Tabs.Clear;
5540            BrowserTab.Tabs.EndUpdate;
5541          BrowserTab.OnChange := BrowserTabChange;          BrowserTab.OnChange := BrowserTabChange;
5542            SetContent(BrowserNullTab);
5543  end;  end;
5544    
5545  procedure TGikoForm.TreeSelectBoradReloadExecute(Sender: TObject);  procedure TGikoForm.TreeSelectBoradReloadExecute(Sender: TObject);
# Line 5624  begin Line 5832  begin
5832                  BrowserTab.Hint := '';                  BrowserTab.Hint := '';
5833                  idx := BrowserTab.TabIndex;                  idx := BrowserTab.TabIndex;
5834                  if idx = -1 then begin                  if idx = -1 then begin
5835                            BrowserNullTab.Thread := nil;
5836                          SetContent(BrowserNullTab);                          SetContent(BrowserNullTab);
5837                  end else if(BrowserTab.Tabs.Objects[idx] <> nil) and (BrowserTab.Tabs.Objects[idx] is TThreadItem) then begin  
5838                          ThreadItem := TThreadItem(BrowserTab.Tabs.Objects[idx]);                  end else if(BrowserTab.Tabs.Objects[idx] <> nil) and (BrowserTab.Tabs.Objects[idx] is TBrowserRecord) then begin
5839                          SetContent(ThreadItem);                          ThreadItem := TBrowserRecord(BrowserTab.Tabs.Objects[idx]).Thread;
5840                            GikoSys.OnlyAHundredRes := TBrowserRecord(BrowserTab.Tabs.Objects[idx]).OnlyHundred;
5841                            OnlyAHundredRes.Checked := TBrowserRecord(BrowserTab.Tabs.Objects[idx]).OnlyHundred;
5842                            SetContent(TBrowserRecord(BrowserTab.Tabs.Objects[idx]));
5843    
5844                          if GikoSys.Setting.URLDisplay then                          if GikoSys.Setting.URLDisplay then
5845                                  AddressComboBox.Text := ThreadItem.URL;                                  AddressComboBox.Text := ThreadItem.URL;
5846                  end;                  end;
# Line 5638  begin Line 5851  begin
5851                                  if GikoSys.Setting.ListWidthState = glsMin then begin                                  if GikoSys.Setting.ListWidthState = glsMin then begin
5852                                          BrowserMaxAction.Execute;                                          BrowserMaxAction.Execute;
5853                                          if GikoForm.Visible then                                          if GikoForm.Visible then
5854                                                  Browser.SetFocus;                                                  SetContent(TBrowserRecord(BrowserTab.Tabs.Objects[idx]));
5855                                  end;                                  end;
5856                          end else begin                          end else begin
5857                                  if GikoSys.Setting.ListHeightState = glsMin then begin                                  if GikoSys.Setting.ListHeightState = glsMin then begin
5858                                          BrowserMaxAction.Execute;                                          BrowserMaxAction.Execute;
5859                                          if GikoForm.Visible then                                          if GikoForm.Visible then
5860                                                  Browser.SetFocus;                                                  SetContent(TBrowserRecord(BrowserTab.Tabs.Objects[idx]));
5861                                  end;                                  end;
5862                          end;                          end;
5863                  end;                  end;
# Line 5652  begin Line 5865  begin
5865    
5866  end;  end;
5867    
 procedure TGikoForm.BrowserTabClick(Sender: TObject);  
 var  
         idx: Integer;  
         ThreadItem: TThreadItem;  
 begin  
 //      if NewTab = -1 then  
         FTabHintIndex := -1;  
         BrowserTab.Hint := '';  
         idx := BrowserTab.TabIndex;  
         if idx = -1 then  
                 SetContent(BrowserNullTab)  
         else if(BrowserTab.Tabs.Objects[idx] <> nil) and (BrowserTab.Tabs.Objects[idx] is TThreadItem) then begin  
                 ThreadItem := TThreadItem(BrowserTab.Tabs.Objects[idx]);  
                 SetContent(ThreadItem);  
                 if GikoSys.Setting.URLDisplay then  
                         AddressComboBox.Text := ThreadItem.URL;  
         end;  
 end;  
5868    
5869  procedure TGikoForm.BrowserTabMouseDown(Sender: TObject;  procedure TGikoForm.BrowserTabMouseDown(Sender: TObject;
5870          Button: TMouseButton; Shift: TShiftState; X, Y: Integer);          Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
# Line 5687  begin Line 5882  begin
5882                  idx := BrowserTab.IndexOfTabAt(p.X, p.Y);                  idx := BrowserTab.IndexOfTabAt(p.X, p.Y);
5883                  if idx <> -1 then begin                  if idx <> -1 then begin
5884                          OldIndex := BrowserTab.TabIndex;                          OldIndex := BrowserTab.TabIndex;
5885                          BrowserTab.Tabs.Delete(idx);                          DeleteTab(TBrowserRecord(BrowserTab.Tabs.Objects[idx]));
5886                          if idx = OldIndex then begin                          if idx = OldIndex then begin
5887                                  if BrowserTab.Tabs.Count > idx then                                  if BrowserTab.Tabs.Count > idx then
5888                                          BrowserTab.TabIndex := idx                                          BrowserTab.TabIndex := idx
# Line 5696  begin Line 5891  begin
5891                                  else if BrowserTab.Tabs.Count > 0 then                                  else if BrowserTab.Tabs.Count > 0 then
5892                                          BrowserTab.TabIndex := 0;                                          BrowserTab.TabIndex := 0;
5893                                  BrowserTab.OnChange(nil);                                  BrowserTab.OnChange(nil);
5894    
5895                          end;                          end;
5896                  end;                  end;
5897          //end else if Button = mbRight then begin          //end else if Button = mbRight then begin
# Line 5821  begin Line 6017  begin
6017    
6018          if (FTabHintIndex <> TabIdx) and (TabIdx <> -1) then begin          if (FTabHintIndex <> TabIdx) and (TabIdx <> -1) then begin
6019                  Application.CancelHint;                  Application.CancelHint;
6020                  ThreadItem := TThreadItem(BrowserTab.Tabs.Objects[TabIdx]);                  ThreadItem := TBrowserRecord(BrowserTab.Tabs.Objects[TabIdx]).Thread;
6021                  if ThreadItem.Title <> BrowserTab.Tabs[TabIdx] then begin                  if ThreadItem.Title <> BrowserTab.Tabs[TabIdx] then begin
6022                          BrowserTab.Hint := ThreadItem.Title;                          BrowserTab.Hint := ThreadItem.Title;
6023                          Application.ShowHint := True;                          Application.ShowHint := True;
# Line 5838  procedure TGikoForm.BrowserDocumentCompl Line 6034  procedure TGikoForm.BrowserDocumentCompl
6034          const pDisp: IDispatch; var URL: OleVariant);          const pDisp: IDispatch; var URL: OleVariant);
6035  var  var
6036          FDispHtmlDocument: DispHTMLDocument;          FDispHtmlDocument: DispHTMLDocument;
6037            BrowserRecord :TBrowserRecord;
6038            i :Integer;
6039  begin  begin
6040  //      AddMessageList('DocumentComplete', nil);  //      AddMessageList('DocumentComplete', nil);
6041          FBrowserComplete := True;          if TObject(Sender) is TWebBrowser then begin
6042          if FEvent <> nil then                  BrowserRecord := nil;
6043                  FEvent.Free;                  for i := BrowserTab.Tabs.Count - 1 downto 0 do begin
6044          FDispHtmlDocument := Browser.Document as DispHTMLDocument;                          if TBrowserRecord(BrowserTab.Tabs.Objects[i]).Browser = TWebBrowser(Sender) then begin
6045          FEvent := THTMLDocumentEventSink.Create(Self, FDispHtmlDocument, HTMLDocumentEvents2);                                          BrowserRecord := TBrowserRecord(BrowserTab.Tabs.Objects[i]);
6046          FEvent.OnContextMenu := OnDocumentContextMenu;                                          break;
6047                            end;
6048                    end;
6049                    if BrowserRecord <> nil then begin
6050                            FBrowserComplete := True;
6051                            if BrowserRecord.FEvent <> nil then
6052                                    BrowserRecord.FEvent.Free;
6053                            FDispHtmlDocument := BrowserRecord.Browser.Document as DispHTMLDocument;
6054                            BrowserRecord.FEvent := THTMLDocumentEventSink.Create(Self, FDispHtmlDocument, HTMLDocumentEvents2);
6055                            BrowserRecord.FEvent.OnContextMenu := OnDocumentContextMenu;
6056                    end;
6057            end;
6058  end;  end;
6059    
6060  procedure TGikoForm.SelectReservActionUpdate(Sender: TObject);  procedure TGikoForm.SelectReservActionUpdate(Sender: TObject);
# Line 6019  begin Line 6227  begin
6227                  AddMessageList('ログアウトしました', nil, gmiOK);                  AddMessageList('ログアウトしました', nil, gmiOK);
6228                  LoginAction.Caption := 'ログイン(&L)';                  LoginAction.Caption := 'ログイン(&L)';
6229          end else begin          end else begin
6230            GikoSys.Dolib.DolibURL := GikoSys.Setting.DolibURL;
6231                  TmpCursor := Screen.Cursor;                  TmpCursor := Screen.Cursor;
6232                  Screen.Cursor := crHourGlass;                  Screen.Cursor := crHourGlass;
6233                  try                  try
# Line 6214  begin Line 6423  begin
6423                                  if MsgBox(Handle, DEL_MSG, DEL_TITLE, MB_YESNO or MB_ICONQUESTION or MB_DEFBUTTON2) <> IDYES then                                  if MsgBox(Handle, DEL_MSG, DEL_TITLE, MB_YESNO or MB_ICONQUESTION or MB_DEFBUTTON2) <> IDYES then
6424                                  Exit;                                  Exit;
6425                          ThreadItem := TThreadItem(BrowserTab.Tabs.Objects[idx]);                          ThreadItem := TThreadItem(BrowserTab.Tabs.Objects[idx]);
6426                          DeleteTab(ThreadItem);                          DeleteTab(TBrowserRecord(BrowserTab.Tabs.Objects[idx]));
6427                          ThreadItem.DeleteLogFile;                          ThreadItem.DeleteLogFile;
6428                          if ThreadItem.ParentBoard = FActiveList then                          if ThreadItem.ParentBoard = FActiveList then
6429                                  ListView.Refresh;                                  ListView.Refresh;
# Line 7341  begin Line 7550  begin
7550                  FIsIgnoreResize := oldIgnoreResize;                  FIsIgnoreResize := oldIgnoreResize;
7551          end;          end;
7552  end;  end;
 procedure TGikoForm.ClearLinkBar;  
 var  
         i: Integer;  
 begin  
         MainCoolBar.Bands.BeginUpdate;  
         try  
         if LinkBarPopupMenu.Items.Count > 0 then  
                         LinkBarPopupMenu.Items.Clear;  
                 for i := LinkToolBar.ButtonCount - 1 downto 0 do  
                         //LinkToolBar.RemoveControl(LinkToolBar.Buttons[i]);  
             LinkToolBar.Buttons[i].Free;  
     finally  
                 MainCoolBar.Bands.EndUpdate;  
         end;  
7553    
 end;  
7554  procedure TGikoForm.FavoriteDragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean);  procedure TGikoForm.FavoriteDragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean);
7555  var  var
7556          Node: TTreeNode;          Node: TTreeNode;
# Line 8113  begin Line 8307  begin
8307                                  // スレッドの再描画                                  // スレッドの再描画
8308                                  ThreadItem := GetActiveContent;                                  ThreadItem := GetActiveContent;
8309                                  if ThreadItem <> nil then                                  if ThreadItem <> nil then
8310                                          SetContent( ThreadItem );                                          InsertBrowserTab( ThreadItem, True );
8311                          end;                          end;
8312                  end else if Length( FSelectResWord ) > 0 then begin                  end else if Length( FSelectResWord ) > 0 then begin
8313                          // ボタンの更新                          // ボタンの更新
# Line 8161  begin Line 8355  begin
8355                  // スレッドを再描画                  // スレッドを再描画
8356                  ThreadItem := GetActiveContent;                  ThreadItem := GetActiveContent;
8357                  if ThreadItem <> nil then                  if ThreadItem <> nil then
8358                          SetContent( ThreadItem );                          InsertBrowserTab( ThreadItem, True );
8359          end;          end;
8360  end;  end;
8361    
# Line 8179  begin Line 8373  begin
8373          end else begin          end else begin
8374                  ThreadItem := GetActiveContent;                  ThreadItem := GetActiveContent;
8375                  if ThreadItem <> nil then                  if ThreadItem <> nil then
8376                          SetContent( ThreadItem );                          InsertBrowserTab( ThreadItem, True );
8377          end;          end;
8378    
8379  end;  end;
# Line 8198  begin Line 8392  begin
8392                  StatusBarResize(Sender);                  StatusBarResize(Sender);
8393                  ThreadItem := GetActiveContent;                  ThreadItem := GetActiveContent;
8394                  if ThreadItem <> nil then                  if ThreadItem <> nil then
8395                          SetContent( ThreadItem );                          InsertBrowserTab( ThreadItem, True );
8396          end;          end;
8397    
8398  end;  end;
# Line 8217  begin Line 8411  begin
8411                  StatusBarResize(Sender);                  StatusBarResize(Sender);
8412                  ThreadItem := GetActiveContent;                  ThreadItem := GetActiveContent;
8413                  if ThreadItem <> nil then                  if ThreadItem <> nil then
8414                          SetContent( ThreadItem );                          InsertBrowserTab( ThreadItem, True );
8415          end;          end;
8416    
8417  end;  end;
# Line 8283  begin Line 8477  begin
8477          GikoSys.FAbon.AddIndividualAbon(KokoPopupMenu.Tag,1);          GikoSys.FAbon.AddIndividualAbon(KokoPopupMenu.Tag,1);
8478          ThreadItem := GetActiveContent;          ThreadItem := GetActiveContent;
8479          if ThreadItem <> nil then          if ThreadItem <> nil then
8480                  SetContent( ThreadItem );                  InsertBrowserTab( ThreadItem, True );
8481  end;  end;
8482  //個別あぼーん「透明」  //個別あぼーん「透明」
8483  procedure TGikoForm.IndividualAbon2Click(Sender: TObject);  procedure TGikoForm.IndividualAbon2Click(Sender: TObject);
# Line 8293  begin Line 8487  begin
8487          GikoSys.FAbon.AddIndividualAbon(KokoPopupMenu.Tag,0);          GikoSys.FAbon.AddIndividualAbon(KokoPopupMenu.Tag,0);
8488          ThreadItem := GetActiveContent;          ThreadItem := GetActiveContent;
8489          if ThreadItem <> nil then          if ThreadItem <> nil then
8490                  SetContent( ThreadItem );                  InsertBrowserTab( ThreadItem, True );
8491  end;  end;
8492  //個別あぼーん解除()  //個別あぼーん解除()
8493  procedure TGikoForm.AntiIndividualAbonClick(Sender: TObject);  procedure TGikoForm.AntiIndividualAbonClick(Sender: TObject);
# Line 8305  begin Line 8499  begin
8499                  GikoSys.FAbon.DeleteIndividualAbon(KokoPopupMenu.Tag);                  GikoSys.FAbon.DeleteIndividualAbon(KokoPopupMenu.Tag);
8500                  ThreadItem := GetActiveContent;                  ThreadItem := GetActiveContent;
8501                  if ThreadItem <> nil then                  if ThreadItem <> nil then
8502                          SetContent( ThreadItem );                          InsertBrowserTab( ThreadItem, True );
8503          end else begin          end else begin
8504                  msg := 'このスレッドでは個別あぼ〜んを行ってません';                  msg := 'このスレッドでは個別あぼ〜んを行ってません';
8505                  MsgBox(Handle, msg, 'メッセージ', MB_OK);                  MsgBox(Handle, msg, 'メッセージ', MB_OK);
# Line 8330  begin Line 8524  begin
8524                  end;                  end;
8525                  ThreadItem := GetActiveContent;                  ThreadItem := GetActiveContent;
8526                  if ThreadItem <> nil then                  if ThreadItem <> nil then
8527                          SetContent( ThreadItem );                          InsertBrowserTab( ThreadItem, True );
8528                  end else begin                  end else begin
8529                          msg := 'このスレッドでは個別あぼ〜んを行ってません';                          msg := 'このスレッドでは個別あぼ〜んを行ってません';
8530                          MsgBox(Handle, msg, 'メッセージ', MB_OK);                          MsgBox(Handle, msg, 'メッセージ', MB_OK);
# Line 9105  begin Line 9299  begin
9299  end;  end;
9300    
9301  procedure TGikoForm.OnlyAHundredResExecute(Sender: TObject);  procedure TGikoForm.OnlyAHundredResExecute(Sender: TObject);
 var  
         ThreadItem : TThreadItem;  
9302  begin  begin
9303          GikoSys.OnlyAHundredRes := OnlyAHundredRes.Checked;          GikoSys.OnlyAHundredRes := OnlyAHundredRes.Checked;
9304          ThreadItem := GetActiveContent;          if FActiveContent <> nil then begin
9305          if ThreadItem <> nil then                  SetContent(FActiveContent);
9306                  SetContent( ThreadItem );          end;
9307  end;  end;
9308    
9309  procedure TGikoForm.FavoriteTreeViewEndDrag(Sender, Target: TObject; X,  procedure TGikoForm.FavoriteTreeViewEndDrag(Sender, Target: TObject; X,
# Line 9351  procedure TGikoForm.OnMinimize; Line 9543  procedure TGikoForm.OnMinimize;
9543  begin  begin
9544          FIsMinimize := mtMinimizing;          FIsMinimize := mtMinimizing;
9545          if FActiveContent <> nil then          if FActiveContent <> nil then
9546                  FActiveContent.ScrollTop := OleVariant(IHTMLDocument2(Browser.Document)).Body.ScrollTop;                  FActiveContent.Thread.ScrollTop := OleVariant(IHTMLDocument2(FActiveContent.Browser.Document)).Body.ScrollTop;
9547          PostMessage( Handle, USER_MINIMIZED, 0, 0 );          PostMessage( Handle, USER_MINIMIZED, 0, 0 );
9548  end;  end;
9549    
# Line 9733  begin Line 9925  begin
9925                   (abs( Y - FMouseDownPos.Y ) < Mouse.DragThreshold) then begin                   (abs( Y - FMouseDownPos.Y ) < Mouse.DragThreshold) then begin
9926                  FavoriteClick( TObject( FavoriteTreeView.Selected ) );                  FavoriteClick( TObject( FavoriteTreeView.Selected ) );
9927          end;          end;
9928            
9929    end;
9930    
9931    destructor      TBrowserRecord.Destroy;
9932    var
9933            doc :OleVariant;
9934    begin
9935            if Self.FEvent <> nil then
9936                    Self.FEvent.Free;
9937            if Self.FBrowser <> nil then begin
9938                    if Self.Thread <> nil then begin
9939                            doc := Idispatch( olevariant(Self.FBrowser.ControlInterface).Document) as IHTMLDocument2;
9940                            Self.Thread.ScrollTop := doc.Body.ScrollTop;
9941                    end;
9942                    Self.FBrowser.Free;
9943            end;
9944    end;
9945    
9946    procedure TGikoForm.ThreadPanelResize(Sender: TObject);
9947    var
9948            idx     : Integer;
9949            rec     : TBrowserRecord;
9950    begin
9951            idx := BrowserTab.TabIndex;
9952            if idx >= 0 then begin
9953                    if BrowserTab.Tabs.Objects[ idx ] is TBrowserRecord then begin
9954                            rec := TBrowserRecord( BrowserTab.Tabs.Objects[ idx ] );
9955                            SetWindowPos( rec.Browser.Handle, HWND_TOPMOST, 0, 0, BrowserPanel.Width, BrowserPanel.Height, SWP_NOACTIVATE or SWP_NOZORDER);
9956                    end;
9957            end;
9958    end;
9959    
9960    procedure TGikoForm.OnlyAHundredResUpdate(Sender: TObject);
9961    begin
9962            OnlyAHundredRes.Enabled := (GetActiveContent <> nil) ;
9963  end;  end;
9964    
9965  initialization  initialization

Legend:
Removed from v.1.298  
changed lines
  Added in v.1.299

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