From 437dd08c49f4c56911cec8db5c55c0e0a268dc89 Mon Sep 17 00:00:00 2001 From: h677 Date: Sun, 27 Nov 2005 15:51:34 +0000 Subject: [PATCH] =?utf8?q?TBrowserRecord=E3=82=92=E5=88=A5=E3=83=95?= =?utf8?q?=E3=82=A1=E3=82=A4=E3=83=AB=E3=81=AB=E8=BF=BD=E3=81=84=E5=87=BA?= =?utf8?q?=E3=81=97=E3=81=9F=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- BrowserRecord.pas | 77 ++++++++++++++++++++++++++++++ Giko.pas | 134 ++++++++++------------------------------------------- GikoDataModule.pas | 2 +- Option.pas | 2 +- gikoNavi.dpr | 3 +- 5 files changed, 105 insertions(+), 113 deletions(-) create mode 100644 BrowserRecord.pas diff --git a/BrowserRecord.pas b/BrowserRecord.pas new file mode 100644 index 0000000..ab6ee16 --- /dev/null +++ b/BrowserRecord.pas @@ -0,0 +1,77 @@ +unit BrowserRecord; + +interface + +uses + Windows, OleCtrls, ActiveX, +{$IF Defined(DELPRO) } + SHDocVw, + MSHTML, +{$ELSE} + SHDocVw_TLB, + MSHTML_TLB, +{$IFEND} + BoardGroup, HTMLDocumentEvent; + +type + TBrowserRecord = class( TObject ) + private + FBrowser : TWebBrowser; + FEvent: THTMLDocumentEventSink; ///< ƒuƒ‰ƒEƒUƒhƒLƒ…ƒƒ“ƒgƒCƒxƒ“ƒg + FThread : TThreadItem; + FLastSize : Integer; + FRepaint : Boolean; + FMovement : string; ///< ƒXƒNƒ[ƒ‹æƒAƒ“ƒJ[ + public + destructor Destroy; override; + property Event : THTMLDocumentEventSink read FEvent write FEvent; + 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 Movement : string read FMovement write FMovement; + end; + // BrowserRecord‚ɂ‚¢‚Ä‚¢‚éFBrowser‚ðŠO‚· + procedure ReleaseBrowser( BRecord: TBrowserRecord); + +implementation +// ************************************************************************* +//! BrowserRecord‚ɂ‚¢‚Ä‚¢‚éFBrowser‚ðŠO‚· +// ************************************************************************* +procedure ReleaseBrowser( BRecord: TBrowserRecord); +begin + if BRecord <> nil then begin + BRecord.Browser := nil; + if BRecord.Event <> nil then begin + BRecord.Event.Free; + BRecord.Event := nil; + end; + BRecord.Repaint := true; + end; +end; +// ************************************************************************* +//! BrowserRecord‚̃fƒXƒgƒ‰ƒNƒ^ +// ************************************************************************* +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 + //ƒ^ƒu‚Ì•œŒ³‚Å•œŒ³‚³‚ꂽƒXƒŒ‚́A•`‰æ‚³‚ê‚Ä‚¢‚È‚¢‚Æ‚«‚ª‚ ‚é‚Ì‚Å + //‚»‚Ì‚Æ‚«‚̃XƒNƒ[ƒ‹—Ê‚ð•Û‘¶‚µ‚Ä‚µ‚Ü‚¤‚ƃgƒbƒv‚É–ß‚Á‚Ä‚µ‚Ü‚¤B + if Self.FBrowser.OleObject.Document.documentElement.innerText <> '' then begin + doc := Idispatch( olevariant(Self.FBrowser.ControlInterface).Document) as IHTMLDocument2; + Self.Thread.ScrollTop := doc.Body.ScrollTop; + end; + end; + //TOleControl(Self.FBrowser).Visible := false; + ShowWindow(Self.FBrowser.Handle, SW_HIDE); + end; + +end; + + +end. diff --git a/Giko.pas b/Giko.pas index ccb93e5..5bfd2a5 100644 --- a/Giko.pas +++ b/Giko.pas @@ -18,7 +18,7 @@ uses Editor, RoundData, GikoPanel, Favorite, HTMLDocumentEvent, HintWindow, GikoCoolBar, GikoListView, Search, ExternalBoardManager, ExternalBoardPlugInMain, StdActns, Variants, ExtActns,IdTCPConnection, - IdBaseComponent, IdTCPClient, AppEvnts; + IdBaseComponent, IdTCPClient, AppEvnts, BrowserRecord; type TGikoTreeType = (gttNone, gtt2ch, gttHistory, gttFavorite); @@ -26,7 +26,7 @@ type TMinimizeType = (mtNone, mtMinimizing, mtMinimized); TResizeType = (rtNone, rtResizing); - TBrowserRecord = class; +// TBrowserRecord = class; TGikoForm = class(TForm) StatusBar: TStatusBar; @@ -530,7 +530,6 @@ type procedure ListToolBarResize(Sender: TObject); procedure BrowserToolBarResize(Sender: TObject); procedure KokoPopupMenuPopup(Sender: TObject); - procedure BeLogInOutActionUpdate(Sender: TObject); procedure ListViewKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); procedure FavoriteTreeViewEditing(Sender: TObject; Node: TTreeNode; @@ -654,8 +653,6 @@ type function GetTabURLs(AStringList: TStringList) : Boolean; /// ListColumnPopupMenu ƒAƒCƒeƒ€‚̃NƒŠƒbƒNƒCƒxƒ“ƒg procedure ListColumnPopupMenuOnClick( Sender : TObject ); - // BrowserRecord‚ɂ‚¢‚Ä‚¢‚éFBrowser‚ðŠO‚· - procedure ReleaseBrowser( BRecord: TBrowserRecord); //! i‚荞‚Ý•¶Žš—ñÝ’è procedure SetSelectWord( const text : string ); //Œ»Ý‚̃J[ƒ\ƒ‹‚ðŽæ“¾‚·‚é @@ -828,23 +825,6 @@ type property Data: Pointer read FData write FData; end; - TBrowserRecord = class( TObject ) - private - FBrowser : TWebBrowser; - FEvent: THTMLDocumentEventSink; ///< ƒuƒ‰ƒEƒUƒhƒLƒ…ƒƒ“ƒgƒCƒxƒ“ƒg - FThread : TThreadItem; - FLastSize : Integer; - FRepaint : Boolean; - FMovement : string; ///< ƒXƒNƒ[ƒ‹æƒAƒ“ƒJ[ - 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 Movement : string read FMovement write FMovement; - end; - var GikoForm: TGikoForm; @@ -911,7 +891,6 @@ var i: Integer; wp: TWindowPlacement; s: string; - ToolButton: TToolButton; begin {$IFDEF DEBUG} AllocConsole; @@ -2256,13 +2235,6 @@ begin end; end; -{procedure TGikoForm.CabinetPanelVisible(PanelVisible: Boolean); -begin - TreeSplitter.Visible := PanelVisible; - CabinetPanel.Visible := PanelVisible; - CabinetToolButton.Down := PanelVisible; -end;} - procedure TGikoForm.ListViewAllSelect; begin ListView.SetFocus; @@ -2445,21 +2417,6 @@ begin StatusBar.Panels[1].Text := FDownloadTitle + ' - ƒ_ƒEƒ“ƒ[ƒh’† (' + IntToStr(AWorkCount) + '/' + IntToStr(FDownloadMax) + ')'; end; -{ -procedure TGikoForm.SetProgressValue(Number: Integer; Value: Integer; Max: Integer = -1); -var - Component: TComponent; -begin - Component := FindComponent('ProgressBar' + IntToStr(Number + 1)); - if Component <> nil then begin - if not (Component is TProgressBar) then Exit; - if Max <> -1 then - TProgressBar(Component).Max := Max; - TProgressBar(Component).Position := Value; - end; -end; -} - procedure TGikoForm.AddMessageList(ACaption: string; AObject: TObject; Icon: TGikoMessageIcon); var ListItem: TListItem; @@ -2498,9 +2455,9 @@ begin if ThreadItem.IsLogFile then begin //‚¨‹C‚É“ü‚è‚Ì‘S‚ÄŠJ‚­‚Æ‚©‚â‚é‚ƁA¡ŠJ‚¢‚Ä‚éƒXƒŒ‚Ìbrowser‚ð•t‚¯‘Ö‚¦‚é‹°‚ꂪ‚ ‚é //í‚É‚S”Ô–Ú‚ÉActive‚̃uƒ‰ƒEƒU‚ª—ˆ‚È‚¢‚悤‚Ɉړ®‚³‚¹‚é - if (FActiveContent <> nil) and (FActiveContent.FBrowser <> nil) and - (FActiveContent.FBrowser <> BrowserNullTab.Browser)then begin - j := FBrowsers.IndexOf(FActiveContent.FBrowser); + if (FActiveContent <> nil) and (FActiveContent.Browser <> nil) and + (FActiveContent.Browser <> BrowserNullTab.Browser)then begin + j := FBrowsers.IndexOf(FActiveContent.Browser); if j = BROWSER_COUNT - 1 then FBrowsers.Move(BROWSER_COUNT - 1, 0); end; @@ -2512,14 +2469,14 @@ begin if TObject(BrowserTab.Tabs.Objects[i]) is TBrowserRecord then begin if TBrowserRecord(BrowserTab.Tabs.Objects[i]).Thread = ThreadItem then begin Result := TBrowserRecord( BrowserTab.Tabs.Objects[i] ); - if TBrowserRecord(BrowserTab.Tabs.Objects[i]).FBrowser = nil then begin + if TBrowserRecord(BrowserTab.Tabs.Objects[i]).Browser = 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 + if TBrowserRecord(BrowserTab.Tabs.Objects[j]).Browser = TWebBrowser(FBrowsers[BROWSER_COUNT - 1]) then begin ReleaseBrowser(TBrowserRecord(BrowserTab.Tabs.Objects[j])); break; end; end; - TBrowserRecord(BrowserTab.Tabs.Objects[i]).FBrowser := TWebBrowser(FBrowsers[BROWSER_COUNT - 1]); + TBrowserRecord(BrowserTab.Tabs.Objects[i]).Browser := TWebBrowser(FBrowsers[BROWSER_COUNT - 1]); TBrowserRecord(BrowserTab.Tabs.Objects[i]).Repaint := true; FBrowsers.Move(BROWSER_COUNT - 1, 0); end; @@ -2536,7 +2493,7 @@ begin if GikoSys.Setting.BrowserTabAppend = gtaFirst then begin 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 + if TBrowserRecord(BrowserTab.Tabs.Objects[j]).Browser = TWebBrowser(FBrowsers[BROWSER_COUNT - 1]) then begin ReleaseBrowser(TBrowserRecord(BrowserTab.Tabs.Objects[j])); break; end; @@ -2561,7 +2518,7 @@ begin end else begin 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 + if TBrowserRecord(BrowserTab.Tabs.Objects[j]).Browser = TWebBrowser(FBrowsers[BROWSER_COUNT - 1]) then begin ReleaseBrowser(TBrowserRecord(BrowserTab.Tabs.Objects[j])); break; end; @@ -2651,7 +2608,7 @@ 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 + if TBrowserRecord(BrowserTab.Tabs.Objects[i]).Browser = TWebBrowser(FBrowsers[BROWSER_COUNT - 1]) then begin ReleaseBrowser(TBrowserRecord(BrowserTab.Tabs.Objects[i])); break; end; @@ -2681,7 +2638,7 @@ begin if (FActiveContent.Browser <> BrowserNullTab.Browser) then ShowWindow(FActiveContent.Browser.Handle, SW_HIDE); end; - ShowWindow(Thread.FBrowser.Handle, SW_SHOW); + ShowWindow(Thread.Browser.Handle, SW_SHOW); if (not Assigned(Thread.Browser.Document)) then begin Thread.Browser.Navigate('about:blank'); end; @@ -3547,8 +3504,8 @@ begin end; // Access Violation ‚ª‹N‚«‚鎖‚ª‚ ‚é‚̂ō¡Œã—vƒ`ƒFƒbƒN - if(BrowserRecord <> nil) and (BrowserRecord.FBrowser <> nil) then begin - activeBrower := BrowserRecord.FBrowser; + if(BrowserRecord <> nil) and (BrowserRecord.Browser <> nil) then begin + activeBrower := BrowserRecord.Browser; try top := 0; nm := AName; @@ -4235,12 +4192,12 @@ begin end; end; if BrowserRecord <> nil then begin - if BrowserRecord.FEvent <> nil then - BrowserRecord.FEvent.Free; + if BrowserRecord.Event <> nil then + BrowserRecord.Event.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; //’ljÁ‚µ‚½OnClickƒCƒxƒ“ƒg + BrowserRecord.Event := THTMLDocumentEventSink.Create(Self, FDispHtmlDocument, HTMLDocumentEvents2); + BrowserRecord.Event.OnContextMenu := OnDocumentContextMenu; + BrowserRecord.Event.OnClick := WebBrowserClick; //’ljÁ‚µ‚½OnClickƒCƒxƒ“ƒg end; end else begin if GetActiveContent <> nil then begin @@ -5076,7 +5033,7 @@ var begin Result := False; IDAnchorPopup(''); - Doc := FactiveContent.FBrowser.Document as IHtmlDocument2; + Doc := FactiveContent.Browser.Document as IHtmlDocument2; if Assigned(Doc) then begin Range := Doc.selection.createRange as IHTMLTxtRange; s := CustomStringReplace(Range.text, '@', ' ');//‘SŠp‹ó”’‚𔼊p‹ó”’‚É @@ -6063,7 +6020,7 @@ begin Node.ImageIndex := 16; Node.SelectedIndex := 16; end else if Source is TBrowserRecord then begin - ThreadItem := TBrowserRecord( Source ).FThread; + ThreadItem := TBrowserRecord( Source ).Thread; FavoThreadItem := TFavoriteThreadItem.CreateWithItem( ThreadItem ); Node := FavoriteDM.TreeView.Items.AddChildObject(FavNode, ThreadItem.Title, FavoThreadItem); Node.ImageIndex := 16; @@ -6307,9 +6264,6 @@ procedure TGikoForm.FavoriteTreeViewDblClick(Sender: TObject); begin //ƒNƒŠƒbƒNŽž‚Ì‘I‘ðƒCƒxƒ“ƒg‚Æ“¯‚¶‚È‚çƒ_ƒuƒ‹ƒNƒŠƒbƒNŽÀs if (FClickNode = FavoriteTreeView.Selected) then begin -{$IFDEF DEBUG} - Writeln('FVDbClick'); -{$ENDIF} GikoDM.FavoriteTreeViewReloadActionExecute( Sender ); end; end; @@ -6840,35 +6794,11 @@ procedure TGikoForm.FavoriteTreeViewMouseUp(Sender: TObject; begin if (Button = mbLeft) and not (ssDouble in Shift) then begin if (FClickNode = FavoriteTreeView.Selected) then begin -{$IFDEF DEBUG} - Writeln('FVMouseUp'); -{$ENDIF} FavoriteClick( TObject( FClickNode ) ); end; 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 - //ƒ^ƒu‚Ì•œŒ³‚Å•œŒ³‚³‚ꂽƒXƒŒ‚́A•`‰æ‚³‚ê‚Ä‚¢‚È‚¢‚Æ‚«‚ª‚ ‚é‚Ì‚Å - //‚»‚Ì‚Æ‚«‚̃XƒNƒ[ƒ‹—Ê‚ð•Û‘¶‚µ‚Ä‚µ‚Ü‚¤‚ƃgƒbƒv‚É–ß‚Á‚Ä‚µ‚Ü‚¤B - if Self.FBrowser.OleObject.Document.documentElement.innerText <> '' then begin - doc := Idispatch( olevariant(Self.FBrowser.ControlInterface).Document) as IHTMLDocument2; - Self.Thread.ScrollTop := doc.Body.ScrollTop; - end; - end; - //TOleControl(Self.FBrowser).Visible := false; - ShowWindow(Self.FBrowser.Handle, SW_HIDE); - end; - -end; - function TGikoForm.WebBrowserClick(Sender: TObject): WordBool; var p : TPoint; @@ -7221,18 +7151,6 @@ begin SetActiveList( FActiveList ); end; -//Žw’肵‚½”ԍ†‚̃ŒƒX‚Éjump‚·‚éAction -procedure TGikoForm.ReleaseBrowser( BRecord: TBrowserRecord); -begin - if BRecord <> nil then begin - BRecord.Browser := nil; - if BRecord.FEvent <> nil then begin - BRecord.FEvent.Free; - BRecord.FEvent := nil; - end; - BRecord.Repaint := true; - end; -end; procedure TGikoForm.OnGestureStart(Sender: TObject); begin @@ -7564,9 +7482,6 @@ begin end; -procedure TGikoForm.BeLogInOutActionUpdate(Sender: TObject); -begin -end; //ListView‚Ì‘I‘ðó‘Ô‚ð‰ðœ‚·‚é procedure TGikoForm.ListViewKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); @@ -7585,7 +7500,9 @@ begin end; end; end; - +// ************************************************************************* +//! ‚¨‹C‚É“ü‚è‚̕ҏWŠJŽnƒCƒxƒ“ƒg +// ************************************************************************* procedure TGikoForm.FavoriteTreeViewEditing(Sender: TObject; Node: TTreeNode; var AllowEdit: Boolean); begin @@ -7797,9 +7714,6 @@ end; // ************************************************************************* procedure TGikoForm.FavoriteTreeViewClick(Sender: TObject); begin -{$IFDEF DEBUG} - Writeln('FVClick'); -{$ENDIF} //Œ»Ý‘I‘ð‚³‚ê‚Ä‚¢‚éƒAƒCƒeƒ€‚ð•Û‘¶ FClickNode := FavoriteTreeView.Selected; end; diff --git a/GikoDataModule.pas b/GikoDataModule.pas index 11660e1..9f3a7d0 100644 --- a/GikoDataModule.pas +++ b/GikoDataModule.pas @@ -11,7 +11,7 @@ uses SHDocVw_TLB, MSHTML_TLB, {$IFEND} - ComCtrls; + ComCtrls, BrowserRecord; type diff --git a/Option.pas b/Option.pas index 3371633..d479bdb 100644 --- a/Option.pas +++ b/Option.pas @@ -13,7 +13,7 @@ uses SHDocVw_TLB, MSHTML_TLB, {$IFEND} - BoardGroup; + BoardGroup, BrowserRecord; type TOptionDialog = class(TForm) diff --git a/gikoNavi.dpr b/gikoNavi.dpr index c313190..879c03b 100644 --- a/gikoNavi.dpr +++ b/gikoNavi.dpr @@ -69,7 +69,8 @@ uses Y_TextConverter in 'res\ExternalBoardPlugIn\Y_TextConverter.pas', HTMLCreate in 'HTMLCreate.pas', ListViewUtils in 'ListViewUtils.pas', - GikoDataModule in 'GikoDataModule.pas' {GikoDM: TDataModule}; + GikoDataModule in 'GikoDataModule.pas' {GikoDM: TDataModule}, + BrowserRecord in 'BrowserRecord.pas'; {$R *.RES} {$R gikoResource.res} -- 2.11.0