--- /dev/null
+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; ///< \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;
+ FMovement : string; ///< \83X\83N\83\8d\81[\83\8b\90æ\83A\83\93\83J\81[
+ 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\82É\82Â\82¢\82Ä\82¢\82éFBrowser\82ð\8aO\82·
+ procedure ReleaseBrowser( BRecord: TBrowserRecord);
+
+implementation
+// *************************************************************************
+//! BrowserRecord\82É\82Â\82¢\82Ä\82¢\82éFBrowser\82ð\8aO\82·
+// *************************************************************************
+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\82Ì\83f\83X\83g\83\89\83N\83^
+// *************************************************************************
+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
+ //\83^\83u\82Ì\95\9c\8c³\82Å\95\9c\8c³\82³\82ê\82½\83X\83\8c\82Í\81A\95`\89æ\82³\82ê\82Ä\82¢\82È\82¢\82Æ\82«\82ª\82 \82é\82Ì\82Å
+ //\82»\82Ì\82Æ\82«\82Ì\83X\83N\83\8d\81[\83\8b\97Ê\82ð\95Û\91¶\82µ\82Ä\82µ\82Ü\82¤\82Æ\83g\83b\83v\82É\96ß\82Á\82Ä\82µ\82Ü\82¤\81B
+ 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.
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);
TMinimizeType = (mtNone, mtMinimizing, mtMinimized);
TResizeType = (rtNone, rtResizing);
- TBrowserRecord = class;
+// TBrowserRecord = class;
TGikoForm = class(TForm)
StatusBar: TStatusBar;
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;
function GetTabURLs(AStringList: TStringList) : Boolean;
/// ListColumnPopupMenu \83A\83C\83e\83\80\82Ì\83N\83\8a\83b\83N\83C\83x\83\93\83g
procedure ListColumnPopupMenuOnClick( Sender : TObject );
- // BrowserRecord\82É\82Â\82¢\82Ä\82¢\82éFBrowser\82ð\8aO\82·
- procedure ReleaseBrowser( BRecord: TBrowserRecord);
//! \8di\82è\8d\9e\82Ý\95¶\8e\9a\97ñ\90Ý\92è
procedure SetSelectWord( const text : string );
//\8c»\8dÝ\82Ì\83J\81[\83\\83\8b\82ð\8eæ\93¾\82·\82é
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;
- FMovement : string; ///< \83X\83N\83\8d\81[\83\8b\90æ\83A\83\93\83J\81[
- 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;
i: Integer;
wp: TWindowPlacement;
s: string;
- ToolButton: TToolButton;
begin
{$IFDEF DEBUG}
AllocConsole;
end;
end;
-{procedure TGikoForm.CabinetPanelVisible(PanelVisible: Boolean);
-begin
- TreeSplitter.Visible := PanelVisible;
- CabinetPanel.Visible := PanelVisible;
- CabinetToolButton.Down := PanelVisible;
-end;}
-
procedure TGikoForm.ListViewAllSelect;
begin
ListView.SetFocus;
StatusBar.Panels[1].Text := FDownloadTitle + ' - \83_\83E\83\93\83\8d\81[\83h\92\86 (' + 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;
if ThreadItem.IsLogFile then begin
//\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 (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;
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;
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;
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;
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;
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;
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;
+ if(BrowserRecord <> nil) and (BrowserRecord.Browser <> nil) then begin
+ activeBrower := BrowserRecord.Browser;
try
top := 0;
nm := AName;
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; //\92Ç\89Á\82µ\82½OnClick\83C\83x\83\93\83g
+ BrowserRecord.Event := THTMLDocumentEventSink.Create(Self, FDispHtmlDocument, HTMLDocumentEvents2);
+ BrowserRecord.Event.OnContextMenu := OnDocumentContextMenu;
+ BrowserRecord.Event.OnClick := WebBrowserClick; //\92Ç\89Á\82µ\82½OnClick\83C\83x\83\93\83g
end;
end else begin
if GetActiveContent <> nil then begin
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, '\81@', ' ');//\91S\8ap\8bó\94\92\82ð\94¼\8ap\8bó\94\92\82É
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;
begin
//\83N\83\8a\83b\83N\8e\9e\82Ì\91I\91ð\83C\83x\83\93\83g\82Æ\93¯\82¶\82È\82ç\83_\83u\83\8b\83N\83\8a\83b\83N\8eÀ\8ds
if (FClickNode = FavoriteTreeView.Selected) then begin
-{$IFDEF DEBUG}
- Writeln('FVDbClick');
-{$ENDIF}
GikoDM.FavoriteTreeViewReloadActionExecute( Sender );
end;
end;
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
- //\83^\83u\82Ì\95\9c\8c³\82Å\95\9c\8c³\82³\82ê\82½\83X\83\8c\82Í\81A\95`\89æ\82³\82ê\82Ä\82¢\82È\82¢\82Æ\82«\82ª\82 \82é\82Ì\82Å
- //\82»\82Ì\82Æ\82«\82Ì\83X\83N\83\8d\81[\83\8b\97Ê\82ð\95Û\91¶\82µ\82Ä\82µ\82Ü\82¤\82Æ\83g\83b\83v\82É\96ß\82Á\82Ä\82µ\82Ü\82¤\81B
- 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;
SetActiveList( FActiveList );
end;
-//\8ew\92è\82µ\82½\94Ô\8d\86\82Ì\83\8c\83X\82Éjump\82·\82é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
end;
-procedure TGikoForm.BeLogInOutActionUpdate(Sender: TObject);
-begin
-end;
//ListView\82Ì\91I\91ð\8fó\91Ô\82ð\89ð\8f\9c\82·\82é
procedure TGikoForm.ListViewKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
end;
end;
end;
-
+// *************************************************************************
+//! \82¨\8bC\82É\93ü\82è\82Ì\95Ò\8fW\8aJ\8en\83C\83x\83\93\83g
+// *************************************************************************
procedure TGikoForm.FavoriteTreeViewEditing(Sender: TObject;
Node: TTreeNode; var AllowEdit: Boolean);
begin
// *************************************************************************
procedure TGikoForm.FavoriteTreeViewClick(Sender: TObject);
begin
-{$IFDEF DEBUG}
- Writeln('FVClick');
-{$ENDIF}
//\8c»\8dÝ\91I\91ð\82³\82ê\82Ä\82¢\82é\83A\83C\83e\83\80\82ð\95Û\91¶
FClickNode := FavoriteTreeView.Selected;
end;