MSHTML_TLB,
{$IFEND}
IdHTTP, ActiveX, ActnList, ImgList,
- ToolWin, Buttons, {Clipbrd,} {HTTPApp,} YofUtils, IdComponent,
+ ToolWin, Buttons, {Clipbrd,} {HTTPApp,} YofUtils, IdComponent,
ShellAPI, UrlMon, Tabs, IdGlobal, StrUtils,
CommCtrl, IniFiles, Dialogs,
GikoSystem, GikoUtil, Setting, BoardGroup, ThreadControl, ItemDownload,
FavoriteArrange, AddressHistory, Preview, HTMLDocumentEvent, Kotehan,
HintWindow, GikoCoolBar, GikoListView, ToolBarSetting, ToolBarUtil,
IndividualAbon, Search, ExternalBoardManager, ExternalBoardPlugInMain,
- StdActns, GikoXMLDoc;
+ StdActns, GikoXMLDoc, Variants, ExtActns,IdTCPConnection, IdBaseComponent,
+ IdTCPClient;
type
TGikoTreeType = (gttNone, gtt2ch, gttHistory, gttFavorite);
TToolBarSettingSenderType = (tssNone, tssMain, tssList, tssBrowser);
TMinimizeType = (mtNone, mtMinimizing, mtMinimized);
+ TBrowserRecord = class;
+
TGikoForm = class(TForm)
StatusBar: TStatusBar;
MainPanel: TPanel;
N21: TMenuItem;
URLC3: TMenuItem;
URLN2: TMenuItem;
- N22: TMenuItem;
N23: TMenuItem;
ListCoolBar: TGikoCoolBar;
ListToolBar: TToolBar;
ExportFavoriteFileAction1: TMenuItem;
ExportFavoriteFile: TFileSaveAs;
ToolButton21: TToolButton;
- CabinetBBSToolButton: TToolButton;
+ CabinetBBSToolButton: TToolButton;
ToolButton23: TToolButton;
ToolButton24: TToolButton;
N6: TMenuItem;
KoreCopy: TAction;
N64: TMenuItem;
dummy1: TMenuItem;
- Browser: TWebBrowser;
TreeSelectLogDeletePopupMenu: TMenuItem;
N65: TMenuItem;
BBSSelectPopupMenu: TPopupMenu;
TmpToolBar: TToolBar;
TreeSelectNameCopy: TAction;
TreeSelectNamePupupMenu: TMenuItem;
+ BrowserPanel: TPanel;
+ SetFocusForBrowserAction: TAction;
+ SetFocusForThreadListAction: TAction;
+ SetFocusForCabinetAction: TAction;
+ FileRun1: TFileRun;
+ ThreadlistMaxAndFocusAction: TAction;
+ BrowserMaxAndFocusAction: TAction;
+ UpBoardButton: TToolButton;
+ SelectTimer: TTimer;
+ SelectThreadSave: TMenuItem;
+ SelectItemSaveForHTML: TAction;
+ FileSaveAs1: TFileSaveAs;
+ N55: TMenuItem;
+ N66: TMenuItem;
+ dat1: TMenuItem;
+ SelectItemSaveForDat: TAction;
+ LogFolderOpenAction: TAction;
+ OpenLogFolder: TMenuItem;
+ Browser: TWebBrowser;
+ LocalRuleView: TToolButton;
+ IdHTTP1: TIdHTTP;
+ TabSave: TMenuItem;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure CabinetPanelHide(Sender: TObject);
EndIndex: Integer; OldState, NewState: TItemStates);
procedure BrowserStatusTextChange(Sender: TObject;
const Text: WideString);
- procedure BrowserTitleChange(Sender: TObject; const Text: WideString);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure TreeViewChanging(Sender: TObject; Node: TTreeNode;
var AllowChange: Boolean);
procedure ShowBoardActionUpdate(Sender: TObject);
procedure SelectThreadReloadActionUpdate(Sender: TObject);
procedure ItemReloadActionUpdate(Sender: TObject);
- procedure ListViewDblClick(Sender: TObject);
procedure LogDeleteActionExecute(Sender: TObject);
procedure KokomadeActionExecute(Sender: TObject);
procedure ZenbuActionExecute(Sender: TObject);
procedure BrowserNameToolBarResize(Sender: TObject);
procedure BrowserToolBarResize(Sender: TObject);
procedure BrowserTabResize(Sender: TObject);
- procedure ListViewClick(Sender: TObject);
- procedure TreeViewClick(Sender: TObject);
+ procedure TreeViewClick(Sender: TObject);
procedure TreeViewKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure FavoriteTreeViewMouseDown(Sender: TObject;
procedure TreeSelectNameCopyExecute(Sender: TObject);
procedure FavoriteTreeViewMouseUp(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
+ procedure OnlyAHundredResUpdate(Sender: TObject);
+ procedure SetFocusForBrowserActionExecute(Sender: TObject);
+ procedure SetFocusForBrowserActionUpdate(Sender: TObject);
+ procedure SetFocusForThreadListActionExecute(Sender: TObject);
+ procedure SetFocusForCabinetActionExecute(Sender: TObject);
+ procedure BrowserMaxAndFocusActionExecute(Sender: TObject);
+ procedure BrowserMaxAndFocusActionUpdate(Sender: TObject);
+ procedure ThreadlistMaxAndFocusActionExecute(Sender: TObject);
+ procedure ListViewExit(Sender: TObject);
+ procedure SetFocusForCabinetActionUpdate(Sender: TObject);
+ procedure ListViewSelectItem(Sender: TObject; Item: TListItem;
+ Selected: Boolean);
+ procedure SelectTimerTimer(Sender: TObject);
+ procedure SelectItemSaveForHTMLExecute(Sender: TObject);
+ procedure KidokuActionExecute(Sender: TObject);
+ procedure MidokuActionExecute(Sender: TObject);
+ procedure SelectItemSaveForDatExecute(Sender: TObject);
+ procedure BrowserPanelCanResize(Sender: TObject; var NewWidth,
+ NewHeight: Integer; var Resize: Boolean);
+ procedure LogFolderOpenActionExecute(Sender: TObject);
+ procedure LogFolderOpenActionUpdate(Sender: TObject);
+ procedure LocalRuleViewClick(Sender: TObject);
+ procedure TabSaveClick(Sender: TObject);
private
{ Private \90é\8c¾ }
//RoundList : TRoundList;
FBrowserSizeWidth: Integer;
// FFavorite: TFavorite;
- FBrowserComplete: Boolean;
FTabHintIndex: Integer;
FListStyle: TViewStyle; //\83\8a\83X\83g\83A\83C\83R\83\93\83X\83^\83C\83\8b
FItemNoVisible: Boolean; //\83\8a\83X\83g\94Ô\8d\86\95\\8e¦\83t\83\89\83O
FViewType: TGikoViewType; //\83\8a\83X\83g\83A\83C\83e\83\80\95\\8e¦\83^\83C\83v
FActiveList: TObject;
- FActiveContent: TThreadItem; //
+ FActiveContent: TBrowserRecord; //
FActiveBBS : TBBS;
FHistoryList: TList; //\83q\83X\83g\83\8a\83\8a\83X\83g
FTreeType: TGikoTreeType;
FNameCookie: string;
FMailCookie: string;
// FLastRoundTime: TDateTime;
- BrowserNullTab: TThreadItem;
+ BrowserNullTab: TBrowserRecord;
// DoubleClickOccurred: array [TMouseButton] of Boolean;
FDownloadTitle: string; //\83_\83E\83\93\83\8d\81[\83h\92\86\82Ì\83^\83C\83g\83\8b\96¼
FDownloadMax: Integer; //\83_\83E\83\93\83\8d\81[\83h\92\86\82Ì\8dÅ\91å\83T\83C\83Y
FOldFormWidth : Integer; // \92¼\91O\82Ì\83E\83B\83\93\83h\83E\82Ì\95\9d
FToolBarSettingSender : TToolBarSettingSenderType; // \83c\81[\83\8b\83o\81[\90Ý\92è\82ð\83N\83\8a\83b\83N\82µ\82½\83N\81[\83\8b\83o\81[
FMouseDownPos : TPoint; // \83u\83\89\83E\83U\83^\83u\82Å\83}\83E\83X\82ð\89\9f\82µ\82½\82Æ\82«\82Ì\8dÀ\95W
+ FBrowsers: TList;
procedure SetBoardTreeNode( inBBS : TBBS );
function SetCategoryListItem(ABBS2ch: TBBS): Integer;
function SetBoardListItem(Category: TCategory): Integer;
procedure SetActiveList(Obj: TObject);
procedure ListClick;
- procedure ListDoubleClick;
- procedure BrowserMovement(AName: string);
+ procedure ListDoubleClick(Shift: TShiftState);
+ procedure BrowserMovement(const AName: string); overload;
+ procedure BrowserMovement(const AName: string; BrowserRecord: TBrowserRecord); overload;
procedure SelectListItem(List: TList);
// procedure SetProgressValue(Number: Integer; Value: Integer; Max: Integer = -1);
- procedure DeleteTab(ThreadItem: TThreadItem);
+ procedure DeleteTab(ThreadItem: TThreadItem); overload;
+ procedure DeleteTab(BrowserRecord: TBrowserRecord); overload;
function Hook(var Message: TMessage): Boolean;
procedure AddRoundNameMenu(MenuItem: TMenuItem);
procedure SetSelectItemRound(RoundFlag: Boolean; RoundName: string); overload;
// procedure SetStdToolBar;
// function GetAction(ActionName: string): TContainedAction;
procedure SetLinkBar;
- procedure ClearLinkBar;
function GetWidthAllToolButton(ToolBar: TToolBar): Integer;
procedure MenuBarChevronMenu;
procedure LinkBarChevronMenu;
procedure FavoriteAddTo( SenderNode: TTreeNode; Source: TObject );
procedure FavoriteDragDrop( SenderNode: TTreeNode; Source: TObject );
//
- procedure BrowserTabClick(Sender: TObject);
procedure SetListViewBackGroundColor(value: TColor);
procedure BBSMenuItemOnClick( Sender : TObject );
//
function BrowserKeydown(var Msg: TMsg; Key: Word; State:TShiftState) : Boolean;
// \8ae\8f\8a\82É\82 \82é\83L\83\83\83r\83l\83b\83g\81E BBS \83\81\83j\83\85\81[\82ð\83Z\83b\83g\81^\8dX\90V
procedure SetBBSMenu;
-
+ function WebBrowserClick(Sender: TObject): WordBool;
+ procedure SkinorCSSFilesCopy(path: string);
protected
procedure CreateParams(var Params: TCreateParams); override;
procedure WndProc(var Message: TMessage); override;
property NameCookie: string read FNameCookie write FNameCookie;
property MailCookie: string read FMailCookie write FMailCookie;
- procedure SetContent(ThreadItem: TThreadItem);
+ procedure SetContent(inThread: TBrowserRecord);
function GetActiveContent: TThreadItem;
function GetActiveList: TObject;
procedure SetListViewType(AViewType: TGikoViewType); overload;
procedure SetListViewType(AViewType: TGikoViewType; SelectText: string; KubetsuChk: Boolean); overload;
- procedure DownloadContent(ThreadItem: TThreadItem);
- procedure DownloadList(Board: TBoard);
+ procedure DownloadContent(ThreadItem: TThreadItem; ForceDownload: Boolean = False);
+ procedure DownloadList(Board: TBoard; ForceDownload: Boolean = False);
procedure PlaySound(SoundEventName: string);
function AddHistory( FavItem: TFavoriteThreadItem ): Boolean;
property Data: Pointer read FData write FData;
end;
+ TBrowserRecord = class( TObject )
+ private
+ FBrowser : TWebBrowser;
+ FEvent: THTMLDocumentEventSink;//\83u\83\89\83E\83U\83h\83L\83\85\83\81\83\93\83g\83C\83x\83\93\83g
+ FThread : TThreadItem;
+ FLastSize : Integer;
+ FRepaint : Boolean;
+ FOnlyHundred: Boolean;
+ public
+ destructor Destroy; override;
+ property Browser : TWebBrowser read FBrowser write FBrowser;
+ property Thread : TThreadItem read FThread write FThread;
+ property LastSize : Integer read FLastSize write FLastSize;
+ property Repaint : Boolean read FRepaint write FRepaint;
+ property OnlyHundred : Boolean read FOnlyHundred write FOnlyHundred;
+ end;
+
var
GikoForm: TGikoForm;
USER_RESIZED = WM_USER + 2001;
USER_MINIMIZED = WM_USER + 2002;
USER_SETLINKBAR = WM_USER + 2003;
+ SELECTTIME_INTERBAL = 110;
+ BROWSER_COUNT = 5; //\83u\83\89\83E\83U\82Ì\90\94
{$R *.DFM}
procedure TGikoForm.CreateParams(var Params: TCreateParams);
i: Integer;
wp: TWindowPlacement;
s: string;
+ newbrowser: TWebBrowser;
begin
{$IFDEF DEBUG}
AllocConsole;
Application.OnDeactivate := AppFormDeactivate;
Self.OnDeactivate := AppFormDeactivate;
Application.HookMainWindow(Hook);
- Application.OnMessage := HandleAppMessage;
-
+ Application.OnMessage := HandleAppMessage; //\82È\82ñ\82©\96³\82\82Ä\82à\91å\8fä\95v\82É\82È\82Á\82½\81@by\81@\82à\82¶\82ã
+ Self.DoubleBuffered := true;
FTreeType := gttNone;
FSearchDialog := nil;
+ BrowserNullTab := TBrowserRecord.Create;
+ BrowserNullTab.Browser := Browser;
+ BrowserNullTab.Browser.Navigate(BLANK_HTML);
+ FBrowsers := TList.Create;
+ for i := 0 to BROWSER_COUNT -1 do begin
+ FBrowsers.Add(TWebBrowser.Create(nil));
+ newBrowser := FBrowsers[FBrowsers.Count - 1];
+ TOleControl(newBrowser).Parent := BrowserPanel;
+ newBrowser.Align := alNone;
+ newBrowser.Left := 0;
+ newBrowser.Top := 0;
+ //newBrowser.DoubleBuffered := true;
+ newBrowser.OnDocumentComplete := BrowserDocumentComplete;
+ newBrowser.OnBeforeNavigate2 := BrowserBeforeNavigate2;
+ newBrowser.OnEnter := BrowserEnter;
+ newBrowser.OnNewWindow2 := BrowserNewWindow2;
+ newBrowser.OnStatusTextChange := BrowserStatusTextChange;
+ //newBrowser.OnTitleChange := BrowserTitleChange;
+ newBrowser.Navigate(BLANK_HTML);
+ ShowWindow(newBrowser.Handle, SW_HIDE);
+
+ end;
+ BrowserNullTab.Browser.BringToFront;
+ ShowWindow(BrowserNullTab.Browser.Handle, SW_SHOW);
// \8bN\93®\8e\9e\82É\95Û\91¶\82³\82ê\82Ä\82µ\82Ü\82¤\91Î\8dô
FIsIgnoreResize := True;
BrowserTab.Font.Name := GikoSys.Setting.BrowserTabFontName;
BrowserTab.Font.Size := GikoSys.Setting.BrowserTabFontSize;
FDragWFirst := false;
-
+ SetContent(BrowserNullTab); //\83u\83\89\83E\83U\82ð\8bó\94\92\95\\8e¦
// TreeView.TopItem.Expanded := True; //\83c\83\8a\81[\83g\83b\83v\8d\80\96Ú\82¾\82¯\82ð\8aJ\82
// TreeView.Selected := TreeView.Items[0]; //\83c\83\8a\81[\82Ì\83g\83b\83v\8d\80\96Ú\82ð\91I\91ð\82·\82é
- SetContent(nil); //\83u\83\89\83E\83U\82ð\8bó\94\92\95\\8e¦
+
//\8dÅ\91å\89»\81E\83E\83B\83\93\83h\83E\88Ê\92u\95\9c\8c³
wp.length := sizeof(wp);
FHint := TResPopup.Create(Self);
// \8dÅ\8cã\82É\91I\91ð\82³\82ê\82½\83L\83\83\83r\83l\83b\83g\82Ì\95\9c\8c³
- CabinetVisible( False );
+ CabinetVisible( False );
if GikoSys.Setting.CabinetVisible then begin
i := CabinetSelectPopupMenu.Items.Count - 1;
if GikoSys.Setting.CabinetIndex = i - 1 then
//Samba24\82Ì\83t\83@\83C\83\8b\83`\83F\83b\83N
GikoSys.SambaFileExists();
+
end;
// CoolBar \82Ì\90Ý\92è\82ð\95Ï\90\94\82É\95Û\91¶
procedure TGikoForm.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
+// if GikoForm.WindowState <> wsMinimized then
+// SaveCoolBarSettings;
if ( GikoSys.Setting.ShowDialogForEnd ) and
(MessageDlg('\83M\83R\83i\83r\82ð\8fI\97¹\82µ\82Ä\82æ\82ë\82µ\82¢\82Å\82·\82©\81H', mtConfirmation,[mbOk, mbCancel], 0) = mrCancel ) then begin
CanClose := false;
i: Integer;
// CoolSet: TCoolSet;
wp: TWindowPlacement;
+ tmpBool: Boolean;
begin
// Application.OnDeactivate := nil;
// Self.OnDeactivate := nil;
GikoSys.Setting.MessegeBarHeight := MessagePanel.Height;
except
end;
-
// \83\8a\83A\83\8b\83^\83C\83\80\82É\95Û\91¶\82³\82ê\82é\82Ì\82Å\81A\82Ü\82½\81A\83E\83B\83\93\83h\83E\83T\83C\83Y\82ª CoolBar \82æ\82è
// \8f¬\82³\82\82È\82Á\82Ä\82¢\82é\82Æ\82«\82É\95Û\91¶\82·\82é\82Æ\92l\82ª\8fã\8f\91\82«\82³\82ê\82Ä\82µ\82Ü\82¤\82Ì\82Å\82±\82±\82Å\82Í\95Û\91¶\82µ\82È\82¢
{
try
//\83^\83u\83N\83\8d\81[\83Y
- //NotSelectTabCloseAction.Execute;
- {if BrowserTab.Tabs.Count >= 1 then begin
- DeleteTab(TThreadItem(BrowserTab.Tabs.Objects[0]));
+ tmpBool := GikoSys.Setting.ShowDialogForAllTabClose;
+ GikoSys.Setting.ShowDialogForAllTabClose := false;
+ AllTabCloseAction.Execute;
+ GikoSys.Setting.ShowDialogForAllTabClose := tmpBool;
+ except
+ end;
+ try
+ LockWindowUpdate(Self.Handle);
+ for i := FBrowsers.Count - 1 downto 0 do begin
+ TWebBrowser(FBrowsers[i]).Free;
+ end;
+ FBrowsers.Clear;
+ FBrowsers.Capacity := 0;
+ finally
+ FBrowsers.Free;
+ end;
+ try
+ if BrowserNullTab <> nil then begin
+ BrowserNullTab.Browser := nil; {*BrowserNullTab\82ÌBrowser\82Í\90Ý\8cv\8e\9e\82É\93\\82è\95t\82¯\82Ä\82é\93z
+ *\82È\82Ì\82Å\82±\82±\82ÅFree\82³\82ê\82é\82Æ\8d¢\82é\82Ì\82Å\82Í\82¸\82µ\82Ä\82µ\82Ü\82¤\81B
+ *}
+ BrowserNullTab.Free;
end;
- }
except
end;
-
+ LockWindowUpdate(0);
try
TreeView.Items.BeginUpdate;
for i := TreeView.Items.Count - 1 downto 0 do begin
procedure TGikoForm.ReloadBBS;
var
i : Integer;
+ tmpBool: Boolean;
begin
//\83^\83u\83N\83\8d\81[\83Y
- NotSelectTabCloseAction.Execute;
- if BrowserTab.Tabs.Count >= 1 then
- DeleteTab(TThreadItem(BrowserTab.Tabs.Objects[0]));
+ tmpBool := GikoSys.Setting.ShowDialogForAllTabClose;
+ GikoSys.Setting.ShowDialogForAllTabClose := false;
+ AllTabCloseAction.Execute;
+ GikoSys.Setting.ShowDialogForAllTabClose := tmpBool;
+
+ SetContent(BrowserNullTab);
//TreeView\83N\83\8a\83A\81iBBS2ch.Free\82Ì\8cã\82É\83N\83\8a\83A\82·\82é\82ÆXP\83X\83^\83C\83\8b\8e\9e\82É\83G\83\89\81[\8fo\82é\81j
TreeView.Items.Clear;
const
COLUMN: array[0..7] of string = ('\83X\83\8c\83b\83h\96¼', '\83J\83E\83\93\83g', '\8eæ\93¾', '\90V\92\85',
'\96¢\93Ç', '\8f\84\89ñ\97\\96ñ', '\8eæ\93¾\93ú\8e\9e', '\83X\83\8c\8dì\90¬\93ú\8e\9e');
+ COLUMN_NONACQUIREDCOUNT: string = '\96¢\8eæ\93¾';
COLUMN_ALIGNMENT: array[0..7] of TAlignment = (taLeftJustify, taRightJustify,
taRightJustify, taRightJustify,
taRightJustify, taLeftJustify,
ListColumn.Alignment := COLUMN_ALIGNMENT[i];
end;
end;
+ if GikoSys.Setting.NonAcquiredCount then
+ begin
+ ListView.Columns[2].Caption := COLUMN_NONACQUIREDCOUNT;
+ end;
ListView.Items.Count := 0;
ListView.Items.Clear;
if BBS = nil then Exit;
if BBS.Count <= 0 then Exit;
if Item = nil then Exit;
- if Item.Index > BBS.Count then Exit;
+ if Item.Index >= BBS.Count then Exit;
if ListView.Items.Count = 0 then Exit;
- if not (BBS.Items[Item.index] is TCategory) then Exit;
- Category := TCategory(BBS.Items[Item.index]);
+ if not (BBS.Items[Item.index] is TCategory) then Exit;
+ Category := TCategory(BBS.Items[Item.index]);
if Category = nil then Exit;
if ThreadItem.IsLogFile then begin
Item.ImageIndex := ITEM_ICON_THREADLOG1;
Item.SubItems[0] := IntToStr(ThreadItem.AllResCount);
- Item.SubItems[1] := IntToStr(ThreadItem.Count);
+ if GikoSys.Setting.NonAcquiredCount then
+ Item.SubItems[1] := IntToStr(ThreadItem.AllResCount - ThreadItem.Count)
+ else
+ Item.SubItems[1] := IntToStr(ThreadItem.Count);
if ThreadItem.NewResCount = 0 then
Item.SubItems[2] := ''
else
Item.SubItems[4] := '';
Item.SubItems[5] := '';
if not GikoSys.Setting.CreationTimeLogs then
- if ThreadItem.CreateDate = ZERO_DATE then
+ if ThreadItem.CreateDate = ZERO_DATE then
Item.SubItems[6] := ''
else
Item.SubItems[6] := FormatDateTime('yyyy/mm/dd hh:mm:ss', ThreadItem.CreateDate);
board : TBoard;
Protocol, Host, Path, Document, Port, Bookmark: string;
- //wkInt: Integer;
+ wkInt: Integer;
wkIntSt: Integer;
wkIntTo: Integer;
ActiveFileName: string;
e: IHTMLElement;
Ext: string;
- buf: string;
+ buf: string;
PathRec: TPathRec;
begin
+ if not( TObject(Sender) is TWebBrowser )then
+ Exit;
try
try
- if (FActiveContent <> nil) and (Assigned(Browser.Document)) then begin
- if LowerCase(OleVariant(IHTMLDocument2(Browser.Document)).charset) <> 'shift_jis' then
- OleVariant(IHTMLDocument2(Browser.Document)).charset := 'shift_jis';
+ if (TWebBrowser(Sender) <> nil) and (not TWebBrowser(Sender).Busy) and (Assigned(TWebBrowser(Sender).Document)) then begin
+ if LowerCase(OleVariant(IHTMLDocument2(TWebBrowser(Sender).Document)).charset) <> 'shift_jis' then begin
+ OleVariant(IHTMLDocument2(TWebBrowser(Sender).Document)).charset := 'shift_jis';
+ end;
end;
except
end;
if PreviewTimer.Enabled then
PreviewTimer.Enabled := False;
Application.CancelHint;
- if GetActiveContent <> nil then
- ActiveFileName := ChangeFileExt(ExtractFileName(GetActiveContent.FileName), '')
- else
- ActiveFileName := '';
+ try
+ if GetActiveContent <> nil then
+ ActiveFileName := ChangeFileExt(ExtractFileName(GetActiveContent.FileName), '')
+ else
+ ActiveFileName := '';
+ except
+ FActiveContent := nil;
+ Exit;
+ end;
StatusBar.Panels[1].Text := Text;
ShowWindow(FPreviewBrowser.Handle, SW_HIDE);
TOleControl(FPreviewBrowser).Parent := nil;
end;
- FPreviewBrowser.Navigate('about:blank');//\91O\89ñ\82Ì\83v\83\8c\83r\83\85\81[\89æ\91\9c\8fÁ\8b\8e\97p
+ FPreviewBrowser.Navigate(BLANK_HTML);//\91O\89ñ\82Ì\83v\83\8c\83r\83\85\81[\89æ\91\9c\8fÁ\8b\8e\97p
FPreviewURL := Text;
PreviewTimer.Interval := GikoSys.Setting.PreviewWait;
PreviewTimer.Enabled := True;
p.y := p.y - TWebBrowser(Sender).ClientOrigin.y;
e := IHTMLDocument2(TWebBrowser(Sender).Document).elementFromPoint(p.x, p.y);
if (Assigned(e)) then begin
- tmp2 := GikoSys.ZenToHan(e.Get_outerText);
+ tmp2 := ZenToHan(e.Get_outerText);
if (GikoSys.IsNumeric(tmp2)) then begin
//\82\93\82Í\83\8c\83X\94Ô\8d\86\82Á\82Û\82¢\82Á\82·\81B
wkIntSt := StrToInt(tmp2);
end;
end;
end else begin
+ threadItem := GetActiveContent;
if Pos('about:blank..', Text) = 1 then begin
- threadItem := GetActiveContent;
if AnsiPos('http://jbbs.shitaraba.com/', threadItem.URL) <> 0 then begin
URL := Copy(threadItem.URL, 1, LastDelimiter('/',threadItem.URL));
Gikosys.GetPopupResNumber(Text,PathRec.FSt,PathRec.FTo);
URL := Text;
end;
PathRec := Gikosys.Parse2chURL2(URL);
- Gikosys.GetPopupResNumber(URL,PathRec.FSt,PathRec.FTo);
+ if (PathRec.FNoParam) then begin
+ PathRec.FSt := 1;
+ PathRec.FTo := 1;
+ end else
+ Gikosys.GetPopupResNumber(URL,PathRec.FSt,PathRec.FTo);
GikoSys.ParseURI( URL, Protocol, Host, Path, Document, Port, Bookmark );
if PathRec.FDone or (not GikoSys.Is2chHost( Host )) then begin
end else if (wkIntSt > 0) and (wkIntTo = 0) then begin
wkIntTo := wkIntSt;
end else if wkIntSt > wkIntTo then begin
- //wkInt := wkIntTo;
+ wkInt := wkIntTo;
wkIntTo := wkIntSt;
- wkIntSt := wkIntTo;
+ wkIntSt := wkInt;
end;
//if wkIntSt = 0 then
// wkIntSt := 1;
wkIntTo := 9999;
//ATitle := ActiveFileName <> PathRec.FKey;
- if GetActiveContent.URL = URL then
+ if (FActiveContent <> nil) and (FActiveContent.Thread.URL = URL) then
ATitle := false
else
ATitle := true;
threadItem := board.FindThreadFromFileName( PathRec.FKey + '.dat' );
end;
end;
-
+
if threadItem <> nil then begin
//HintData := GetThreadText(PathRec.FBBS, PathRec.FKey, wkIntSt, wkIntTo, ATitle, PathRec.FFirst);
FHint.PopupType := gptThread;
end;
end;
-procedure TGikoForm.BrowserTitleChange(Sender: TObject;
- const Text: WideString);
-var
- Title: string;
-begin
- if (Text = BLANK_HTML) or (Text = GikoSys.GetHtmlTempFileName) then
- Title := CAPTION_NAME
- else
- Title := CAPTION_NAME + ' - [' + Text + ']';
- Caption := Title;
- //Application.Title := Title;
-end;
-
procedure TGikoForm.SetEnabledCloseButton(Enabled: Boolean);
var
SysMenu: HMenu;
if Key = VK_BACK then begin
// UpFolderButtonClick(Sender);
end else if Key = VK_SPACE then begin
- ListDoubleClick;
+ ListDoubleClick(Shift);
end else if Key = VK_RETURN then begin
ListClick;
end;
end else if Key = VK_SPACE then begin
ListClick;
end else if Key = VK_RETURN then begin
- ListDoubleClick;
+ ListDoubleClick(Shift);
end;
end;
end;
wkBoard := TBoard( FActiveList );
Sort.SortOrder := FSortOrder;
Sort.SortIndex := Column.Index;
+ Sort.SortNonAcquiredCountFlag := GikoSys.Setting.NonAcquiredCount;
wkBoard.CustomSort(ThreadItemSortProc);
ListView.Refresh;
end;
var
ThreadItem: TThreadItem;
begin
- //
// TListView(Sender).Canvas.Font.Style := [];
if TObject(Item.Data) is TThreadItem then begin
ThreadItem := TThreadItem(Item.Data);
var
ATitle: string;
s: string;
- boardPlugIn : TBoardPlugIn;
+ boardPlugIn : TBoardPlugIn;
+ i: Integer;
begin
try
if Item.DownType = gdtBoard then
boardPlugIn := Item.ThreadItem.BoardPlugIn;
Item.ThreadItem.Title := GikoSys.DivideStrLine(boardPlugIn.GetDat( DWORD( Item.ThreadItem ), 1 )).FTitle;
ATitle := Item.ThreadItem.Title;
+ end else if ATitle = '\81i\96¼\8fÌ\95s\96¾\81j' then begin
+ ATitle := GikoSys.DivideStrLine(GikoSys.ReadThreadFile(Item.ThreadItem.GetThreadFileName, 1)).FTitle;
+ end;
+ for i := BrowserTab.Tabs.Count - 1 downto 0 do begin
+ if TBrowserRecord(BrowserTab.Tabs.Objects[i]).Thread = Item.ThreadItem then
+ TBrowserRecord(BrowserTab.Tabs.Objects[i]).Repaint := true;
+ end;
+ if GikoSys.Setting.BrowserTabVisible then begin
+ if GetActiveContent = Item.ThreadItem then
+ InsertBrowserTab(Item.ThreadItem)
+ else if (ListView.Selected <> nil ) and ( TObject(ListView.Selected.Data) is TThreadItem ) and ( Item.ThreadItem = TThreadItem(ListView.Selected.Data)) then
+ InsertBrowserTab(Item.ThreadItem, True)
+ else
+ InsertBrowserTab(Item.ThreadItem, False);
+ end else begin
+ if (GetActiveContent = Item.ThreadItem) or (FActiveContent = nil) or(FActiveContent.Browser = BrowserNullTab.Browser) then
+ InsertBrowserTab(Item.ThreadItem);
end;
- if GetActiveContent = Item.ThreadItem then
- InsertBrowserTab(Item.ThreadItem)
- else if (ListView.Selected <> nil ) and ( TObject(ListView.Selected.Data) is TThreadItem ) and ( Item.ThreadItem = TThreadItem(ListView.Selected.Data)) then
- InsertBrowserTab(Item.ThreadItem, True)
- else
- InsertBrowserTab(Item.ThreadItem, False);
if Item.State = gdsComplete then begin
PlaySound('New');
procedure TGikoForm.WorkEnd(Sender: TObject; AWorkMode: TWorkMode; Number: Integer);
begin
-// ProgressBar.Visible := False;
ProgressBar.Position := 0;
-// SetProgressValue(Number, 0);
if FDownloadMax <> 0 then
StatusBar.Panels[1].Text := FDownloadTitle + ' - \83_\83E\83\93\83\8d\81[\83h\82ª\8a®\97¹\82µ\82Ü\82µ\82½';
end;
procedure TGikoForm.InsertBrowserTab(ThreadItem: TThreadItem; ActiveTab: Boolean = True);
var
- i: Integer;
- // OldIndex: Integer;
+ i, j, idx: Integer;
favItem : TFavoriteThreadItem;
+ newBrowser : TBrowserRecord;
begin
+
if Threaditem = nil then Exit;
if ThreadItem.IsLogFile then begin
- //favItem := TFavoriteThreadItem.CreateWithItem( ThreadItem );
+ //\82¨\8bC\82É\93ü\82è\82Ì\91S\82Ä\8aJ\82\82Æ\82©\82â\82é\82Æ\81A\8d¡\8aJ\82¢\82Ä\82é\83X\83\8c\82Ìbrowser\82ð\95t\82¯\91Ö\82¦\82é\8b°\82ê\82ª\82 \82é
+ //\8fí\82É\82S\94Ô\96Ú\82ÉActive\82Ì\83u\83\89\83E\83U\82ª\97\88\82È\82¢\82æ\82¤\82É\88Ú\93®\82³\82¹\82é
+ if (FActiveContent <> nil) and (FActiveContent.FBrowser <> nil) and
+ (FActiveContent.FBrowser <> BrowserNullTab.Browser)then begin
+ j := FBrowsers.IndexOf(FActiveContent.FBrowser);
+ if j = BROWSER_COUNT - 1 then
+ FBrowsers.Move(BROWSER_COUNT - 1, 0);
+ end;
favItem := TFavoriteThreadItem.Create(ThreadItem.URL, ThreadItem.Title );
if not AddHistory( favItem ) then
favItem.Free;
-
for i := 0 to BrowserTab.Tabs.Count - 1 do begin
- if TObject(BrowserTab.Tabs.Objects[i]) is TThreadItem then begin
- if TThreadItem(BrowserTab.Tabs.Objects[i]) = ThreadItem then begin
+ if TObject(BrowserTab.Tabs.Objects[i]) is TBrowserRecord then begin
+ if TBrowserRecord(BrowserTab.Tabs.Objects[i]).Thread = ThreadItem then begin
+ if TBrowserRecord(BrowserTab.Tabs.Objects[i]).FBrowser = nil then begin
+ for j := BrowserTab.Tabs.Count - 1 downto 0 do begin
+ if TBrowserRecord(BrowserTab.Tabs.Objects[j]).FBrowser = TWebBrowser(FBrowsers[BROWSER_COUNT - 1]) then begin
+ TBrowserRecord(BrowserTab.Tabs.Objects[j]).FBrowser := nil;
+ if TBrowserRecord(BrowserTab.Tabs.Objects[j]).FEvent <> nil then begin
+ TBrowserRecord(BrowserTab.Tabs.Objects[j]).FEvent.Free;
+ TBrowserRecord(BrowserTab.Tabs.Objects[j]).FEvent := nil;
+ end;
+ break;
+ end;
+ end;
+ TBrowserRecord(BrowserTab.Tabs.Objects[i]).FBrowser := TWebBrowser(FBrowsers[BROWSER_COUNT - 1]);
+ TBrowserRecord(BrowserTab.Tabs.Objects[i]).Repaint := true;
+ FBrowsers.Move(BROWSER_COUNT - 1, 0);
+ end;
if ActiveTab then begin
- //OldIndex := BrowserTab.TabIndex;
BrowserTab.TabIndex := i;
-// if OldIndex <> i then
BrowserTab.OnChange(nil);
BrowserTab.Repaint;
end;
end;
end;
end;
-
+ idx := BrowserTab.TabIndex;
if GikoSys.Setting.BrowserTabAppend = gtaFirst then begin
- BrowserTab.Tabs.Insert(0, GikoSys.GetShortName(ThreadItem.Title, 20));
- BrowserTab.Tabs.Objects[0] := ThreadItem;
- if ActiveTab then
+ newBrowser := TBrowserRecord.Create;
+ for j := BrowserTab.Tabs.Count - 1 downto 0 do begin
+ if TBrowserRecord(BrowserTab.Tabs.Objects[j]).FBrowser = TWebBrowser(FBrowsers[BROWSER_COUNT - 1]) then begin
+ TBrowserRecord(BrowserTab.Tabs.Objects[j]).FBrowser := nil;
+ if TBrowserRecord(BrowserTab.Tabs.Objects[j]).FEvent <> nil then begin
+ TBrowserRecord(BrowserTab.Tabs.Objects[j]).FEvent.Free;
+ TBrowserRecord(BrowserTab.Tabs.Objects[j]).FEvent := nil;
+ end;
+ break;
+ end;
+ end;
+ newBrowser.Browser := TWebBrowser(FBrowsers[BROWSER_COUNT - 1]);
+ FBrowsers.Move(BROWSER_COUNT - 1, 0);
+ //newBrowser.Browser.Navigate(BLANK_HTML);
+ newBrowser.thread := ThreadItem;
+ newBrowser.Repaint := true;
+ newBrowser.OnlyHundred := GikoSys.OnlyAHundredRes;
+
+ BrowserTab.Tabs.InsertObject(0, GikoSys.GetShortName(ThreadItem.Title, 20), newBrowser);
+ if (not GikoSys.Setting.BrowserTabVisible) and (BrowserTab.Tabs.Count > 1) then begin
+ DeleteTab( TBrowserRecord( BrowserTab.Tabs.Objects[ 1 ] ) );
+ end;// else begin
+ //end;
+ BrowserTab.Repaint;
+ if ActiveTab then begin
BrowserTab.TabIndex := 0;
+ end;
end else begin
- i := BrowserTab.Tabs.Add(GikoSys.GetShortName(ThreadItem.Title, 20));
- BrowserTab.Tabs.Objects[i] := ThreadItem;
- if ActiveTab then
- BrowserTab.TabIndex := i;
+ newBrowser := TBrowserRecord.Create;
+ for j := BrowserTab.Tabs.Count - 1 downto 0 do begin
+ if TBrowserRecord(BrowserTab.Tabs.Objects[j]).FBrowser = TWebBrowser(FBrowsers[BROWSER_COUNT - 1]) then begin
+ TBrowserRecord(BrowserTab.Tabs.Objects[j]).FBrowser := nil;
+ if TBrowserRecord(BrowserTab.Tabs.Objects[j]).FEvent <> nil then begin
+ TBrowserRecord(BrowserTab.Tabs.Objects[j]).FEvent.Free;
+ TBrowserRecord(BrowserTab.Tabs.Objects[j]).FEvent := nil;
+ end;
+ break;
+ end;
+ end;
+ newBrowser.Browser := TWebBrowser(FBrowsers[BROWSER_COUNT - 1]);
+ FBrowsers.Move(BROWSER_COUNT - 1, 0);
+ //newBrowser.Browser.Navigate(BLANK_HTML);
+ newBrowser.thread := ThreadItem;
+ newBrowser.OnlyHundred := GikoSys.OnlyAHundredRes;
+ newBrowser.Repaint := true;
+
+ i := BrowserTab.Tabs.AddObject(GikoSys.GetShortName(ThreadItem.Title, 20), newBrowser);
+ if (not GikoSys.Setting.BrowserTabVisible) and (BrowserTab.Tabs.Count > 1) then begin
+ DeleteTab( TBrowserRecord( BrowserTab.Tabs.Objects[ 0 ] ) );
+ end;
+ //end;
+ BrowserTab.Repaint;
+ if ActiveTab then begin
+ if (not GikoSys.Setting.BrowserTabVisible) and (BrowserTab.Tabs.Count > 0) then
+ BrowserTab.TabIndex := 0
+ else
+ BrowserTab.TabIndex := i;
+ end;
end;
- if ( ActiveTab ) or ( BrowserTab.Tabs.Count = 1 ) then begin
+ if(ActiveTab) or (idx = -1) then begin
BrowserTab.OnChange(nil);
- BrowserNullTab := nil;
end;
end else begin
- //OldIndex := BrowserTab.TabIndex;
- BrowserNullTab := ThreadItem;
+ if BrowserNullTab = nil then begin
+ BrowserNullTab := TBrowserRecord.Create;
+ BrowserNullTab.Browser := Browser;
+ end;
+ BrowserNullTab.thread := ThreadItem;
BrowserTab.TabIndex := -1;
-// if OldIndex = -1 then
- BrowserTab.OnChange(nil);
+ SetContent(BrowserNullTab);
end;
- BrowserTab.Repaint;
+
if GikoSys.Setting.URLDisplay then
AddressComboBox.Text := ThreadItem.URL;
+
end;
-procedure TGikoForm.SetContent(ThreadItem: TThreadItem);
+procedure TGikoForm.SetContent(inThread : TBrowserRecord);
var
BBSID: string;
FileName: string;
sTitle: string;
// HtmlName: string;
- doc: Variant;
+ doc: Variant;
s: string;
// OldCursor: TCursor;
- //i: Integer;
+ i: Integer;
+ url: OleVariant;
+ idx: Integer;
+ ThreadItem: TThreadItem;
+ Thread: TBrowserRecord;
+ ThreadTitle, ThreadPTitle: string;
+ ThreadScrollTop: Integer;
+ ThreadIsLog, ThreadUnRead, ThreadNewArraical: boolean;
begin
- while (Browser.ReadyState <> READYSTATE_COMPLETE) and
- (Browser.ReadyState <> READYSTATE_INTERACTIVE) do begin
- Application.ProcessMessages;
- end;
-
+ Thread := inThread;
+ idx := BrowserTab.TabIndex;
if (FActiveContent <> nil) and
- (FActiveContent <> ThreadItem) and
- (Assigned(Browser.Document)) then begin
+ (FActiveContent.Thread <> Thread.Thread) and
+ (Assigned(FActiveContent.Browser.Document)) then begin
try
try
Sleep(1);
//Application.ProcessMessages;
- FActiveContent.ScrollTop := OleVariant(IHTMLDocument2(Browser.Document)).Body.ScrollTop;
+ FActiveContent.Thread.ScrollTop := OleVariant(IHTMLDocument2(FActiveContent.Browser.Document).Body).ScrollTop;
+ //if FActiveContent.Browser <> BrowserNullTab.Browser then
+ // TOleControl(FActiveContent.Browser).Visible := false;
except
on E: Exception do
MsgBox(Handle, E.Message, 'SetContent[<-ScrollTop]', 0);
finally
end;
end;
-
- FActiveContent := ThreadItem;
-
- if ThreadItem = nil then begin
- Browser.Navigate(BLANK_HTML);
+ if not (Assigned(Thread)) or (Thread.Thread = nil) then begin
+ Thread.Browser.Navigate(BLANK_HTML);
BrowserBoardNameLabel.Caption := '';
ItemBoardImage.Picture := nil;
BrowserNameLabel.Caption := '';
ItemImage.Picture := nil;
+ BrowserNullTab.Thread := nil;
+ //TOleControl(BrowserNullTab.Browser).Visible := true;
+ ShowWindow(BrowserNullTab.Browser.Handle, SW_SHOW);
FActiveContent := nil;
Exit;
+ end else if Thread.Browser = nil then begin
+ if FActiveContent.Browser = TWebBrowser(FBrowsers[BROWSER_COUNT - 1]) then
+ FBrowsers.Move(BROWSER_COUNT - 1, 0);
+ for i := BrowserTab.Tabs.Count - 1 downto 0 do begin
+ if TBrowserRecord(BrowserTab.Tabs.Objects[i]).FBrowser = TWebBrowser(FBrowsers[BROWSER_COUNT - 1]) then begin
+ TBrowserRecord(BrowserTab.Tabs.Objects[i]).FBrowser := nil;
+ if TBrowserRecord(BrowserTab.Tabs.Objects[i]).FEvent <> nil then begin
+ TBrowserRecord(BrowserTab.Tabs.Objects[i]).FEvent.Free;
+ TBrowserRecord(BrowserTab.Tabs.Objects[i]).FEvent := nil;
+ end;
+ break;
+ end;
+ end;
+ Thread.Browser := TWebBrowser(FBrowsers[BROWSER_COUNT - 1]);
+ FBrowsers.Move(BROWSER_COUNT - 1, 0);
end;
-
+ ThreadTitle := Thread.Thread.Title;
+ ThreadPTitle := Thread.Thread.ParentBoard.Title;
+ ThreadScrollTop := Thread.Thread.ScrollTop;
+ ThreadIsLog := Thread.Thread.IsLogFile;
+ ThreadItem := Thread.Thread;
+ ThreadNewArraical := Thread.Thread.NewArrival;
+ ThreadUnRead := Thread.Thread.UnRead;
BBSID := ThreadItem.ParentBoard.BBSID;
FileName := ThreadItem.FileName;
if GetCapture = ListView.Handle then
ReleaseCapture;
- //OldCursor := Screen.Cursor;
Screen.Cursor := crHourGlass;
+
+
try
if ThreadItem.UnRead then begin
ThreadItem.ParentBoard.UnRead := ThreadItem.ParentBoard.UnRead - 1;
if ThreadItem.ParentBoard.UnRead < 0 then ThreadItem.ParentBoard.UnRead := 0;
TreeView.Refresh;
end;
-
- if not ThreadItem.IsLogFile then begin
-
- if (not Assigned(Browser.Document)) then begin
- Browser.Navigate('about:blank');
- while (not Assigned(Browser.Document)) do begin
- Application.ProcessMessages;
- end;
+ // LockWindowUpdate(Self.Handle);
+ if(FActiveContent <> nil) and (FActiveContent <> Thread) then begin
+ if (FActiveContent.Browser <> BrowserNullTab.Browser) then
+ ShowWindow(FActiveContent.Browser.Handle, SW_HIDE);
+ end;
+ ShowWindow(Thread.FBrowser.Handle, SW_SHOW);
+ //LockWindowUpdate(0);
+ if (not Assigned(Thread.Browser.Document)) then begin
+ Thread.Browser.Navigate('about:blank');
+ end;
+ FActiveContent := Thread;
+ while (Thread.Browser.ReadyState <> READYSTATE_COMPLETE) and
+ (Thread.Browser.ReadyState <> READYSTATE_INTERACTIVE) do begin
+ Application.ProcessMessages;
+ if idx <> BrowserTab.TabIndex then begin
+ Exit;
end;
+ end;
+ if not ThreadIsLog then begin
+ Self.Caption := CAPTION_NAME ;
try
s := '<HTML><BODY><CENTER>\82±\82Ì\83X\83\8c\83b\83h\82Í\8eæ\93¾\82µ\82Ä\82¢\82Ü\82¹\82ñ</CENTER></BODY></HTML>';
- doc := Browser.Document;
+ doc := Idispatch( olevariant(Thread.Browser.ControlInterface).Document) as IHTMLDocument2;
doc.open;
doc.charset := 'Shift_JIS';
doc.Write(s);
finally
end;
end else begin
- GikoSys.CreateHTML2(Browser.Document, ThreadItem, sTitle);
-{
- while (Browser.ReadyState <> READYSTATE_COMPLETE) and
- (Browser.ReadyState <> READYSTATE_INTERACTIVE) do begin
- Application.ProcessMessages;
+ Self.Caption := CAPTION_NAME + ' - [' + ThreadTitle + ']';
+ //Thread.Repaint\82Í\81A\83X\83L\83\93\93\99\82Ì\90Ý\92è\82ð\95Ï\8dX\82µ\82½\82Æ\82«\81AThread\82ð\83_\83E\83\93\83\8d\81[\83h\82µ\82½\82Æ\82«
+ //\90V\8bK\82ÉThread\82ð\8aJ\82¢\82½\82Æ\82«\82É\90^\82É\82È\82Á\82Ä\82¢\82é\81B
+ if(Thread.Repaint) or (Thread.OnlyHundred <> GikoSys.OnlyAHundredRes)then begin
+ //Thread.LastSize := ThreadItem.Size;
+ Thread.Repaint := false;
+ try
+ Thread.Browser.OnStatusTextChange := nil;
+ doc := Idispatch( olevariant(Thread.Browser.ControlInterface).Document) as IHTMLDocument2;
+ GikoSys.CreateHTML2(doc, ThreadItem, sTitle);
+
+ // if (Assigned(Thread.Browser)) and (Thread.Browser <> nil) then
+ Thread.Browser.OnStatusTextChange := BrowserStatusTextChange;
+ //\82È\82º\82©\82±\82±\82Å\96¾\8e¦\93I\82ÉDocumentComplete\82ð\8cÄ\82Î\82È\82¢\82Æ\82¤\82Ü\82\82¢\82©\82È\82¢
+ //\92Ç\8bL\81@200406/19
+ //Visible\82Ì\82Æ\82«\82µ\82©DocumentComplete\82Í\8cÄ\82Î\82ê\82È\82¢\82ç\82µ\82¢
+ Thread.FBrowser.OnDocumentComplete(Thread.FBrowser, Thread.FBrowser.Parent, url);
+ Thread.OnlyHundred := GikoSys.OnlyAHundredRes;
+ Application.ProcessMessages;
+ //\82±\82±\82ÅApplication.ProcessMessages\82ð\8cÄ\82Ô\82±\82Æ\82É\82æ\82Á\82ÄWebBrowser\82ð\8dX\90V\82³\82¹\82é\81B
+ //\91\8a\82µ\82È\82¢\82Æ\88ê\89æ\96Ê\95ª\82µ\82©\95`\89æ\82Å\82«\82Ä\82È\82¢\82Ì\82Å\82»\82ê\88È\8fã\82Ì\83X\83N\83\8d\81[\83\8b\97Ê\82ð\8ew\92è\82µ\82Ä\82à\96³\8cø\82É\82È\82é
+ //\81@by\82à\82¶\82ã(2004/01/20)
+ try
+ //if (Assigned(Thread)) and (Assigned(ThreadItem))then begin
+ if(Thread <> nil) and (ThreadItem <>nil) then begin
+ if ThreadUnRead then
+ BrowserMovement('new', Thread)
+ else if ThreadScrollTop <> 0 then begin
+ try
+ doc.Body.ScrollTop := ThreadScrollTop;
+ except
+ on E: Exception do
+ MsgBox(Handle, E.Message, 'SetContent[ScrollTop<-]', 0);
+ end;
+ end;
+ // end;
+ end else begin
+ FActiveContent := nil;
+ BrowserTab.Repaint;
+ Exit;
+ end;
+ except
+ FActiveContent := nil;
+ BrowserTab.Repaint;
+ Exit;
+ end;
+ finally
+ // Application.ProcessMessages;
+ end;
end;
-}
- try
- doc := Browser.Document;
- Application.ProcessMessages;
- //\82±\82±\82ÅApplication.ProcessMessages\82ð\8cÄ\82Ô\82±\82Æ\82É\82æ\82Á\82ÄWebBrowser\82ð\8dX\90V\82³\82¹\82é\81B
- //\91\8a\82µ\82È\82¢\82Æ\88ê\89æ\96Ê\95ª\82µ\82©\95`\89æ\82Å\82«\82Ä\82È\82¢\82Ì\82Å\82»\82ê\88È\8fã\82Ì\83X\83N\83\8d\81[\83\8b\97Ê\82ð\8ew\92è\82µ\82Ä\82à\96³\8cø\82É\82È\82é
- //\81@by\82à\82¶\82ã(2004/01/20)
-
- if ThreadItem.UnRead then
- BrowserMovement('new')
- else if (ThreadItem.ScrollTop <> 0) and (not ThreadItem.UnRead) then begin
- try
- doc.Body.ScrollTop := ThreadItem.ScrollTop;
- except
- on E: Exception do
- MsgBox(Handle, E.Message, 'SetContent[ScrollTop<-]', 0);
- end;
- end;
- finally
- // Application.ProcessMessages;
- end;
-
ThreadItem.UnRead := False;
ListView.Refresh;
end;
+ if (Assigned(Thread)) and (Assigned(Thread.Thread)) and (Thread <> nil) and (ThreadItem <>nil) then begin
+ //FActiveContent := Thread;
- BrowserBoardNameLabel.Caption := ThreadItem.ParentBoard.Title;
- ItemIcon16.GetBitmap(4, ItemBoardImage.Picture.Bitmap);
- BrowserNameLabel.Caption := ThreadItem.Title;
- ItemImage.Picture := nil;
- if ThreadItem.IsLogFile then
- if ThreadItem.NewArrival then
- ItemImageList.GetBitmap(2, ItemImage.Picture.Bitmap)
+ BrowserBoardNameLabel.Caption := ThreadPTitle;
+ ItemIcon16.GetBitmap(4, ItemBoardImage.Picture.Bitmap);
+ BrowserNameLabel.Caption := ThreadTitle;
+ ItemImage.Picture := nil;
+ if ThreadIsLog then
+ if ThreadNewArraical then
+ ItemImageList.GetBitmap(2, ItemImage.Picture.Bitmap)
+ else
+ ItemImageList.GetBitmap(0, ItemImage.Picture.Bitmap)
else
- ItemImageList.GetBitmap(0, ItemImage.Picture.Bitmap)
- else
- ItemImageList.GetBitmap(1, ItemImage.Picture.Bitmap);
+ ItemImageList.GetBitmap(1, ItemImage.Picture.Bitmap);
- ItemImage.Left := BrowserBoardNameLabel.Left + BrowserBoardNameLabel.Width + 8;
- BrowserNameLabel.Left := ItemImage.Left + 20;
+ ItemImage.Left := BrowserBoardNameLabel.Left + BrowserBoardNameLabel.Width + 8;
+ BrowserNameLabel.Left := ItemImage.Left + 20;
+ end else begin
+ FActiveContent := nil;
+ end;
finally
- //if Screen.Cursor <> crDefault then
- // Screen.Cursor := OldCursor
- //else
- Screen.Cursor := crDefault;
+ Screen.Cursor := crDefault;
end;
end;
function TGikoForm.GetActiveContent: TThreadItem;
-var
- Index: Integer;
begin
- Result := nil;
- if BrowserTab.TabIndex = -1 then begin
- Result := BrowserNullTab;
- Exit;
+ try
+ if( Assigned(FActiveContent) ) and (Assigned(FActiveContent.Thread))
+ and (FActiveContent <> nil) and (FActiveContent.Thread <> nil) then
+ Result := FActiveContent.Thread
+ else begin
+ FActiveContent := nil;
+ Result := nil;
+ end;
+ except
+ FActiveContent := nil;
+ Result := nil;
end;
- Index := BrowserTab.TabIndex;
- if BrowserTab.Tabs.Objects[Index] is TThreadItem then
- Result := TThreadItem(BrowserTab.Tabs.Objects[Index]);
-
-// Result := FActiveContent;
end;
procedure TGikoForm.SetActiveList(Obj: TObject);
ListView.Selected := nil;
// ListView.Columns.Clear;
- Caption := CAPTION_NAME;
+ Self.Caption := CAPTION_NAME;
//Application.Title := CAPTION_NAME;
if Obj is TBBS then begin
ListView.ItemFocused := ListView.Items.Item[ idx ];
end;
// end;
-
- if Obj is TBoard then begin
- if GikoSys.Setting.ListOrientation = gloHorizontal then begin
- if GikoSys.Setting.ListWidthState = glsMax then begin
- BrowserMinAction.Execute;
- if GikoForm.Visible then
- ListView.SetFocus;
- end;
- end else begin
- if GikoSys.Setting.ListHeightState = glsMax then begin
- BrowserMinAction.Execute;
- if GikoForm.Visible then
- ListView.SetFocus;
- end;
- end;
- end;
end;
end;
end;
-procedure TGikoForm.DownloadList(Board: TBoard);
+procedure TGikoForm.DownloadList(Board: TBoard; ForceDownload: Boolean = False);
var
Item: TDownloadItem;
begin
try
Item.Board := Board;
Item.DownType := gdtBoard;
+ Item.ForceDownload := ForceDownload;
// AbortToolButton.Enabled := True;
// Animate.Active := True;
// FDownload.Add(Item);
end;
end;
-procedure TGikoForm.DownloadContent(ThreadItem: TThreadItem);
+procedure TGikoForm.DownloadContent(ThreadItem: TThreadItem; ForceDownload: Boolean = False);
var
Item: TDownloadItem;
begin
try
Item.ThreadItem := ThreadItem;
Item.DownType := gdtThread;
+ Item.ForceDownload := ForceDownload;
// AbortToolButton.Enabled := True;
// Animate.Active := True;
// FDownload.Add(Item);
// SetContent(ThreadItem);
FHistoryList.Move(i, 0);
if FTreeType = gttHistory then
- if TreeView.TopItem <> TreeView.Items[ i ] then
- TreeView.Items[ i ].MoveTo( TreeView.TopItem, naInsert );
- Result := false;
+ if TreeView.Items.GetFirstNode <> TreeView.Items[ i ] then
+ TreeView.Items[ i ].MoveTo( TreeView.Items.GetFirstNode, naInsert );
+ Result := false;
Exit;
end;
end;
if FTreeType = gttHistory then begin
Node := TreeView.Items.Add( nil, favItem.Title );
- Node.MoveTo( TreeView.TopItem, naInsert );
+ Node.MoveTo( TreeView.Items.GetFirstNode, naInsert );
{
if favItem.NewArrival then begin
Node.ImageIndex := ITEM_ICON_THREADNEW1;
else if TObject(FHistoryList[ i ]) is TFavoriteBoardItem then
TFavoriteBoardItem(FHistoryList[ i ]).Free;
- //FHistoryList.Delete(i);
+ //FHistoryList.Delete(i);
end;
except
end;
FTreeType := gtt2ch;
HistoryToolBar.Hide;
SetBoardTreeNode( inBBS );
- TreeView.TopItem.Expanded := True; //?c???[?g?b?v???????J??
+ TreeView.Items.GetFirstNode.Expanded := True; //?c???[?g?b?v???????J??
//?c???[??g?b?v?????I????
if GetActiveList = nil then
TreeView.Selected := TreeView.Items[0]
FTreeType := gtt2ch;
HistoryToolBar.Hide;
SetBoardTreeNode( inBBS );
- TreeView.TopItem.Expanded := True; //\83c\83\8a\81[\83g\83b\83v\8d\80\96Ú\82¾\82¯\82ð\8aJ\82
+ TreeView.Items.GetFirstNode.Expanded := True; //\83c\83\8a\81[\83g\83b\83v\8d\80\96Ú\82¾\82¯\82ð\8aJ\82
//\83c\83\8a\81[\82Ì\83g\83b\83v\8d\80\96Ú\82ð\91I\91ð\82·\82é
if GetActiveList = nil then begin
try
end;
SetActiveList( Item );
end;
+
+ if Item is TBoard then begin // not TCategory
+ if GikoSys.Setting.ListOrientation = gloHorizontal then begin
+ if GikoSys.Setting.ListWidthState = glsMax then begin
+ BrowserMinAction.Execute;
+ if GikoForm.Visible then
+ ListView.SetFocus;
+ end;
+ end else begin
+ if GikoSys.Setting.ListHeightState = glsMax then begin
+ BrowserMinAction.Execute;
+ if GikoForm.Visible then
+ ListView.SetFocus;
+ end;
+ end;
+ end;
end;
end;
if not (TObject(listItem.Data) is TThreadItem) then Exit;
threadItem := TThreadItem(ListItem.Data);
- InsertBrowserTab(threadItem);
+ InsertBrowserTab(threadItem, False);
if threadItem.IsLogFile then
ListView.UpdateItems(listItem.Index, listItem.Index);
end;
+ mbLeft:
+ begin
+ //\82±\82±\82ÅDblClick\8fE\82í\82È\82¢\82Æ\81AClick\83C\83x\83\93\83g\82ª\97D\90æ\82µ\82Ä\8bN\82«\82Ä\82µ\82Ü\82¤\82Ì\82Å
+ if (ssDouble in Shift) then
+ ListDoubleClick(Shift)
+ else
+ ListClick;
+ end;
end;
{ if ssDouble in Shift then begin
DoubleClickOccurred[Button] := True;
if ThreadItem.IsLogFile then begin
// if AddHistory(ThreadItem) then
// SetContent(ThreadItem);
- InsertBrowserTab(ListItem.Data);
+ InsertBrowserTab(ThreadItem);
ListView.UpdateItems(ListItem.Index, ListItem.Index);
end else begin
// SetContent(ThreadItem);
- InsertBrowserTab(ListItem.Data);
+ InsertBrowserTab(ThreadItem);
end;
- if ListView.Selected = nil then
- Exit;
- if ListView.Selected.Data = nil then
- Exit;
- if TThreadItem( ListView.Selected.Data ).IsLogFile then begin
+ if GikoSys.Setting.BrowserAutoMaximize = gbmClick then begin
if GikoSys.Setting.ListOrientation = gloHorizontal then begin
if GikoSys.Setting.ListWidthState = glsMin then begin
- BrowserMaxAction.Execute;
- if GikoForm.Visible then
- Browser.SetFocus;
+ BrowserMaxAndFocusAction.Execute;
end;
end else begin
if GikoSys.Setting.ListHeightState = glsMin then begin
- BrowserMaxAction.Execute;
- if GikoForm.Visible then
- Browser.SetFocus;
+ BrowserMaxAndFocusAction.Execute;
end;
end;
end;
end;
-procedure TGikoForm.ListDoubleClick;
+procedure TGikoForm.ListDoubleClick(Shift: TShiftState);
var
ThreadItem: TThreadItem;
+ shiftDown: Boolean;
begin
-// PostMessage(ListView.Handle, WM_CANCELMODE, 0, 0);
+ shiftDown := (ssShift in Shift);
if ListView.Selected = nil then Exit;
-// if TreeView.Selected = nil then Exit;
if TObject(ListView.Selected.Data) is TCategory then begin
SelectTreeNode(ListView.Selected.Data, True);
//TreeViewChange(nil, TreeView.Selected);
end else if TObject(ListView.Selected.Data) is TThreadItem then begin
//if TObject(ListView.Selected.Data) is TThreadItem then begin
- Application.ProcessMessages;
+ Application.ProcessMessages;
ThreadItem := TThreadItem(ListView.Selected.Data);
- DownloadContent(ThreadItem);
+ DownloadContent(ThreadItem, shiftDown);
//end;
+
+ if GikoSys.Setting.BrowserAutoMaximize = gbmDoubleClick then begin
+ if GikoSys.Setting.ListOrientation = gloHorizontal then begin
+ if GikoSys.Setting.ListWidthState = glsMin then begin
+ BrowserMaxAndFocusAction.Execute;
+ end;
+ end else begin
+ if GikoSys.Setting.ListHeightState = glsMin then begin
+ BrowserMaxAndFocusAction.Execute;
+ end;
+ end;
+ end;
+ end;
+end;
+procedure TGikoForm.BrowserMovement(const AName: string; BrowserRecord: TBrowserRecord);
+var
+ top: Integer;
+ item: OleVariant;
+ nm: OleVariant;
+ activeBrower :TWebBrowser;
+begin
+// OleVariant(Browser.Document).parentWindow.location.hash := AName;
+
+ while (BrowserRecord.Browser.ReadyState <> READYSTATE_COMPLETE) and
+ (BrowserRecord.Browser.ReadyState <> READYSTATE_INTERACTIVE) do begin
+ Application.ProcessMessages;
+ end;
+
+ // Access Violation \82ª\8bN\82«\82é\8e\96\82ª\82 \82é\82Ì\82Å\8d¡\8cã\97v\83`\83F\83b\83N
+ if(BrowserRecord <> nil) and (BrowserRecord.FBrowser <> nil) then begin
+ activeBrower := BrowserRecord.FBrowser;
+ try
+ top := 0;
+ nm := AName;
+ item := OleVariant( activeBrower.Document as IHTMLDocument2).anchors.item(nm);
+ repeat
+ top := top + item.offsetTop;
+ item := item.offsetParent;
+ until AnsiCompareText(item.tagName, 'body' ) = 0;
+
+ OleVariant(activeBrower.Document as IHTMLDocument2).body.scrollTop := top;
+ except
+ end;
end;
end;
-procedure TGikoForm.BrowserMovement(AName: string);
+procedure TGikoForm.BrowserMovement(const AName: string);
var
- top: Integer;
- item: OleVariant;
+ top: Integer;
+ item: OleVariant;
nm: OleVariant;
+ activeBrower :TWebBrowser;
begin
// OleVariant(Browser.Document).parentWindow.location.hash := AName;
- {
+ {
while (Browser.ReadyState <> READYSTATE_COMPLETE) and
(Browser.ReadyState <> READYSTATE_INTERACTIVE) do begin
Application.ProcessMessages;
end;
- }
+ }
// Access Violation \82ª\8bN\82«\82é\8e\96\82ª\82 \82é\82Ì\82Å\8d¡\8cã\97v\83`\83F\83b\83N
- try
- top := 0;
- nm := AName;
- item := OleVariant( Browser.Document as IHTMLDocument2).anchors.item(nm);
- repeat
- top := top + item.offsetTop;
- item := item.offsetParent;
- until AnsiCompareText(item.tagName, 'body' ) = 0;
-
- OleVariant(Browser.Document as IHTMLDocument2).body.scrollTop := top;
- except
+ if(BrowserTab.Tabs.Count > 0) and (BrowserTab.TabIndex >= 0) then begin
+ activeBrower := FActiveContent.Browser;
+ try
+ top := 0;
+ nm := AName;
+ item := OleVariant( activeBrower.Document as IHTMLDocument2).anchors.item(nm);
+ repeat
+ top := top + item.offsetTop;
+ item := item.offsetParent;
+ until AnsiCompareText(item.tagName, 'body' ) = 0;
+
+ OleVariant(activeBrower.Document as IHTMLDocument2).body.scrollTop := top;
+ except
+ end;
end;
end;
// Mouse.CursorPos := BrowserSizeButton.ClientToScreen(Point(
// System.Round(BrowserToolBar.ButtonWidth div 2),
// System.Round(BrowserToolBar.ButtonHeight div 2)));
+ //BrowserTab.OnChange(nil);
end;
procedure TGikoForm.BrowserMinActionExecute(Sender: TObject);
begin
+
if GikoSys.Setting.ListOrientation = gloHorizontal then begin
case GikoSys.Setting.ListWidthState of
glsMax, glsNormal: begin
begin
Item := GetActiveContent;
if Item = nil then Exit;
-
- if Item.Count >= 1000 then begin
- msg := '\82±\82Ì\83X\83\8c\83b\83h\82Í\83\8c\83X\90\94\82ª\82P\82O\82O\82O\82ð\92´\82¦\82Ä\82¢\82é\82Ì\82Å\8f\91\8d\9e\82Ý\8fo\97\88\82Ü\82¹\82ñ\81B' + #13#10
- + '\90V\83X\83\8c\83b\83h\82ð\92T\82µ\82Ä\82\82¾\82³\82¢\81B';
- if MsgBox(Handle, msg, '\8cx\8d\90', MB_YESNO or MB_ICONEXCLAMATION) <> 7 then begin
- Exit;
- end;
- end;
Editor := TEditorForm.Create(Self);
Editor.SetThreadItem(Item);
GikoSys.LoadEditorKeySetting(Editor.ActionList);
procedure TGikoForm.ItemReloadActionExecute(Sender: TObject);
var
ThreadItem: TThreadItem;
+ shiftDown: Boolean;
begin
ThreadItem := GetActiveContent;
+ shiftDown := GetAsyncKeyState(VK_SHIFT) = Smallint($8001);
if ThreadItem <> nil then
- DownloadContent(ThreadItem);
+ DownloadContent(ThreadItem, shiftDown);
end;
procedure TGikoForm.SelectListReloadActionExecute(Sender: TObject);
i: Integer;
List: TList;
msg: string;
+ shiftDown: Boolean;
begin
+ shiftDown := GetAsyncKeyState(VK_SHIFT) = Smallint($8001);
if GetActiveList is TCategory then begin
List := TList.Create;
try
end;
for i := 0 to List.Count - 1 do begin
if TObject(List[i]) is TBoard then
- DownloadList(TBoard(List[i]));
+ DownloadList(TBoard(List[i]), shiftDown);
end;
finally
List.Free;
end;
end else if GetActiveList is TBoard then begin
- DownloadList(TBoard(GetActiveList));
+ DownloadList(TBoard(GetActiveList), shiftDown);
end;
end;
List: TList;
i: Integer;
msg: string;
+ shiftDown: Boolean;
begin
+ shiftDown := GetAsyncKeyState(VK_SHIFT) = Smallint($8001);
List := TList.Create;
try
SelectListItem(List);
end;
for i := 0 to List.Count - 1 do begin
if TObject(List[i]) is TThreadItem then
- DownloadContent(TThreadItem(List[i]));
+ DownloadContent(TThreadItem(List[i]), shiftDown);
end;
finally
List.Free;
if FIsMinimize = mtMinimized then begin
if FActiveContent <> nil then begin
- doc := Browser.Document;
- doc.Body.ScrollTop := FActiveContent.ScrollTop;
+ //Application.ProcessMessages;
+ doc := Idispatch( olevariant(FActiveContent.Browser.ControlInterface).Document) as IHTMLDocument2;
+ doc.Body.ScrollTop := FActiveContent.Thread.ScrollTop;
FIsMinimize := mtNone;
end;
end;
procedure TGikoForm.BrowserTabCloseActionUpdate(Sender: TObject);
begin
- BrowserTabCloseAction.Enabled := GetActiveContent <> nil;
+ BrowserTabCloseAction.Enabled := (BrowserTab.Tabs.Count > 0);
end;
procedure TGikoForm.NotSelectTabCloseActionUpdate(Sender: TObject);
begin
- NotSelectTabCloseAction.Enabled := GetActiveContent <> nil;
+ NotSelectTabCloseAction.Enabled := (BrowserTab.Tabs.Count > 1);
end;
procedure TGikoForm.AllTabCloseActionUpdate(Sender: TObject);
begin
- AllTabCloseAction.Enabled := GetActiveContent <> nil;
+ AllTabCloseAction.Enabled := (BrowserTab.Tabs.Count > 0);
end;
procedure TGikoForm.ActiveLogDeleteActionUpdate(Sender: TObject);
ActiveLogDeleteAction.Enabled := GetActiveContent <> nil;
end;
-procedure TGikoForm.ListViewDblClick(Sender: TObject);
-begin
- ListDoubleClick;
-end;
-
procedure TGikoForm.LogDeleteActionExecute(Sender: TObject);
const
DEL_MSG = '\83\8d\83O\83t\83@\83C\83\8b\82ð\8dí\8f\9c\82µ\82Ü\82·\81B\82æ\82ë\82µ\82¢\82Å\82·\82©\81H';
List.Free;
end;
end;
-
-procedure TGikoForm.DeleteTab(ThreadItem: TThreadItem);
+procedure TGikoForm.DeleteTab(BrowserRecord: TBrowserRecord);
var
- i: Integer;
+ i, j, idx: Integer;
+ doc: Variant;
begin
+ idx := BrowserTab.TabIndex;
FTabHintIndex := -1;
for i := 0 to BrowserTab.Tabs.Count - 1 do begin
- if TThreadItem(BrowserTab.Tabs.Objects[i]) = ThreadItem then begin
+ if TBrowserRecord(BrowserTab.Tabs.Objects[i]) = BrowserRecord then begin
+ BrowserTab.Tabs.BeginUpdate;
+ try
+ if TBrowserRecord(BrowserTab.Tabs.Objects[i]).Browser <> nil then begin
+ 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;
+ TBrowserRecord(BrowserTab.Tabs.Objects[i]).Free;
BrowserTab.Tabs.Delete(i);
- if i > (BrowserTab.Tabs.Count - 1) then
- BrowserTab.TabIndex := BrowserTab.Tabs.Count - 1
- else
- BrowserTab.TabIndex := i;
- if BrowserTab.Tabs.Count = 0 then
- SetContent(nil)
- else if BrowserTab.TabIndex <> -1 then
- SetContent(TThreadItem(BrowserTab.Tabs.Objects[BrowserTab.TabIndex]));
+ 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;
+ 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
+ TBrowserRecord(BrowserTab.Tabs.Objects[j]).Browser := nil;
+ if TBrowserRecord(BrowserTab.Tabs.Objects[j]).FEvent <> nil then begin
+ TBrowserRecord(BrowserTab.Tabs.Objects[j]).FEvent.Free;
+ TBrowserRecord(BrowserTab.Tabs.Objects[j]).FEvent := nil;
+ end;
+ 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;
+ BrowserTab.Tabs.EndUpdate;
+ if( FActiveContent = nil) then
+ BrowserTab.OnChange(nil);
Exit;
end;
end;
end;
-
-procedure TGikoForm.KokomadeActionExecute(Sender: TObject);
+procedure TGikoForm.DeleteTab(ThreadItem: TThreadItem);
var
- No: Integer;
- ThreadItem: TThreadItem;
- sTitle: string;
- ScrollTop: Integer;
+ i, j, idx: Integer;
doc: Variant;
begin
- No := KokoPopupMenu.Tag;
- if No = 0 then Exit;
- ThreadItem := GetActiveContent;
- if ThreadItem = nil then Exit;
- ThreadItem.Kokomade := No;
- doc := Browser.Document;
- ScrollTop := doc.Body.ScrollTop;
-
- GikoSys.CreateHTML2(doc, ThreadItem, sTitle);
-// HtmlName := GikoSys.CreateHTML(ThreadItem, sTitle) + '#koko';
-// Flags := 2;
-// Browser.Navigate(HtmlName, Flags);
-// Sleep(10);
- Application.ProcessMessages;
- doc.Body.ScrollTop := ScrollTop;
-end;
+ idx := BrowserTab.TabIndex;
+ FTabHintIndex := -1;
+ for i := 0 to BrowserTab.Tabs.Count - 1 do begin
+ if TBrowserRecord(BrowserTab.Tabs.Objects[i]).Thread = ThreadItem then begin
+ BrowserTab.Tabs.BeginUpdate;
+ try
+ if TBrowserRecord(BrowserTab.Tabs.Objects[i]).Browser <> nil then begin
+ 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;
+ TBrowserRecord(BrowserTab.Tabs.Objects[i]).Free;
+ 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;
+ 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
+ TBrowserRecord(BrowserTab.Tabs.Objects[j]).Browser := nil;
+ if TBrowserRecord(BrowserTab.Tabs.Objects[j]).FEvent <> nil then begin
+ TBrowserRecord(BrowserTab.Tabs.Objects[j]).FEvent.Free;
+ TBrowserRecord(BrowserTab.Tabs.Objects[j]).FEvent := nil;
+ end;
+ 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;
+
+ BrowserTab.Tabs.EndUpdate;
+ if( FActiveContent = nil) then
+ BrowserTab.OnChange(nil);
+ Exit;
+ end;
+ end;
+end;
+
+procedure TGikoForm.KokomadeActionExecute(Sender: TObject);
+var
+ No: Integer;
+ ThreadItem: TThreadItem;
+begin
+ No := KokoPopupMenu.Tag;
+ if No = 0 then Exit;
+ ThreadItem := GetActiveContent;
+ if ThreadItem = nil then Exit;
+ ThreadItem.Kokomade := No;
+ FActiveContent.Thread.ScrollTop := OleVariant(IHTMLDocument2(FActiveContent.Browser.Document)).Body.ScrollTop;
+ FActiveContent.FRepaint := true;
+ InsertBrowserTab(FActiveContent.Thread, true);
+ Application.ProcessMessages;
+end;
procedure TGikoForm.ZenbuActionExecute(Sender: TObject);
var
ThreadItem: TThreadItem;
- sTitle: string;
- ScrollTop: Integer;
- doc: Variant;
begin
ThreadItem := GetActiveContent;
if ThreadItem = nil then Exit;
ThreadItem.Kokomade := -1;
- doc := Browser.Document;
- ScrollTop := doc.Body.ScrollTop;
- GikoSys.CreateHTML2(doc, ThreadItem, sTitle);
-// HtmlName := GikoSys.CreateHTML(ThreadItem, sTitle) + '#koko';
-// Flags := 2;
-// Browser.Navigate(HtmlName, Flags);
-// Sleep(10);
+ FActiveContent.Thread.ScrollTop := OleVariant(IHTMLDocument2(FActiveContent.Browser.Document)).Body.ScrollTop;
+ FActiveContent.FRepaint := true;
+ InsertBrowserTab(FActiveContent.Thread, true);
Application.ProcessMessages;
- doc.Body.ScrollTop := ScrollTop;
end;
function TGikoForm.Hook(var Message: TMessage): Boolean;
Item := GetActiveContent;
if Item = nil then Exit;
- if Item.Count >= 1000 then begin
- msg := '\82±\82Ì\83X\83\8c\83b\83h\82Í\83\8c\83X\90\94\82ª\82P\82O\82O\82O\82ð\92´\82¦\82Ä\82¢\82é\82Ì\82Å\8f\91\8d\9e\82Ý\8fo\97\88\82Ü\82¹\82ñ\81B' + #13#10
- + '\90V\83X\83\8c\83b\83h\82ð\92T\82µ\82Ä\82\82¾\82³\82¢\81B';
- if MsgBox(Handle, msg, '\8cx\8d\90', MB_YESNO or MB_ICONEXCLAMATION) <> 7 then begin
- Exit;
- end;
- end;
Editor := TEditorForm.Create(Self);
Editor.SetThreadItem(Item);
Editor.BodyEdit.Text := '>>' + IntToStr(Number) + #13#10;
LPMSep05.Visible := (GetActiveList is TCategory) or (GetActiveList is TBoard);
DeletePMenu.Visible := (GetActiveList is TBoard);
LPMSep06.Visible := (GetActiveList is TCategory) or (GetActiveList is TBoard);
-
BoardFavoriteAddMenu.Visible := (GetActiveList is TCategory);
ThreadFavoriteAddMenu.Visible := (GetActiveList is TBoard);
procedure TGikoForm.BrowserTabCloseActionExecute(Sender: TObject);
var
idx: Integer;
- ThreadItem: TThreadItem;
+// ThreadItem: TThreadItem;
begin
idx := BrowserTab.TabIndex;
if idx <> -1 then begin
- ThreadItem := TThreadItem(BrowserTab.Tabs.Objects[idx]);
- DeleteTab(ThreadItem);
+ if BrowserTab.Tabs.Objects[idx] <> nil then begin
+ //ThreadItem := TThreadItem(BrowserTab.Tabs.Objects[idx]);
+ DeleteTab(TBrowserRecord(BrowserTab.Tabs.Objects[idx]));
+ end;
end;
end;
procedure TGikoForm.NotSelectTabCloseActionExecute(Sender: TObject);
var
i: Integer;
+ idx: Integer;
begin
- for i := BrowserTab.Tabs.Count - 1 downto 0 do begin
- if BrowserTab.TabIndex <> i then begin
+ idx := BrowserTab.TabIndex;
+ if idx = -1 then Exit;
+ BrowserTab.Tabs.BeginUpdate;
+ for i := BrowserTab.Tabs.Count - 1 downto BrowserTab.TabIndex + 1 do begin
+ TBrowserRecord(BrowserTab.Tabs.Objects[i]).Free;
+ BrowserTab.Tabs.Delete(i);
+ end;
+ if idx > 0 then begin
+ for i := BrowserTab.TabIndex - 1 downto 0 do begin
+ TBrowserRecord(BrowserTab.Tabs.Objects[i]).Free;
BrowserTab.Tabs.Delete(i);
end;
end;
+ BrowserTab.Tabs.EndUpdate;
end;
procedure TGikoForm.AllTabCloseActionExecute(Sender: TObject);
var
i: Integer;
begin
- for i := BrowserTab.Tabs.Count - 1 downto 0 do
- BrowserTab.Tabs.Delete(i);
- SetContent(nil);
+ if GikoSys.Setting.ShowDialogForAllTabClose then
+ if(MessageDlg('\91S\82Ä\82Ì\83^\83u\82ð\95Â\82¶\82Ä\82æ\82ë\82µ\82¢\82Å\82·\82©\81H', mtConfirmation,[mbOk, mbCancel], 0) = mrCancel ) then
+ Exit;
+
+ FActiveContent := nil;
+ BrowserNullTab.Thread := nil;
+ BrowserTab.OnChange := nil;
+ BrowserTab.Tabs.BeginUpdate;
+ for i := BrowserTab.Tabs.Count - 1 downto 0 do begin
+ TBrowserRecord(BrowserTab.Tabs.Objects[i]).Free;
+ end;
+ BrowserTab.Tabs.Clear;
+ BrowserTab.Tabs.EndUpdate;
+ BrowserTab.OnChange := BrowserTabChange;
+ SetContent(BrowserNullTab);
+ Self.Caption := CAPTION_NAME ;
end;
procedure TGikoForm.TreeSelectBoradReloadExecute(Sender: TObject);
Html: string;
URL: string;
idx: Integer;
+ wkIntSt: Integer;
+ wkIntTo: Integer;
begin
Cancel := True;
if (IHTMLDocument2(TWebBrowser(Sender).Document).activeElement <> nil) then begin
Text := IHTMLDocument2(TWebBrowser(Sender).Document).activeElement.Get_outerText;
Html := IHTMLDocument2(TWebBrowser(Sender).Document).activeElement.Get_outerHTML;
+ if(AnsiPos('>>', Text) = 1) or (AnsiPos('>', Text) = 1)
+ or (AnsiPos('\81\84\81\84', Text) = 1) or (AnsiPos('\81\84', Text) = 1) then begin
+ if GikoSys.Setting.ResAnchorJamp then begin
+ Text := ZenToHan(Text);
- URL := GikoSys.GetHRefText(Html);
- URL := GikoSys.HTMLDecode(URL);
-
- //\83A\83h\83\8c\83X\83o\81[\82Ì\97\9a\97ð
- if GikoSys.Setting.LinkAddAddressBar then begin
- idx := AddressComboBox.Items.IndexOf(URL);
- if idx = -1 then begin
- AddressComboBox.Items.Insert(0, URL);
- if AddressComboBox.Items.Count > GikoSys.Setting.AddressHistoryCount then
- AddressComboBox.Items.Delete(AddressComboBox.Items.Count - 1);
- end else begin
- AddressComboBox.Items.Delete(idx);
- AddressComboBox.Items.Insert(0, URL);
+ if(AnsiPos('>>', Text) = 1) then begin
+ Text := Copy(Text, 3, Length(Text) - 2);
+ end else begin
+ Text := Copy(Text, 2, Length(Text) - 1);
+ end;
+ if AnsiPos('-', Text) <> 0 then begin
+ wkIntSt := StrToIntDef(Copy(Text, 1, AnsiPos('-', Text) - 1), 0);
+ Text := Copy(Text, AnsiPos('-', Text) + 1, Length(Text));
+ wkIntTo := StrToIntDef(Text, 0);
+ if wkIntTo < wkIntSt then
+ wkIntSt := wkIntTo;
+ end else
+ wkIntSt := StrToIntDef(Text, 0);
+
+ if wkIntSt <> 0 then
+ BrowserMovement(IntToStr(wkIntSt));
+ end;
+ end else begin
+ URL := GikoSys.GetHRefText(Html);
+ URL := GikoSys.HTMLDecode(URL);
+ if( AnsiPos('http://', URL) = 1) or (AnsiPos('https://', URL) = 1) or
+ ( AnsiPos('ftp://', URL) = 1) then begin
+ //\83A\83h\83\8c\83X\83o\81[\82Ì\97\9a\97ð
+ if GikoSys.Setting.LinkAddAddressBar then begin
+ idx := AddressComboBox.Items.IndexOf(URL);
+ if idx = -1 then begin
+ AddressComboBox.Items.Insert(0, URL);
+ if AddressComboBox.Items.Count > GikoSys.Setting.AddressHistoryCount then
+ AddressComboBox.Items.Delete(AddressComboBox.Items.Count - 1);
+ end else begin
+ AddressComboBox.Items.Delete(idx);
+ AddressComboBox.Items.Insert(0, URL);
+ end;
+ end;
+ MoveToURL( URL );
end;
end;
-
- MoveToURL( URL );
end;
{ ShiftDown := GetAsyncKeyState(VK_SHIFT) = Smallint($8001);
procedure TGikoForm.BrowserTabChange(Sender: TObject);
var
+ i, j: Integer;
idx: Integer;
- ThreadItem: TThreadItem;
begin
// if NewTab = -1 then
+// ThreadItem := nil;
if not BrowserTab.Dragging then begin
FTabHintIndex := -1;
BrowserTab.Hint := '';
idx := BrowserTab.TabIndex;
if idx = -1 then begin
+ BrowserNullTab.Thread := nil;
SetContent(BrowserNullTab);
- end else if 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;
- if ThreadItem = nil then Exit;
- if ThreadItem.IsLogFile then begin
- if GikoSys.Setting.ListOrientation = gloHorizontal then begin
- if GikoSys.Setting.ListWidthState = glsMin then begin
- BrowserMaxAction.Execute;
- if GikoForm.Visible then
- Browser.SetFocus;
- end;
+ end else if(BrowserTab.Tabs.Objects[idx] <> nil) and (BrowserTab.Tabs.Objects[idx] is TBrowserRecord) then begin
+ if TBrowserRecord(BrowserTab.Tabs.Objects[idx]).Browser <> nil then begin
+ j := FBrowsers.IndexOf(TBrowserRecord(BrowserTab.Tabs.Objects[idx]).Browser);
+ if j <> -1 then
+ FBrowsers.Move(j ,0);
end else begin
- if GikoSys.Setting.ListHeightState = glsMin then begin
- BrowserMaxAction.Execute;
- if GikoForm.Visible then
- Browser.SetFocus;
+ if( FActiveContent <> nil ) and (FActiveContent.Browser <> nil) and
+ (FActiveContent.Browser <> BrowserNullTab.Browser) and
+ (FActiveContent.Browser = TWebBrowser(FBrowsers[BROWSER_COUNT - 1])) then
+ FBrowsers.Move(BROWSER_COUNT - 1, 0);
+
+ for i := 0 to BrowserTab.Tabs.Count - 1 do begin
+ if TBrowserRecord(BrowserTab.Tabs.Objects[i]).Browser = TWebBrowser(FBrowsers[BROWSER_COUNT - 1]) then begin
+ TBrowserRecord(BrowserTab.Tabs.Objects[i]).Browser := nil;
+ TBrowserRecord(BrowserTab.Tabs.Objects[i]).Repaint := true;
+ if TBrowserRecord(BrowserTab.Tabs.Objects[i]).FEvent <> nil then begin
+ TBrowserRecord(BrowserTab.Tabs.Objects[i]).FEvent.Free;
+ TBrowserRecord(BrowserTab.Tabs.Objects[i]).FEvent := nil;
+ end;
+ end;
end;
+ TBrowserRecord(BrowserTab.Tabs.Objects[idx]).Browser := TWebBrowser(FBrowsers[BROWSER_COUNT - 1]);
+ TBrowserRecord(BrowserTab.Tabs.Objects[idx]).Repaint := true;
+ FBrowsers.Move(BROWSER_COUNT - 1, 0);
end;
+ TOleControl(TBrowserRecord(BrowserTab.Tabs.Objects[idx]).Browser).BringToFront;
+ GikoSys.OnlyAHundredRes := TBrowserRecord(BrowserTab.Tabs.Objects[idx]).OnlyHundred;
+ OnlyAHundredRes.Checked := TBrowserRecord(BrowserTab.Tabs.Objects[idx]).OnlyHundred;
+ SetContent(TBrowserRecord(BrowserTab.Tabs.Objects[idx]));
+
+ if (GikoSys.Setting.URLDisplay) and (GetActiveContent <> nil) then
+ AddressComboBox.Text := GetActiveContent.URL;
+
+ if ((TreeView.Visible) and (TreeView.Focused)) or ((FavoriteTreeView.Visible) and (FavoriteTreeView.Focused)) or
+ (ListView.Focused) or (SelectComboBox.Focused) or (AddressComboBox.Focused)
+ then
+ else
+ SetFocusForBrowserAction.Execute;
+
end;
+
end;
end;
-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] is TThreadItem then begin
- ThreadItem := TThreadItem(BrowserTab.Tabs.Objects[idx]);
- SetContent(ThreadItem);
- if GikoSys.Setting.URLDisplay then
- AddressComboBox.Text := ThreadItem.URL;
- end;
-end;
procedure TGikoForm.BrowserTabMouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
p: TPoint;
p2: TPoint;
idx: Integer;
- OldIndex: Integer;
begin
if Button = mbMiddle then begin
// \83}\83E\83X\92\86\83{\83^\83\93
p2 := p;
p := BrowserTab.ScreenToClient(p);
idx := BrowserTab.IndexOfTabAt(p.X, p.Y);
- if idx <> -1 then begin
- OldIndex := BrowserTab.TabIndex;
- BrowserTab.Tabs.Delete(idx);
- if idx = OldIndex then begin
- if BrowserTab.Tabs.Count > idx then
- BrowserTab.TabIndex := idx
- else if BrowserTab.Tabs.Count = idx then
- BrowserTab.TabIndex := idx - 1
- else if BrowserTab.Tabs.Count > 0 then
- BrowserTab.TabIndex := 0;
- BrowserTab.OnChange(nil);
- end;
- end;
+ if idx <> -1 then
+ DeleteTab(TBrowserRecord(BrowserTab.Tabs.Objects[idx]));
//end else if Button = mbRight then begin
//PopupMenu\82ÅBrowserTabPoupMenu\82ð\8ew\92è\82µ\82Ä\82¢\82é\82Ì\82Å\82±\82±\82Å\82í\82´\82í\82´\8cÄ\82Ñ\8fo\82·\82Æ\82Q\8fd\82É\82È\82é
- //OnContextPopup\82Å\82à\82µ\82àActive\82ÈTab\88È\8aO\82Å\8cÄ\82Ñ\8fo\82³\82ê\82½\82çTab\82ð\90Ø\82è\91Ö\82¦\82é\82æ\82¤\82É\82µ\82½\81B
+ //OnContextPopup\82Å\82à\82µ\82àActive\82ÈTab\88È\8aO\82Å\8cÄ\82Ñ\8fo\82³\82ê\82½\82çTab\82ð\90Ø\82è\91Ö\82¦\82é\82æ\82¤\82É\82µ\82½\81B
{ // \83}\83E\83X\89E\83{\83^\83\93
GetCursorPos(p);
p2 := p;
BrowserBottomPanel.Visible := False;
// BrowserTab.Visible := False;
// BrowserTopPanel.Height := 26;
+ AllTabCloseAction.Execute;
end;
end;
BrowserTab.EndDrag(false);
FDragWFirst := false;
end;
-
+
if (FTabHintIndex <> TabIdx) and (TabIdx <> -1) then begin
Application.CancelHint;
- ThreadItem := TThreadItem(BrowserTab.Tabs.Objects[TabIdx]);
+ ThreadItem := TBrowserRecord(BrowserTab.Tabs.Objects[TabIdx]).Thread;
if ThreadItem.Title <> BrowserTab.Tabs[TabIdx] then begin
BrowserTab.Hint := ThreadItem.Title;
Application.ShowHint := True;
const pDisp: IDispatch; var URL: OleVariant);
var
FDispHtmlDocument: DispHTMLDocument;
+ BrowserRecord :TBrowserRecord;
+ i :Integer;
begin
// AddMessageList('DocumentComplete', nil);
- FBrowserComplete := True;
- if FEvent <> nil then
- FEvent.Free;
- FDispHtmlDocument := Browser.Document as DispHTMLDocument;
- FEvent := THTMLDocumentEventSink.Create(Self, FDispHtmlDocument, HTMLDocumentEvents2);
- FEvent.OnContextMenu := OnDocumentContextMenu;
-
+ if TObject(Sender) is TWebBrowser then begin
+ if TWebBrowser(Sender) <> Browser then begin
+ BrowserRecord := nil;
+ for i := BrowserTab.Tabs.Count - 1 downto 0 do begin
+ if TBrowserRecord(BrowserTab.Tabs.Objects[i]).Browser = TWebBrowser(Sender) then begin
+ BrowserRecord := TBrowserRecord(BrowserTab.Tabs.Objects[i]);
+ break;
+ end;
+ end;
+ if BrowserRecord <> nil then begin
+ if BrowserRecord.FEvent <> nil then
+ BrowserRecord.FEvent.Free;
+ FDispHtmlDocument := Idispatch(OleVariant(BrowserRecord.Browser.ControlInterface).Document) as DispHTMLDocument;
+ BrowserRecord.FEvent := THTMLDocumentEventSink.Create(Self, FDispHtmlDocument, HTMLDocumentEvents2);
+ BrowserRecord.FEvent.OnContextMenu := OnDocumentContextMenu;
+ BrowserRecord.FEvent.OnClick := WebBrowserClick; //\92Ç\89Á\82µ\82½OnClick\83C\83x\83\93\83g
+ end;
+ end else begin
+ if GetActiveContent <> nil then begin
+ FDispHtmlDocument := Idispatch(OleVariant(Browser.ControlInterface).Document) as DispHTMLDocument;
+ if FEvent <> nil then
+ FEvent.Free;
+ FEvent := THTMLDocumentEventSink.Create(Self, FDispHtmlDocument, HTMLDocumentEvents2);
+ FEvent.OnContextMenu := OnDocumentContextMenu;
+ FEvent.OnClick := WebBrowserClick; //\92Ç\89Á\82µ\82½OnClick\83C\83x\83\93\83g
+ end;
+ end;
+ end;
end;
procedure TGikoForm.SelectReservActionUpdate(Sender: TObject);
SetSelectItemRound(RoundFlag, RoundName);
end else begin
threadItem := GetActiveContent;
- if threadItem <> nil then begin
+ if threadItem <> nil then begin
threadItem.RoundName := RoundName;
threadItem.Round := RoundFlag;
end;
PlaySound('Error');
LoginAction.Checked := False;
LoginToolButton.Down := False;
- LoginToolButton.Style := tbsButton;
+ LoginToolButton.Style := tbsButton;
end;
end else begin
msg := '\8b\90§\83\8d\83O\83C\83\93\83\82\81[\83h\82Å\82Í\81C\83T\81[\83o\82Ì\8fØ\96¾\8f\91\82Ì\97L\8cø\90«\82ð\83`\83F\83b\83N\82µ\82Ü\82¹\82ñ\81B' + #13#10
// MsgBox(Handle, '\83\8d\83O\83C\83\93\8fo\97\88\82Ü\82¹\82ñ\82Å\82µ\82½', '\83G\83\89\81[', MB_OK or MB_ICONSTOP);
AddMessageList(GikoSys.Dolib.ErrorMsg, nil, gmiNG);
PlaySound('Error');
- LoginAction.Checked := False;
+ LoginAction.Checked := False;
LoginToolButton.Down := False;
LoginToolButton.Style := tbsButton;
end;
begin
idx := BrowserTab.TabIndex;
if idx <> -1 then begin
- if GikoSys.Setting.DeleteMsg then
- if MsgBox(Handle, DEL_MSG, DEL_TITLE, MB_YESNO or MB_ICONQUESTION or MB_DEFBUTTON2) <> IDYES then
+ if BrowserTab.Tabs.Objects[idx] <> nil then begin
+ if GikoSys.Setting.DeleteMsg then
+ if MsgBox(Handle, DEL_MSG, DEL_TITLE, MB_YESNO or MB_ICONQUESTION or MB_DEFBUTTON2) <> IDYES then
Exit;
- ThreadItem := TThreadItem(BrowserTab.Tabs.Objects[idx]);
- DeleteTab(ThreadItem);
- ThreadItem.DeleteLogFile;
- if ThreadItem.ParentBoard = FActiveList then
- ListView.Refresh;
+ ThreadItem := TBrowserRecord(BrowserTab.Tabs.Objects[idx]).FThread;
+ DeleteTab(TBrowserRecord(BrowserTab.Tabs.Objects[idx]));
+ ThreadItem.DeleteLogFile;
+ if ThreadItem.ParentBoard = FActiveList then
+ ListView.Refresh;
+ end;
end;
end;
InsertBrowserTab(ThreadItem, ActiveTab);
- if ThreadItem.IsLogFile then begin
- if GikoSys.Setting.ListOrientation = gloHorizontal then begin
- if GikoSys.Setting.ListWidthState = glsMin then begin
- BrowserMaxAction.Execute;
- if GikoForm.Visible then
- Browser.SetFocus;
- end;
- end else begin
- if GikoSys.Setting.ListHeightState = glsMin then begin
- BrowserMaxAction.Execute;
- if GikoForm.Visible then
- Browser.SetFocus;
- end;
+ if GikoSys.Setting.ListOrientation = gloHorizontal then begin
+ if GikoSys.Setting.ListWidthState = glsMin then begin
+ BrowserMaxAndFocusAction.Execute;
+ end;
+ end else begin
+ if GikoSys.Setting.ListHeightState = glsMin then begin
+ BrowserMaxAndFocusAction.Execute;
end;
end;
end;
var
protocol, host, path, document, port, bookmark : string;
+ URL2, protocol2, host2, path2, document2, port2, bookmark2 : string;
+ tmp1, tmp2: string;
BBSID, BBSKey: string;
Board: TBoard;
ThreadItem: TThreadItem;
end else if ctrlDown then begin
GikoSys.OpenBrowser(URL, gbtIE);
Exit;
- end;
+ end;
//===== \83v\83\89\83O\83C\83\93
try
Board := BBSs[ 0 ].FindBBSID( Copy(BBSID, 1 , Length(BBSID) - 1) );
end;
if Board = nil then begin
- GikoSys.OpenBrowser(URL, gbtUserApp);
- Exit;
- //Board := GikoSys.GetUnknownBoard( nil, boardURL );
- //if (FTreeType = gtt2ch) and (FActiveBBS = BBSs[ 1 ]) then
- // ShowBBSTree( BBSs[ 1 ] );
+ // \93ü\82é\82×\82«\94Â\82ª\8c©\82Â\82©\82ç\82È\82©\82Á\82½\82Ì\82Å\81A\95\81\92Ê\82Ì\83u\83\89\83E\83U\82Å\8aJ\82
+ GikoSys.OpenBrowser(URL, gbtUserApp);
+ Exit;
+ end else begin
+ // \8aO\95\94\82Ì\94Â\82È\82Ì\82É2ch\82ÌURL\82É\82³\82ê\82Ä\82µ\82Ü\82Á\82½\93z\82ð\82±\82±\82Å\8am\94F\82·\82é
+ URL2 := Board.URL;
+ GikoSys.ParseURI(URL2 , protocol2, host2, path2, document2, port2, bookmark2 );
+ tmp1 := Copy(host, AnsiPos('.', host) + 1, Length(host));
+ tmp2 := Copy(host2, AnsiPos('.', host2) + 1, Length(host2));
+ if (tmp1 <> tmp2) then begin
+ GikoSys.OpenBrowser(URL, gbtUserApp);
+ Exit;
+ end;
end;
+
if not Board.IsThreadDatRead then
GikoSys.ReadSubjectFile(Board);
URL := GikoSys.Get2chBrowsableThreadURL( URL );
if Board = nil then begin
GikoSys.OpenBrowser(URL, gbtAuto);
end else begin
- if FActiveBBS <> Board.ParentCategory.ParenTBBS then
+ if FActiveBBS <> Board.ParentCategory.ParenTBBS then
ShowBBSTree( Board.ParentCategory.ParenTBBS );
SelectTreeNode( Board, True );
end;
Referer := Referer + ':' + Port;
Referer := Referer + Path;
Headers := 'Referer: ' + Referer;
-
FPreviewBrowser.Navigate(NavURL, Flags, TargetFrameName, PostData, Headers);
-
if ARect.Top + WindowHeight > Screen.DesktopHeight then
ARect.Top := Screen.DesktopHeight - WindowHeight;
if ARect.Left + WindowWidth > Screen.DesktopWidth then
Num: Integer;
ThreadItem: TThreadItem;
begin
- Doc := Browser.Document as IHtmlDocument2;
- Range := Doc.selection.createRange as IHTMLTxtRange;
- s := CustomStringReplace(Range.text, '\81@', ' ');//\91S\8ap\8bó\94\92\82ð\94¼\8ap\8bó\94\92\82É
- s := GikoSys.ZenToHan(Trim(s));
- if GikoSys.IsNumeric(s) then begin
-
- ThreadItem := GetActiveContent;
- if ThreadItem <> nil then begin
- Num := StrToInt(s);
- FHint.PopupType := gptThread;
- SetResPopupText(ThreadItem, Num, Num, False, False);
- if FHint.ResCount <> 0 then
- ShowTextPopup;
- Result := False;
- end else
+ Result := False;
+ Doc := FactiveContent.FBrowser.Document as IHtmlDocument2;
+ if Assigned(Doc) then begin
+ Range := Doc.selection.createRange as IHTMLTxtRange;
+ s := CustomStringReplace(Range.text, '\81@', ' ');//\91S\8ap\8bó\94\92\82ð\94¼\8ap\8bó\94\92\82É
+ s := ZenToHan(Trim(s));
+ if GikoSys.IsNumeric(s) then begin
+
+ ThreadItem := GetActiveContent;
+ if ThreadItem <> nil then begin
+ Num := StrToInt(s);
+ FHint.PopupType := gptThread;
+ SetResPopupText(ThreadItem, Num, Num, False, False);
+ if FHint.ResCount <> 0 then
+ ShowTextPopup;
+ Result := False;
+ end else
+ Result := True;
+ end else begin
Result := True;
- end else begin
- Result := True;
+ end;
end;
end;
// \95¶\8e\9a\83R\81[\83h\82Í\83v\83\89\83O\83C\83\93\82É\94C\82¹\82é
for i := StNum to ToNum do begin
Line := i;
- //\82±\82±\82Å\82Q\82¿\82á\82ñ\82Ë\82é\82Ìdat\82Ì\8c`\8e®\82Å\82P\8ds\93Ç\82Ý\8d\9e\82ß\82ê\82Î¥¥¥\81B\81«\93Ç\82ß\82é\82æ\82¤\82É\82È\82Á\82½
- tmp := boardPlugIn.GetDat( DWORD( threadItem ), i );
+ //\82±\82±\82Å\82Q\82¿\82á\82ñ\82Ë\82é\82Ìdat\82Ì\8c`\8e®\82Å\82P\8ds\93Ç\82Ý\8d\9e\82ß\82ê\82Î¥¥¥\81B\81«\93Ç\82ß\82é\82æ\82¤\82É\82È\82Á\82½
+ tmp := boardPlugIn.GetDat( DWORD( threadItem ), i );
if (tmp <> '') And ( not GikoSys.FAbon.CheckAbonPopupRes(tmp) And( not GikoSys.FAbon.CheckIndividualAbonList(line))) then begin
Res := GikoSys.DivideStrLine(tmp);
if (GikoSys.Setting.ShowMail = false) or (Length(res.FMailTo) = 0) then
FIsIgnoreResize := oldIgnoreResize;
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;
-end;
procedure TGikoForm.FavoriteDragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean);
var
Node: TTreeNode;
begin
LinkToolButton := TLinkToolButton( Sender );
- SenderNode := TreeNodeDataFind( FavoriteTreeView.TopItem, LinkToolButton.Data );
+ SenderNode := TreeNodeDataFind( FavoriteTreeView.Items.GetFirstNode, LinkToolButton.Data );
FavoriteDragDrop( SenderNode, Source );
end;
procedure TGikoForm.LinkToolButtonOnMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
+var
+ favButton : TLinkToolButton;
+ favThreadItem : TFavoriteThreadItem;
begin
+
+ case Button of
+ mbMiddle:
+ begin
+ if Sender is TLinkToolButton then begin
+ favButton := TLinkToolButton( Sender );
+ if TObject( favButton.Data ) is TFavoriteThreadItem then begin
+ favThreadItem := TFavoriteThreadItem( favButton.Data );
+ if favThreadItem.Item <> nil then
+ InsertBrowserTab( favThreadItem.Item, False );
+ end;
+ end;
+ end;
+ end;
+
end;
procedure TGikoForm.LinkToolButtonOnMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
Dlg: TListSelectDialog;
ThreadItem : TThreadItem;
FilterList : TStringList;
- idx : Integer;
+ i, idx : Integer;
begin
Dlg := TListSelectDialog.Create(Self);
try
end;
// \83X\83\8c\83b\83h\82Ì\8dÄ\95`\89æ
+ for i := BrowserTab.Tabs.Count - 1 downto 0 do begin
+ TBrowserRecord(BrowserTab.Tabs.Objects[i]).Repaint := true;
+ end;
ThreadItem := GetActiveContent;
if ThreadItem <> nil then
- SetContent( ThreadItem );
+ InsertBrowserTab( ThreadItem, True );
end;
end else if Length( FSelectResWord ) > 0 then begin
// \83{\83^\83\93\82Ì\8dX\90V
procedure TGikoForm.SelectResActionUpdate(Sender: TObject);
begin
- SelectResAction.Enabled := GetActiveContent <> nil;
+ SelectResAction.Enabled := (GetActiveContent <> nil) and (GetActiveContent.IsLogFile);
end;
procedure TGikoForm.FormKeyUp(Sender: TObject; var Key: Word;
var
ThreadItem : TThreadItem;
FilterList : TStringList;
+ i: Integer;
begin
+ if(FActiveContent <> nil) and (FActiveContent.FBrowser <> nil )
+ and (FActiveContent.FBrowser.Busy) then Exit;
+
// \83{\83^\83\93\82Ì\8dX\90V
AllResAction.Checked := True;
SelectResAction.Checked := False;
FSelectResWord := '';
// \83X\83\8c\83b\83h\82ð\8dÄ\95`\89æ
+ for i := BrowserTab.Tabs.Count - 1 downto 0 do begin
+ TBrowserRecord(BrowserTab.Tabs.Objects[i]).Repaint := true;
+ end;
ThreadItem := GetActiveContent;
if ThreadItem <> nil then
- SetContent( ThreadItem );
+ InsertBrowserTab( ThreadItem, True );
end;
end;
procedure TGikoForm.AllResActionUpdate(Sender: TObject);
begin
- AllResAction.Enabled := GetActiveContent <> nil;
+ AllResAction.Enabled := (GetActiveContent <> nil) and (GetActiveContent.IsLogFile);
end;
procedure TGikoForm.ReloadClick(Sender: TObject);
var
ThreadItem : TThreadItem;
+ i: Integer;
begin
if GikoSys.FAbon.ReLoadFromNGwordFile =false then begin
MsgBox(Handle, 'NG\83\8f\81[\83h\83t\83@\83C\83\8b\82Ì\8dÄ\93Ç\82Ý\8d\9e\82Ý\82É\8e¸\94s\82µ\82Ü\82µ\82½', '\83G\83\89\81[', MB_OK or MB_ICONEXCLAMATION);
end else begin
+ for i := BrowserTab.Tabs.Count - 1 downto 0 do
+ TBrowserRecord(BrowserTab.Tabs.Objects[i]).Repaint := true;
+
ThreadItem := GetActiveContent;
if ThreadItem <> nil then
- SetContent( ThreadItem );
+ InsertBrowserTab( ThreadItem, True );
end;
end;
var
ThreadItem : TThreadItem;
s: string;
+ i: Integer;
begin
if GikoSys.FAbon.GoForward =false then begin
MsgBox(Handle, '\88ê\82Â\91O\82ÌNG\83\8f\81[\83h\83t\83@\83C\83\8b\82Ì\93Ç\82Ý\8d\9e\82Ý\82É\8e¸\94s\82µ\82Ü\82µ\82½', '\83G\83\89\81[', MB_OK or MB_ICONEXCLAMATION);
StatusBar.Panels.Items[2].Text := s;
StatusBar.Panels[2].Width := Max(StatusBar.Canvas.TextWidth(s), 100);
StatusBarResize(Sender);
+ for i := BrowserTab.Tabs.Count - 1 downto 0 do
+ TBrowserRecord(BrowserTab.Tabs.Objects[i]).Repaint := true;
+
ThreadItem := GetActiveContent;
if ThreadItem <> nil then
- SetContent( ThreadItem );
+ InsertBrowserTab( ThreadItem, True );
end;
end;
var
ThreadItem : TThreadItem;
s: string;
+ i: Integer;
begin
if GikoSys.FAbon.GoBack =false then begin
MsgBox(Handle, '\88ê\82Â\8cã\82ë\82ÌNG\83\8f\81[\83h\83t\83@\83C\83\8b\82Ì\93Ç\82Ý\8d\9e\82Ý\82É\8e¸\94s\82µ\82Ü\82µ\82½', '\83G\83\89\81[', MB_OK or MB_ICONEXCLAMATION);
StatusBar.Panels.Items[2].Text := s;
StatusBar.Panels[2].Width := Max(StatusBar.Canvas.TextWidth(s), 100);
StatusBarResize(Sender);
+ for i := BrowserTab.Tabs.Count - 1 downto 0 do
+ TBrowserRecord(BrowserTab.Tabs.Objects[i]).Repaint := true;
+
ThreadItem := GetActiveContent;
if ThreadItem <> nil then
- SetContent( ThreadItem );
+ InsertBrowserTab( ThreadItem, True );
end;
end;
procedure TGikoForm.IndividualAbon1Click(Sender: TObject);
var
ThreadItem : TThreadItem;
+ i: Integer;
begin
GikoSys.FAbon.AddIndividualAbon(KokoPopupMenu.Tag,1);
ThreadItem := GetActiveContent;
+ for i := BrowserTab.Tabs.Count - 1 downto 0 do
+ TBrowserRecord(BrowserTab.Tabs.Objects[i]).Repaint := true;
+
if ThreadItem <> nil then
- SetContent( ThreadItem );
+ InsertBrowserTab( ThreadItem, True );
end;
//\8cÂ\95Ê\82 \82Ú\81[\82ñ\81u\93§\96¾\81v
procedure TGikoForm.IndividualAbon2Click(Sender: TObject);
var
ThreadItem : TThreadItem;
+ i: Integer;
begin
GikoSys.FAbon.AddIndividualAbon(KokoPopupMenu.Tag,0);
ThreadItem := GetActiveContent;
+ for i := BrowserTab.Tabs.Count - 1 downto 0 do
+ TBrowserRecord(BrowserTab.Tabs.Objects[i]).Repaint := true;
if ThreadItem <> nil then
- SetContent( ThreadItem );
+ InsertBrowserTab( ThreadItem, True );
end;
//\8cÂ\95Ê\82 \82Ú\81[\82ñ\89ð\8f\9c\81i\81j
procedure TGikoForm.AntiIndividualAbonClick(Sender: TObject);
var
ThreadItem : TThreadItem;
msg : String;
+ i: Integer;
begin
if GikoSys.FAbon.GetAbonResCount <> 0 then begin
GikoSys.FAbon.DeleteIndividualAbon(KokoPopupMenu.Tag);
ThreadItem := GetActiveContent;
+ for i := BrowserTab.Tabs.Count - 1 downto 0 do
+ TBrowserRecord(BrowserTab.Tabs.Objects[i]).Repaint := true;
if ThreadItem <> nil then
- SetContent( ThreadItem );
+ InsertBrowserTab( ThreadItem, True );
end else begin
msg := '\82±\82Ì\83X\83\8c\83b\83h\82Å\82Í\8cÂ\95Ê\82 \82Ú\81`\82ñ\82ð\8ds\82Á\82Ä\82Ü\82¹\82ñ';
MsgBox(Handle, msg, '\83\81\83b\83Z\81[\83W', MB_OK);
if IndividualForm.ShowModal = mrOK then begin
GikoSys.FAbon.DeleteIndividualAbon(IndividualForm.ResNumber);
end;
+ for i := BrowserTab.Tabs.Count - 1 downto 0 do
+ TBrowserRecord(BrowserTab.Tabs.Objects[i]).Repaint := true;
ThreadItem := GetActiveContent;
if ThreadItem <> nil then
- SetContent( ThreadItem );
+ InsertBrowserTab( ThreadItem, True );
end else begin
msg := '\82±\82Ì\83X\83\8c\83b\83h\82Å\82Í\8cÂ\95Ê\82 \82Ú\81`\82ñ\82ð\8ds\82Á\82Ä\82Ü\82¹\82ñ';
MsgBox(Handle, msg, '\83\81\83b\83Z\81[\83W', MB_OK);
CurItem := TreeView.Items.GetFirstNode;
end;
while CurItem <> nil do begin
- if (CurItem.ImageIndex <> 2) and (GikoSys.VaguePos(s,CurItem.Text) <> 0) then begin
+ if (CurItem.ImageIndex <> 2) and (VaguePos(s,CurItem.Text) <> 0) then begin
break;
end;
CurItem := CurItem.GetNext;
CabinetHistoryAction.Checked := False;
// \82¨\8bC\82É\93ü\82è\82Ì\83c\83\8a\81[\82ð\93W\8aJ
- FavoriteTreeView.TopItem.Expanded := True;
+ FavoriteTreeView.Items.GetFirstNode.Expanded := True;
end;
Node := FavoriteDM.TreeView.Items.AddChildObject(FavNode, ThreadItem.Title, FavoThreadItem);
Node.ImageIndex := 16;
Node.SelectedIndex := 16;
+ end else if Source is TBrowserRecord then begin
+ ThreadItem := TBrowserRecord( Source ).FThread;
+ FavoThreadItem := TFavoriteThreadItem.CreateWithItem( ThreadItem );
+ Node := FavoriteDM.TreeView.Items.AddChildObject(FavNode, ThreadItem.Title, FavoThreadItem);
+ Node.ImageIndex := 16;
+ Node.SelectedIndex := 16;
end else if Source is TFavoriteThreadItem then begin
FavoThreadItem := TFavoriteThreadItem( Source );
ThreadItem := FavoThreadItem.Item;
LinkToolButton := TLinkToolButton( Source );
//ShowMessage(LinkToolButton.Text);
- SourceNode := TreeNodeDataFind( FavoriteTreeView.TopItem, LinkToolButton.Data );
+ SourceNode := TreeNodeDataFind( FavoriteTreeView.Items.GetFirstNode, LinkToolButton.Data );
FavoriteMoveTo( SenderNode, SourceNode );
end else if Source = BrowserTab then begin
idx := BrowserTab.TabIndex;
FavoriteAddTo( SenderNode, BrowserTab.Tabs.Objects[idx] );
-
end else if Source = ListView then begin
FavoriteAddTo( SenderNode, ListView.Selected.Data );
FavoriteTreeViewDeleteActionExecute( Sender );
end;
VK_RETURN:
+ begin
FavoriteClick( FavoriteTreeView.Selected );
+ FavoriteTreeView.Selected.Expanded := not FavoriteTreeView.Selected.Expanded;
+ end;
VK_SPACE:
FavoriteTreeViewDblClick( Sender );
end;
begin
FavoriteBrowseFolder( FClickNode );
- BrowserTab.OnChange(nil);
+ //BrowserTab.OnChange(nil);
end;
FavThread: TFavoriteThreadItem;
Board: TBoard;
FavBoard: TFavoriteBoardItem;
+ shiftDown: Boolean;
begin
if FClickNode = nil then Exit;
+ shiftDown := GetAsyncKeyState(VK_SHIFT) = Smallint($8001);
+
if TObject( FClickNode.Data ) is TFavoriteThreadItem then begin
FavThread := TFavoriteThreadItem( FClickNode.Data );
ThreadItem := FavThread.Item;
if ThreadItem <> nil then
- DownloadContent(ThreadItem);
+ DownloadContent(ThreadItem, shiftDown);
end else if TObject( FClickNode.Data ) is TFavoriteBoardItem then begin
FavBoard := TFavoriteBoardItem( FClickNode.Data );
Board := FavBoard.Item;
- DownloadList(Board);
+ DownloadList(Board, shiftDown);
end;
end;
end else if (X = FMouseDownPos.X) and (Y = FMouseDownPos.Y) then begin
if GikoSys.Setting.ListOrientation = gloHorizontal then begin
if GikoSys.Setting.ListWidthState = glsMin then begin
- BrowserMaxAction.Execute;
- if GikoForm.Visible then
- Browser.SetFocus;
+ BrowserMaxAndFocusAction.Execute;
end;
end else begin
if GikoSys.Setting.ListHeightState = glsMin then begin
- BrowserMaxAction.Execute;
- if GikoForm.Visible then
- Browser.SetFocus;
+ BrowserMaxAndFocusAction.Execute;
end;
- end;
+ end;
end;
end;
end;
procedure TGikoForm.OnlyAHundredResExecute(Sender: TObject);
-var
- ThreadItem : TThreadItem;
begin
+ if (FActiveContent <> nil) and (FActiveContent.FBrowser.Busy) then begin
+ AHundredResButton.Down := not AHundredResButton.Down;
+ Exit;
+ end;
GikoSys.OnlyAHundredRes := OnlyAHundredRes.Checked;
- ThreadItem := GetActiveContent;
- if ThreadItem <> nil then
- SetContent( ThreadItem );
+ if FActiveContent <> nil then begin
+ SetContent(FActiveContent);
+ end;
end;
procedure TGikoForm.FavoriteTreeViewEndDrag(Sender, Target: TObject; X,
end;
procedure TGikoForm.ExportFavoriteFileAccept(Sender: TObject);
begin
+
if FavoriteDM.SaveFavoriteFile( ExportFavoriteFile.Dialog.FileName ) Then begin
ShowMessage('\83t\83@\83C\83\8b\82ð\8fo\97Í\82µ\82Ü\82µ\82½');
end else begin
Header := CustomStringReplace(Header, '</b>', '',true);
Header := CustomStringReplace(Header, '<b>', '',true);
end;
+ if ThreadItem.IsBoardPlugInAvailable then begin
+ Body := CustomStringReplace(Res.FBody, '<br>', #13#10,true);
+ Body := CustomStringReplace(Body, '<br>', #13#10,true);
+ end else begin
+ Body := CustomStringReplace(Res.FBody, ' <br> ', #13#10,true);
+ Body := CustomStringReplace(Body, ' <br>', #13#10,true);
+ Body := CustomStringReplace(Body, '<br> ', #13#10,true);
+ Body := CustomStringReplace(Body, '<br>', #13#10,true);
- Body := CustomStringReplace(Res.FBody, '<br> ', #13#10,true);
- Body := CustomStringReplace(Body, '<br>', #13#10,true);
+ end;
Body := CustomStringReplace(Body, '</a>', '',true);
Body := GikoSys.DeleteLink(Body);
Body := CustomStringReplace(Body, '>', '>');
Body := CustomStringReplace(Body, '"', '"');
Body := CustomStringReplace(Body, '&', '&');
- Body := CustomStringReplace(Body, ' ', ' ');
+ //Body := CustomStringReplace(Body, ' ', ' ');
end;
Header := Header + Body;
begin
FIsMinimize := mtMinimizing;
if FActiveContent <> nil then
- FActiveContent.ScrollTop := OleVariant(IHTMLDocument2(Browser.Document)).Body.ScrollTop;
+ FActiveContent.Thread.ScrollTop := OleVariant(IHTMLDocument2(FActiveContent.Browser.Document)).Body.ScrollTop;
PostMessage( Handle, USER_MINIMIZED, 0, 0 );
end;
boardPlugIn.PlugInMenu( item.Handle );
end;
-
-procedure TGikoForm.ListViewClick(Sender: TObject);
-begin
- ListClick;
-end;
-
// TreeView \82ª\83N\83\8a\83b\83N\82³\82ê\82½
procedure TGikoForm.TreeClick( Node : TTreeNode );
var
SetActiveList(Node.data);
end;
+ if TObject( Node.Data ) is TBoard then begin // not TCategory
+ if GikoSys.Setting.ListOrientation = gloHorizontal then begin
+ if GikoSys.Setting.ListWidthState = glsMax then begin
+ BrowserMinAction.Execute;
+ if GikoForm.Visible then
+ ListView.SetFocus;
+ end;
+ end else begin
+ if GikoSys.Setting.ListHeightState = glsMax then begin
+ BrowserMinAction.Execute;
+ if GikoForm.Visible then
+ ListView.SetFocus;
+ end;
+ end;
+ end;
+
end;
// TreeView \82ª\83_\83u\83\8b\83N\83\8a\83b\83N\82³\82ê\82½
var
Board : TBoard;
ThreadItem : TThreadItem;
+ shiftDown : Boolean;
begin
if Node = nil then Exit;
+ shiftDown := GetAsyncKeyState(VK_SHIFT) = Smallint($8001);
+
if FTreeType = gtt2ch then begin
if not (TObject(Node.Data) is TBoard) then Exit;
Board := TBoard(Node.Data);
- DownloadList(Board);
+ DownloadList(Board, shiftDown);
end else if FTreeType = gttHistory then begin
if not (TObject(Node.Data) is TFavoriteThreadItem) then Exit;
ThreadItem := TFavoriteThreadItem(Node.Data).Item;
- DownloadContent(ThreadItem);
+ DownloadContent(ThreadItem, shiftDown);
end;
end;
TreeDoubleClick( TreeView.Selected );
end else if Key = VK_RETURN then begin
TreeClick( TreeView.Selected );
+ TreeView.Selected.Expanded := not TreeView.Selected.Expanded;
end;
end;
-// \83u\83\89\83E\83U\82Ì\83L\81[\83_\83E\83\93\83C\83x\83\93\83g
+// \83u\83\89\83E\83U\82Ì\83L\81[\83_\83E\83\93\83C\83x\83\93\83g //\82È\82ñ\82©\8eg\82í\82È\82\82Ä\82à\93®\82¢\82Ä\82é\8bC\82ª\82·\82é\81@by\82à\82¶\82ã
// \83C\83x\83\93\83g\82ð\8eæ\82è\88µ\82Á\82½\8fê\8d\87\82Í True \82ð\95Ô\82·
function TGikoForm.BrowserKeydown(var Msg: TMsg; Key: Word; State:TShiftState) : Boolean;
var
iOIPAO : IOleInPlaceActiveObject;
Dispatch : IDispatch;
begin
-
+ Result := False;
if Key = VK_BACK then begin
UpBoardAction.Execute;
Result := True;
Result := True;
end else begin
// \82»\82ê\88È\8aO\82Ì\83C\83x\83\93\83g\82Í Browser \82É\97¬\82·
- Dispatch := Browser.Application;
- if Dispatch <> nil then begin
- Dispatch.QueryInterface( IOleInPlaceActiveObject, iOIPAO );
- if iOIPAO <> nil then
- iOIPAO.TranslateAccelerator( Msg );
+ if(FActiveContent <> nil) and (FActiveContent.Browser <> nil) then begin
+ Dispatch := FActiveContent.Browser.Application;
+ if Dispatch <> nil then begin
+ Dispatch.QueryInterface( IOleInPlaceActiveObject, iOIPAO );
+ if iOIPAO <> nil then
+ iOIPAO.TranslateAccelerator( Msg );
+ end;
end;
-
// \83M\83R\83i\83r\82Å\8eg\82¤\83V\83\87\81[\83g\83J\83b\83g\82Í\8eó\82¯\8eæ\82è\82½\82¢\82Ì\82Å\83C\83x\83\93\83g\82Í\83J\83b\83g\82µ\82È\82¢
- Result := False;
+ //Result := False;
end;
end;
// \83M\83R\83i\83r\82Ì\83\81\83b\83Z\81[\83W\83\8b\81[\83v\82ð\89¡\8eæ\82è\82µ\82Ü\82·
procedure TGikoForm.HandleAppMessage(var Msg: TMsg; var Handled: Boolean);
-var
- key : Word;
-begin
+//var
+// key : Word;
+begin
case Msg.message of
- WM_KEYDOWN:
- if IsDialogMessage( Browser.Handle, Msg ) then begin
- key := Msg.wParam;
- Handled := BrowserKeyDown( Msg, key, KeyDataToShiftState( Msg.lParam ) );
- end;
+ {WM_KEYDOWN:
+ if (FActiveContent <> nil) and (FActiveContent.Browser <> nil) then begin
+ if IsDialogMessage( FActiveContent.Browser.Handle, Msg ) then begin
+ key := Msg.wParam;
+ Handled := BrowserKeyDown( Msg, key, KeyDataToShiftState( Msg.lParam ) );
+ end;
+ end;}
+
WM_XBUTTONDOWN:
case Msg.wParam shr 16 of
- XBUTTON1:
- if IsDialogMessage( Browser.Handle, Msg ) then begin
- UpBoardAction.Execute;
- Handled := True;
- end else if IsDialogMessage( ListView.Handle, Msg ) then begin
- UpFolderAction.Execute;
- Handled := True;
+ XBUTTON1:
+ begin
+ if (FActiveContent <> nil) and (FActiveContent.Browser <> nil) then begin
+ if IsDialogMessage( FActiveContent.Browser.Handle, Msg ) then begin
+ UpBoardAction.Execute;
+ Handled := True;
+ end;
+ end;
+ if not Handled then begin
+ if IsDialogMessage( ListView.Handle, Msg ) then begin
+ UpFolderAction.Execute;
+ Handled := True;
+ end;
+ end;
end;
- XBUTTON2:
+ XBUTTON2:
end;
end;
-
- end;
+end;
procedure TGikoForm.FavoriteTreeViewMouseDown(Sender: TObject;
- Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
+ Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
favItem : TTreeNode;
favThreadItem : TFavoriteThreadItem;
if TObject( favItem.Data ) is TFavoriteThreadItem then begin
favThreadItem := TFavoriteThreadItem( favItem.Data );
if favThreadItem.Item <> nil then
- InsertBrowserTab( favThreadItem.Item );
+ InsertBrowserTab( favThreadItem.Item, False );
end;
end;
end;
(abs( Y - FMouseDownPos.Y ) < Mouse.DragThreshold) then begin
FavoriteClick( TObject( FavoriteTreeView.Selected ) );
end;
-
+
+end;
+
+destructor TBrowserRecord.Destroy;
+var
+ doc :OleVariant;
+begin
+ if Self.FEvent <> nil then
+ Self.FEvent.Free;
+ if Self.FBrowser <> nil then begin
+ if Self.Thread <> nil then begin
+ doc := Idispatch( olevariant(Self.FBrowser.ControlInterface).Document) as IHTMLDocument2;
+ Self.Thread.ScrollTop := doc.Body.ScrollTop;
+ end;
+ //TOleControl(Self.FBrowser).Visible := false;
+ ShowWindow(Self.FBrowser.Handle, SW_HIDE);
+ end;
+
+end;
+
+procedure TGikoForm.OnlyAHundredResUpdate(Sender: TObject);
+begin
+ OnlyAHundredRes.Enabled := (GetActiveContent <> nil) and (GetActiveContent.IsLogFile);
+end;
+
+function TGikoForm.WebBrowserClick(Sender: TObject): WordBool;
+begin
+ result := true;
+ try
+ if (FActiveContent <> nil) and (FActiveContent.Browser <> nil) then
+ FActiveContent.FBrowser.SetFocus;
+ except
+ end;
+end;
+
+procedure TGikoForm.SetFocusForBrowserActionExecute(Sender: TObject);
+begin
+ FActiveContent.FBrowser.SetFocus;
+end;
+
+procedure TGikoForm.SetFocusForBrowserActionUpdate(Sender: TObject);
+begin
+ if( FActiveContent <> nil) and (FActiveContent.Browser <> nil) and
+ (FActiveContent.Browser <> BrowserNullTab.Browser) then
+ SetFocusForBrowserAction.Enabled := true
+ else
+ SetFocusForBrowserAction.Enabled := false;
+end;
+
+procedure TGikoForm.SetFocusForThreadListActionExecute(Sender: TObject);
+var
+ rct: TRect;
+begin
+ if FActiveContent <> nil then
+ WebBrowserClick(FActiveContent.Browser); //\88ê\89ñBrowser\82É\93\96\82Ä\82È\82¢\82Æ\93®\82©\82È\82¢\82Æ\82«\82ª\82 \82é
+ ListView.SetFocus;
+ if( ListView.Items.Count > 0 ) and (ListView.ItemFocused = nil) then
+ ListView.Items.Item[0].Selected := true //\91I\91ð\83A\83C\83e\83\80\82ª\96³\82¢\82Æ\82«\82Í\90æ\93ª\82Ì\82ð\91I\91ð\82·\82é
+ else begin
+ ListView.Scroll(-ListView.ClientWidth, -ListView.ClientHeight);
+ rct := ListView.ItemFocused.DisplayRect(drBounds);
+ ListView.Scroll(0, 2 * rct.Top - rct.Bottom);
+ if ListView.ViewStyle <> vsReport then begin
+ ListView.Scroll(rct.Left, 0);
+ end;
+ end;
+end;
+
+procedure TGikoForm.SetFocusForCabinetActionExecute(Sender: TObject);
+begin
+ if FActiveContent <> nil then
+ WebBrowserClick(FActiveContent.Browser); //\88ê\89ñBrowser\82É\93\96\82Ä\82È\82¢\82Æ\93®\82©\82È\82¢\82Æ\82«\82ª\82 \82é
+ if TreeView.Visible then begin
+ TreeView.SetFocus;
+ if(TreeView.Items.Count > 0) and ( TreeView.Selected = nil ) then
+ TreeView.Items.Item[0].Selected := true;
+ end else if FavoriteTreeView.Visible then begin
+ FavoriteTreeView.SetFocus;
+ if(FavoriteTreeView.Items.Count > 0) and (FavoriteTreeView.Selected = nil) then
+ FavoriteTreeView.Items.Item[0].Selected := true;
+ end;
+end;
+procedure TGikoForm.SetFocusForCabinetActionUpdate(Sender: TObject);
+begin
+ SetFocusForCabinetAction.Enabled := CabinetPanel.Visible;
+end;
+
+//\83u\83\89\83E\83U\82ð\8dÅ\91å\89»\82µ\82Ä\83t\83H\81[\83J\83X\82ð\93\96\82Ä\82é\81B
+procedure TGikoForm.BrowserMaxAndFocusActionExecute(Sender: TObject);
+begin
+ BrowserMaxAction.Execute;
+ SetFocusForBrowserAction.Execute;
+end;
+
+procedure TGikoForm.BrowserMaxAndFocusActionUpdate(Sender: TObject);
+begin
+ if( FActiveContent <> nil) and (FActiveContent.Browser <> nil) and
+ (FActiveContent.Browser <> BrowserNullTab.Browser) then
+ BrowserMaxAndFocusAction.Enabled := true
+ else
+ BrowserMaxAndFocusAction.Enabled := false;
+end;
+//\83X\83\8c\83b\83h\88ê\97\97\82ð\8dÅ\91å\89»\82µ\82Ä\83t\83H\81[\83J\83X\82ð\93\96\82Ä\82é
+procedure TGikoForm.ThreadlistMaxAndFocusActionExecute(Sender: TObject);
+begin
+ BrowserMinAction.Execute;
+ SetFocusForThreadListAction.Execute;
+end;
+
+procedure TGikoForm.ListViewExit(Sender: TObject);
+begin
+ ListView.Repaint;
+end;
+
+
+procedure TGikoForm.ListViewSelectItem(Sender: TObject; Item: TListItem;
+ Selected: Boolean);
+begin
+
+ if not (GikoSys.Setting.BrowserTabVisible) and (Item <> nil) then
+ if (TObject( Item.Data ) is TThreadItem) then begin
+ SelectTimer.Interval := GikoSys.Setting.SelectInterval;
+ end else
+ SelectTimer.Interval := 0
+ else
+ SelectTimer.Interval := 0;
+
+end;
+
+procedure TGikoForm.SelectTimerTimer(Sender: TObject);
+begin
+ if not (ListView.Selected = nil) then
+ if( FActiveContent = nil) or
+ (GetActiveContent <> TThreadItem(ListView.Selected.Data) ) then begin
+ SelectTimer.Interval := 0;
+ ListClick;
+ end;
+end;
+
+procedure TGikoForm.SelectItemSaveForDatExecute(Sender: TObject);
+var
+ List: TList;
+ i: Integer;
+begin
+ List := TList.Create;
+ try
+ Screen.Cursor := crHourGlass;
+ SelectListItem(List);
+ if ((GikoSys.Setting.ListOrientation = gloVertical) and
+ (GikoSys.Setting.ListHeightState = glsMax)) or
+ ((GikoSys.Setting.ListOrientation = gloHorizontal) and
+ (GikoSys.Setting.ListWidthState = glsMax)) then
+ ShowMessage('\83X\83\8c\83b\83h\88ê\97\97\82ð\95\\8e¦\82µ\82Ä\82\82¾\82³\82¢')
+ else if(List.Count = 0) then
+ ShowMessage('\83X\83\8c\83b\83h\82ð\91I\91ð\82µ\82Ä\82\82¾\82³\82¢')
+ else begin
+ FileSaveAs1.Dialog.Title := '\91I\91ð\83X\83\8c\83b\83h\82ðdat\82Ì\82Ü\82Ü\95Û\91¶';
+ FileSaveAs1.Dialog.Filter := 'DAT\83t\83@\83C\83\8b(*.dat)|*.dat';
+ for i := 0 to List.Count - 1 do begin
+ if (TObject(List[i]) is TThreadItem) and (TThreadItem(List[i]).IsLogFile) then begin
+ FileSaveAs1.Dialog.FileName := TThreadItem(List[i]).FileName;
+ if FileSaveAs1.Execute then begin
+ //\82È\82º\82©\83L\83\83\83\93\83Z\83\8b\82Å\82à\82±\82Á\82¿\82É\93ü\82Á\82Ä\82\82é
+ if ExtractFilePath(FileSaveAs1.Dialog.FileName) <> '' then begin
+ CopyFile(PChar(TThreadItem(List[i]).FilePath),
+ PChar(FileSaveAs1.Dialog.FileName), true);
+ end;
+ end;
+ end;
+ end;
+ end;
+ finally
+ Screen.Cursor := crDefault;
+ List.Free;
+ end;
+
+end;
+
+procedure TGikoForm.SelectItemSaveForHTMLExecute(Sender: TObject);
+var
+ List: TList;
+ i: Integer;
+ html: TStringList;
+ title: string;
+begin
+ List := TList.Create;
+ try
+ Screen.Cursor := crHourGlass;
+ SelectListItem(List);
+ if ((GikoSys.Setting.ListOrientation = gloVertical) and
+ (GikoSys.Setting.ListHeightState = glsMax)) or
+ ((GikoSys.Setting.ListOrientation = gloHorizontal) and
+ (GikoSys.Setting.ListWidthState = glsMax)) then
+ ShowMessage('\83X\83\8c\83b\83h\88ê\97\97\82ð\95\\8e¦\82µ\82Ä\82\82¾\82³\82¢')
+ else if(List.Count = 0) then
+ ShowMessage('\83X\83\8c\83b\83h\82ð\91I\91ð\82µ\82Ä\82\82¾\82³\82¢')
+ else begin
+ FileSaveAs1.Dialog.Title := '\91I\91ð\83X\83\8c\83b\83h\82ðHTML\89»\82µ\82Ä\95Û\91¶';
+ FileSaveAs1.Dialog.Filter := 'HTML\83t\83@\83C\83\8b(*.html)|*.html';
+ for i := 0 to List.Count - 1 do begin
+ if (TObject(List[i]) is TThreadItem) and (TThreadItem(List[i]).IsLogFile) then begin
+ FileSaveAs1.Dialog.FileName := TThreadItem(List[i]).Title + '.html';
+ if FileSaveAs1.Execute then begin
+ //\82È\82º\82©\83L\83\83\83\93\83Z\83\8b\82Å\82à\82±\82Á\82¿\82É\93ü\82Á\82Ä\82\82é
+ if ExtractFilePath(FileSaveAs1.Dialog.FileName) <> '' then begin
+ html := TStringList.Create;
+ title := TThreadItem(List[i]).Title;
+ try
+ GikoSys.CreateHTML3(html, TThreadItem(List[i]), title);
+ html.SaveToFile(FileSaveAs1.Dialog.FileName);
+ SkinorCSSFilesCopy(ExtractFilePath(FileSaveAs1.Dialog.FileName));
+ finally
+ html.Free;
+ end;
+ end;
+ end;
+ end;
+ end;
+ end;
+ finally
+ Screen.Cursor := crDefault;
+ List.Free;
+ end;
+end;
+procedure TGikoForm.SkinorCSSFilesCopy(path: string);
+var
+ tmp, tmpD, tmpF: string;
+ current: string;
+ dirs: TStringList;
+ files: TStringList;
+ i, j: Integer;
+begin
+ if GikoSys.Setting.UseSkin then begin
+ current := ExtractFilePath(GikoSys.GetSkinDir);
+ tmp := GikoSys.Setting.CSSFileName;
+ end else if GikoSys.Setting.UseCSS then begin
+ current := ExtractFilePath(GikoSys.GetStyleSheetDir);
+ tmp := ExtractFilePath(GikoSys.GetStyleSheetDir + GikoSys.Setting.CSSFileName);
+ end;
+ dirs := TStringList.Create;
+ try
+ dirs.Add(tmp);
+ if tmp <> current then begin
+ GikoSys.GetDirectoryList(current, '*.*', dirs, true);
+ for i := 0 to dirs.Count - 1 do begin
+ files := TStringList.Create;
+ try
+ gikoSys.GetFileList(dirs[i], '*.*', files, true);
+ tmpD := CustomStringReplace(dirs[i], GikoSys.GetConfigDir, path);
+ if (AnsiPos(dirs[i], tmp) <> 0) and not (DirectoryExists(tmpD)) then
+ ForceDirectories(tmpD);
+
+ if(dirs[i] = tmp) and (dirs[i] <> current) then begin
+ for j := 0 to files.Count - 1 do begin
+ tmpF := CustomStringReplace(files[j], GikoSys.GetConfigDir, path);
+ if not FileExists(tmpF) then begin
+ CopyFile(PChar(files[j]), PChar(tmpF),True);
+ end;
+ end;
+ end;
+ finally
+ files.Free;
+ end;
+ end;
+ end else begin
+ tmpD := CustomStringReplace(dirs[0], GikoSys.GetConfigDir, path);
+ if not DirectoryExists(tmpD) then
+ ForceDirectories(tmpD);
+ tmpF := CustomStringReplace(GikoSys.GetStyleSheetDir + GikoSys.Setting.CSSFileName
+ , GikoSys.GetConfigDir, path);
+ if not FileExists(tmpF) then begin
+ CopyFile(PChar(GikoSys.GetStyleSheetDir + GikoSys.Setting.CSSFileName)
+ , PChar(tmpF), True);
+ end;
+ end;
+ finally
+ dirs.Free;
+ end;
+
+
+end;
+procedure TGikoForm.KidokuActionExecute(Sender: TObject);
+var
+ List: TList;
+ i: Integer;
+begin
+ List := TList.Create;
+ try
+ SelectListItem(List);
+ for i := 0 to List.Count - 1 do begin
+ if TObject(List[i]) is TThreadItem then begin
+ TThreadItem(List[i]).UnRead := false;
+ TThreadItem(List[i]).ParentBoard.UnRead := TThreadItem(List[i]).ParentBoard.UnRead - 1;
+ end;
+ end;
+ if TreeView.Visible then
+ TreeView.Refresh;
+ finally
+ List.Free;
+ end;
+end;
+
+procedure TGikoForm.MidokuActionExecute(Sender: TObject);
+var
+ List: TList;
+ i: Integer;
+begin
+ List := TList.Create;
+ try
+ SelectListItem(List);
+ for i := 0 to List.Count - 1 do begin
+ if TObject(List[i]) is TThreadItem then begin
+ TThreadItem(List[i]).UnRead := true;
+ TThreadItem(List[i]).ParentBoard.UnRead := TThreadItem(List[i]).ParentBoard.UnRead + 1;
+ end;
+ end;
+ if TreeView.Visible then
+ TreeView.Refresh;
+ finally
+ List.Free;
+ end;
+end;
+
+procedure TGikoForm.BrowserPanelCanResize(Sender: TObject; var NewWidth,
+ NewHeight: Integer; var Resize: Boolean);
+var
+ i: Integer;
+begin
+ for i := 0 to BROWSER_COUNT - 1 do
+ SetWindowPos(TWebBrowser(FBrowsers[i]).Handle, HWND_NOTOPMOST, 0, 0, NewWidth, NewHeight, SWP_NOMOVE + SWP_NOZORDER);
+
+ if (FActiveContent <> nil) and (FActiveContent.Browser <> nil) then begin
+ SetWindowPos(FActiveContent.Browser.Handle, HWND_NOTOPMOST, 0, 0, NewWidth, NewHeight, SWP_NOMOVE + SWP_NOZORDER);
+ end;
+end;
+
+procedure TGikoForm.LogFolderOpenActionExecute(Sender: TObject);
+var
+ List: TList;
+begin
+ if ((GikoSys.Setting.ListOrientation = gloVertical) and
+ (GikoSys.Setting.ListHeightState = glsMax)) or
+ ((GikoSys.Setting.ListOrientation = gloHorizontal) and
+ (GikoSys.Setting.ListWidthState = glsMax)) then begin
+ if(GetActiveContent <> nil) then begin
+ GikoSys.CreateProcess('explorer.exe', '/e,"' + ExtractFilePath(GetActiveContent.FilePath) + '"');
+ end;
+ end else if GetActiveList is TCategory then begin
+ List := TList.Create;
+ try
+ SelectListItem(List);
+ GikoSys.CreateProcess('explorer.exe', '/e,"' + ExtractFilePath(TBoard(List[0]).FilePath) + '"');
+ finally
+ List.Free;
+ end;
+ end else if GetActiveList is TBoard then begin
+ GikoSys.CreateProcess('explorer.exe', '/e,"' + ExtractFilePath(TBoard(GetActiveList).FilePath) + '"');
+ end;
+
+end;
+
+procedure TGikoForm.LogFolderOpenActionUpdate(Sender: TObject);
+begin
+ if (GetActiveList is TCategory) and (ListView.SelCount > 0) then
+ LogFolderOpenAction.Enabled := True
+ else if GetActiveList is TBoard then
+ LogFolderOpenAction.Enabled := True
+ else
+ LogFolderOpenAction.Enabled := False;
+end;
+
+procedure TGikoForm.LocalRuleViewClick(Sender: TObject);
+var
+ RefURL,
+ RefeURL,
+ RuleURL,
+ RuleTxt:String;
+ FBoard: TBoard;
+ Indy: TIdHTTP;
+ FileStream: TFileStream;
+begin
+ //\83\8d\81[\83J\83\8b\83\8b\81[\83\8b\8eæ\93¾ by \92è\8aú\95Ö
+ RefURL := GikoSys.UrlToServer(FBoard.URL)
+ + GikoSys.UrlToID(FBoard.URL)
+ + '/';
+ //\8e\8e\82µ\82É\83\8d\81[\83J\83\8b\83\8b\81[\83\8b\8eæ\93¾\82à
+ RuleURL := RefURL
+ + 'head.txt';
+ //\8eæ\93¾\81`
+ RuleTxt := Indy.Get(RuleURL);
+ //FileStream.Create('head.txt', fmCreate) := Indy.Get(RuleURL, FileStream);
+ //\8e\8e\8c±\95\\8e¦\81`
+ if RuleTxt = '' then begin
+ ShowMessage('\83\8d\81[\83J\83\8b\83\8b\81[\83\8b\8eæ\93¾\8e¸\94s');
+ end;
+ ShowMessage(RuleTxt);
+
+end;
+
+procedure TGikoForm.TabSaveClick(Sender: TObject);
+var
+ SaveStringList: TStringList;
+ TabIdx: Integer;
+begin
+ SaveStringList := TStringList.Create;
end;
initialization