| 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 |
//! 絞り込み文字列設定 |
//! 絞り込み文字列設定 |
| 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を取得する |
| 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 |
// |
// |
| 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 |
//サブフォームがメインメニューを持たないときに、メインフォームの |
//サブフォームがメインメニューを持たないときに、メインフォームの |
| 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 |
| 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 |
| 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; |