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
+ FNewBrowserCount: Integer;
+ FBrowsers: TList;
procedure SetBoardTreeNode( inBBS : TBBS );
function SetCategoryListItem(ABBS2ch: TBBS): Integer;
function SetBoardListItem(Category: TCategory): Integer;
i: Integer;
wp: TWindowPlacement;
s: string;
+ newbrowser: TWebBrowser;
begin
{$IFDEF DEBUG}
AllocConsole;
FSearchDialog := nil;
BrowserNullTab := TBrowserRecord.Create;
BrowserNullTab.Browser := Browser;
+ FNewBrowserCount := 0;
+ FBrowsers := TList.Create;
+ for i := 0 to 4 do begin
+ newBrowser := TWebBrowser.Create(nil);
+ TOleControl(newBrowser).Parent := BrowserPanel;
+ TOleControl(newBrowser).Align := alClient;
+ newBrowser.Navigate(BLANK_HTML);
+ newBrowser.OnDocumentComplete := BrowserDocumentComplete;
+ newBrowser.OnBeforeNavigate2 := BrowserBeforeNavigate2;
+ newBrowser.OnEnter := BrowserEnter;
+ newBrowser.OnNewWindow2 := BrowserNewWindow2;
+ newBrowser.OnStatusTextChange := BrowserStatusTextChange;
+ newBrowser.OnTitleChange := BrowserTitleChange;
+ TOleControl(newBrowser).Visible := false;
+ FBrowsers.Add(newBrowser);
+ end;
+
// \8bN\93®\8e\9e\82É\95Û\91¶\82³\82ê\82Ä\82µ\82Ü\82¤\91Î\8dô
FIsIgnoreResize := True;
try
//\83^\83u\83N\83\8d\81[\83Y
-
BrowserNullTab.Thread := nil;
BrowserTab.OnChange := nil;
BrowserTab.Tabs.BeginUpdate;
BrowserTab.OnChange := BrowserTabChange;
except
end;
+
+ for i := FBrowsers.Count - 1 downto 0 do begin
+ TWebBrowser(FBrowsers[i]).Free;
+ end;
+ FBrowsers.Clear;
+ FBrowsers.Capacity := 0;
+ FBrowsers.Free;
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
procedure TGikoForm.InsertBrowserTab(ThreadItem: TThreadItem; ActiveTab: Boolean = True);
var
- i: Integer;
+ i, j: Integer;
favItem : TFavoriteThreadItem;
newBrowser : TBrowserRecord;
begin
end;
if GikoSys.Setting.BrowserTabAppend = gtaFirst then begin
- BrowserTab.Tabs.Insert(0, GikoSys.GetShortName(ThreadItem.Title, 20));
+ //BrowserTab.Tabs.Insert(0, GikoSys.GetShortName(ThreadItem.Title, 20));
newBrowser := TBrowserRecord.Create;
- newBrowser.Browser := TWebBrowser.Create(nil);
- TOleControl(newBrowser.Browser).Parent := BrowserPanel;
- TOleControl(newBrowser.Browser).Align := alClient;
- newBrowser.Browser.OnDocumentComplete := BrowserDocumentComplete;
- newBrowser.Browser.OnBeforeNavigate2 := BrowserBeforeNavigate2;
- newBrowser.Browser.OnEnter := BrowserEnter;
- newBrowser.Browser.OnNewWindow2 := BrowserNewWindow2;
- newBrowser.Browser.OnStatusTextChange := BrowserStatusTextChange;
- newBrowser.Browser.OnTitleChange := BrowserTitleChange;
+ for j := BrowserTab.Tabs.Count - 1 downto 0 do begin
+ if TBrowserRecord(BrowserTab.Tabs.Objects[j]).FBrowser = TWebBrowser(FBrowsers[4]) then
+ TBrowserRecord(BrowserTab.Tabs.Objects[j]).FBrowser := nil;
+ end;
+ newBrowser.Browser := TWebBrowser(FBrowsers[4]);
+ FBrowsers.Move(4, 0);
newBrowser.thread := ThreadItem;
newBrowser.Repaint := true;
newBrowser.OnlyHundred := GikoSys.OnlyAHundredRes;
newBrowser.Browser.Navigate( 'about:blank' );
- BrowserTab.Tabs.Objects[0] := newBrowser;
+ BrowserTab.Tabs.InsertObject(0, GikoSys.GetShortName(ThreadItem.Title, 20), newBrowser);
+ //BrowserTab.Tabs.Objects[0] := newBrowser;
if ActiveTab then begin
BrowserTab.TabIndex := 0;
end;
end else begin
- i := BrowserTab.Tabs.Add(GikoSys.GetShortName(ThreadItem.Title, 20));
+ //i := BrowserTab.Tabs.Add(GikoSys.GetShortName(ThreadItem.Title, 20));
+ //Inc(FNewBrowserCount);
newBrowser := TBrowserRecord.Create;
- newBrowser.Browser := TWebBrowser.Create(nil);
- TOleControl(newBrowser.Browser).Parent := BrowserPanel;
- TOleControl(newBrowser.Browser).Align := alClient;
- newBrowser.Browser.OnDocumentComplete := BrowserDocumentComplete;
- newBrowser.Browser.OnBeforeNavigate2 := BrowserBeforeNavigate2;
- newBrowser.Browser.OnEnter := BrowserEnter;
- newBrowser.Browser.OnNewWindow2 := BrowserNewWindow2;
- newBrowser.Browser.OnStatusTextChange := BrowserStatusTextChange;
- newBrowser.Browser.OnTitleChange := BrowserTitleChange;
+ for j := BrowserTab.Tabs.Count - 1 downto 0 do begin
+ if TBrowserRecord(BrowserTab.Tabs.Objects[j]).FBrowser = TWebBrowser(FBrowsers[4]) then
+ TBrowserRecord(BrowserTab.Tabs.Objects[j]).FBrowser := nil;
+ end;
+ newBrowser.Browser := TWebBrowser(FBrowsers[4]);
+ FBrowsers.Move(4, 0);
newBrowser.thread := ThreadItem;
newBrowser.OnlyHundred := GikoSys.OnlyAHundredRes;
newBrowser.Repaint := true;
newBrowser.Browser.Navigate( 'about:blank' );
- BrowserTab.Tabs.Objects[i] := newBrowser;
+ i := BrowserTab.Tabs.AddObject(GikoSys.GetShortName(ThreadItem.Title, 20), newBrowser);
+ //BrowserTab.Tabs.Objects[i] := newBrowser;
if ActiveTab then begin
BrowserTab.TabIndex := i;
end;
begin
if inThread = nil then
begin
- Thread := TBrowserRecord.Create;
- Thread.Browser := Browser;
- Thread.Thread := nil;
+ //Thread := TBrowserRecord.Create;
+ //Thread.Browser := Browser;
+ //Thread.Thread := nil;
+ Exit;
end else begin
Thread := inThread;
end;
try
Sleep(1);
//Application.ProcessMessages;
- FActiveContent.Thread.ScrollTop := OleVariant(IHTMLDocument2(FActiveContent.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
Screen.Cursor := crHourGlass;
try
+ ToleControl(Thread.FBrowser).Visible := true;
if ThreadItem.UnRead then begin
ThreadItem.ParentBoard.UnRead := ThreadItem.ParentBoard.UnRead - 1;
if ThreadItem.ParentBoard.UnRead < 0 then ThreadItem.ParentBoard.UnRead := 0;
//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.LastSize := ThreadItem.Size;
Thread.Repaint := false;
try
+ Application.ProcessMessages;
doc := Idispatch( olevariant(Thread.Browser.ControlInterface).Document) as IHTMLDocument2;
GikoSys.CreateHTML2(doc, ThreadItem, sTitle);
Thread.OnlyHundred := GikoSys.OnlyAHundredRes;
function TGikoForm.GetActiveContent: TThreadItem;
begin
- if FActiveContent <> nil then
+ if( FActiveContent <> nil) and (FActiveContent.Thread <> nil)then
Result := FActiveContent.Thread
else
Result := nil;
end;
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 TBrowserRecord(BrowserTab.Tabs.Objects[i]) = BrowserRecord then begin
TBrowserRecord(BrowserTab.Tabs.Objects[i]).Thread.ScrollTop := 0;
end;
if( FActiveContent = TBrowserRecord(BrowserTab.Tabs.Objects[i]) ) then
- FActiveContent := nil;
+ 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, 4);
+ end;
TBrowserRecord(BrowserTab.Tabs.Objects[i]).Free;
BrowserTab.Tabs.Delete(i);
- if i > (BrowserTab.Tabs.Count - 1) then
+ if idx > (BrowserTab.Tabs.Count - 1) then
BrowserTab.TabIndex := BrowserTab.Tabs.Count - 1
else
- BrowserTab.TabIndex := i;
+ BrowserTab.TabIndex := idx;
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[4]) )then
+ begin
+ TBrowserRecord(BrowserTab.Tabs.Objects[j]).Browser := nil;
+ break;
+ end;
+ end;
+ TBrowserRecord(BrowserTab.Tabs.Objects[BrowserTab.TabIndex]).Browser
+ := TWebBrowser(FBrowsers[4]);
+ TBrowserRecord(BrowserTab.Tabs.Objects[BrowserTab.TabIndex]).Repaint := true;
+ FBrowsers.Move(4, 0);
+ end;
BrowserTab.Tabs.EndUpdate;
BrowserTab.OnChange(nil);
Exit;
end;
procedure TGikoForm.DeleteTab(ThreadItem: TThreadItem);
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 TBrowserRecord(BrowserTab.Tabs.Objects[i]).Thread = ThreadItem then begin
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, 4);
+ end;
TBrowserRecord(BrowserTab.Tabs.Objects[i]).Free;
BrowserTab.Tabs.Delete(i);
- if i > (BrowserTab.Tabs.Count - 1) then
+ if idx > (BrowserTab.Tabs.Count - 1) then
BrowserTab.TabIndex := BrowserTab.Tabs.Count - 1
else
- BrowserTab.TabIndex := i;
+ BrowserTab.TabIndex := idx;
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[4]) )then
+ begin
+ TBrowserRecord(BrowserTab.Tabs.Objects[j]).Browser := nil;
+ break;
+ end;
+ end;
+ TBrowserRecord(BrowserTab.Tabs.Objects[BrowserTab.TabIndex]).Browser
+ := TWebBrowser(FBrowsers[4]);
+ TBrowserRecord(BrowserTab.Tabs.Objects[BrowserTab.TabIndex]).Repaint := true;
+ FBrowsers.Move(4, 0);
+ end;
+
BrowserTab.Tabs.EndUpdate;
BrowserTab.OnChange(nil);
Exit;
procedure TGikoForm.BrowserTabChange(Sender: TObject);
var
+ i, j: Integer;
idx: Integer;
ThreadItem: TThreadItem;
begin
SetContent(BrowserNullTab);
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
+ for i := 0 to BrowserTab.Tabs.Count - 1 do begin
+ if TBrowserRecord(BrowserTab.Tabs.Objects[i]).Browser = TWebBrowser(FBrowsers[4]) then
+ TBrowserRecord(BrowserTab.Tabs.Objects[i]).Browser := nil;
+ end;
+ TBrowserRecord(BrowserTab.Tabs.Objects[idx]).Browser := TWebBrowser(FBrowsers[4]);
+ TBrowserRecord(BrowserTab.Tabs.Objects[idx]).Repaint := true;
+ FBrowsers.Move(4, 0);
+ end;
ThreadItem := TBrowserRecord(BrowserTab.Tabs.Objects[idx]).Thread;
+ 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 idx <> -1 then begin
OldIndex := BrowserTab.TabIndex;
DeleteTab(TBrowserRecord(BrowserTab.Tabs.Objects[idx]));
- if idx = OldIndex then begin
+ {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;
+ if TBrowserRecord(BrowserTab.Tabs.Objects[BrowserTab.TabIndex]).Browser = nil then begin
+ TBrowserRecord(BrowserTab.Tabs.Objects[BrowserTab.TabIndex]).Browser
+ := TWebBrowser(FBrowsers[4]);
+ FBrowsers.Move(4, 0);
+ end;
BrowserTab.OnChange(nil);
end;
+ }
end;
//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é
FBrowserComplete := True;
if BrowserRecord.FEvent <> nil then
BrowserRecord.FEvent.Free;
- FDispHtmlDocument := BrowserRecord.Browser.Document as DispHTMLDocument;
+ FDispHtmlDocument := Idispatch(OleVariant(BrowserRecord.Browser.ControlInterface).Document) as DispHTMLDocument;
BrowserRecord.FEvent := THTMLDocumentEventSink.Create(Self, FDispHtmlDocument, HTMLDocumentEvents2);
BrowserRecord.FEvent.OnContextMenu := OnDocumentContextMenu;
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
InsertBrowserTab( ThreadItem, True );
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
InsertBrowserTab( ThreadItem, True );
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
InsertBrowserTab( ThreadItem, True );
if Self.Thread <> nil then begin
doc := Idispatch( olevariant(Self.FBrowser.ControlInterface).Document) as IHTMLDocument2;
Self.Thread.ScrollTop := doc.Body.ScrollTop;
- doc.clear;
+ //doc.clear;
end;
- Self.FBrowser.Free;
+ //Self.FBrowser.Free;
end;
+
end;
procedure TGikoForm.ThreadPanelResize(Sender: TObject);
idx : Integer;
rec : TBrowserRecord;
begin
- idx := BrowserTab.TabIndex;
+{ idx := BrowserTab.TabIndex;
if idx >= 0 then begin
if BrowserTab.Tabs.Objects[ idx ] is TBrowserRecord then begin
rec := TBrowserRecord( BrowserTab.Tabs.Objects[ idx ] );
SetWindowPos( rec.Browser.Handle, HWND_TOPMOST, 0, 0, BrowserPanel.Width, BrowserPanel.Height, SWP_NOACTIVATE or SWP_NOZORDER);
end;
end;
+}
end;
procedure TGikoForm.OnlyAHundredResUpdate(Sender: TObject);