OSDN Git Service

WebBrowserのスクロールのタイミングとかを修正
authorh677 <h677>
Thu, 3 Nov 2005 08:12:48 +0000 (08:12 +0000)
committerh677 <h677>
Thu, 3 Nov 2005 08:12:48 +0000 (08:12 +0000)
Giko.dfm
Giko.pas

index 412296e..76d09f2 100644 (file)
--- a/Giko.dfm
+++ b/Giko.dfm
@@ -1,6 +1,6 @@
 object GikoForm: TGikoForm
-  Left = 176
-  Top = 124
+  Left = 597
+  Top = 121
   HorzScrollBar.Visible = False
   VertScrollBar.Visible = False
   AutoScroll = False
index 04e9598..d709158 100644 (file)
--- a/Giko.pas
+++ b/Giko.pas
@@ -3580,16 +3580,12 @@ begin
                                                browserRec := InsertBrowserTab(Item.ThreadItem, True)
                                        else
                                                browserRec := InsertBrowserTab(Item.ThreadItem, False);
-                                       if browserRec.Thread = BrowserNullTab.Thread then begin
-                                               browserRec.Movement := BrowserNullTab.Movement;
-                                               BrowserNullTab.Movement := '';
-                                       end;
                                end else begin
                                        if (GetActiveContent = Item.ThreadItem) or (FActiveContent = nil) or(FActiveContent.Browser = BrowserNullTab.Browser) then
                                                                                                InsertBrowserTab(Item.ThreadItem);
                                end;
 
-                                                               Application.ProcessMessages;
+                               Application.ProcessMessages;
 
                                if Item.State = gdsComplete then begin
                                        PlaySound('New');
@@ -3814,7 +3810,6 @@ begin
                        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 ] ) );
@@ -3958,17 +3953,51 @@ begin
                                Thread.Repaint := false;
 
                                Thread.Browser.OnStatusTextChange := nil;
-                               //doc := Idispatch( olevariant(Thread.Browser.ControlInterface).Document) as IHTMLDocument2;
+
 
                                //GikoSys.CreateHTML2(doc, ThreadItem, sTitle);
                                HTMLCreater.CreateHTML2(olevariant(Thread.Browser.ControlInterface).Document, ThreadItem, sTitle);
-                               Thread.Browser.OnStatusTextChange := BrowserStatusTextChange;
-                               
+                               doc := Idispatch( olevariant(Thread.Browser.ControlInterface).Document) as IHTMLDocument2;
+                               //\83\8d\81[\83h\82ª\8a®\97¹\82·\82é\82Ü\82Å\91Ò\82Â
+                               while (doc.readyState) <> 'complete' do begin
+                                       Application.ProcessMessages;
+                               end;
                                if ThreadItem = nil then begin
                                        FActiveContent := nil;
                                        BrowserTab.Repaint;
                                        Exit;
                                end;
+                               /////////////////////////////////////////////////
+                               //DocumentComplete\82©\82ç\8e\9d\82Á\82Ä\82«\82½\81B
+                               if Length(Thread.Movement) > 0 then begin
+                                       if ThreadItem.UnRead then begin
+                                               ThreadItem.UnRead := False;
+                                               ThreadItem.ParentBoard.UnRead := ThreadItem.ParentBoard.UnRead - 1;
+                                               if ThreadItem.ParentBoard.UnRead < 0 then threadItem.ParentBoard.UnRead := 0;
+                                               TreeView.Refresh;
+                                               ListView.Refresh;
+                                       end;
+                                       BrowserMovement( Thread.Movement, Thread );
+                                       Thread.Movement := '';
+                               end else
+                               if ThreadItem.UnRead then begin
+                                       ThreadItem.UnRead := False;
+                                       ThreadItem.ParentBoard.UnRead := ThreadItem.ParentBoard.UnRead - 1;
+                                       if ThreadItem.ParentBoard.UnRead < 0 then ThreadItem.ParentBoard.UnRead := 0;
+                                       TreeView.Refresh;
+                                       BrowserMovement( 'new', Thread );
+                                       ListView.Refresh;
+                               end else if ThreadItem.ScrollTop <> 0 then begin
+                                       try
+                                               doc.Body.ScrollTop := ThreadItem.ScrollTop;
+                                       except
+                                               on E: Exception do
+                                                       MsgBox(Handle, E.Message, 'SetContent[ScrollTop<-]', 0);
+                                       end;
+                               end;
+                               /////////////////////////////////////////////////
+                               Thread.Browser.OnStatusTextChange := BrowserStatusTextChange;
+
                        end;
                end;
                if (Thread <> nil) and (ThreadItem <>nil) then begin
@@ -4767,12 +4796,13 @@ end;
 procedure TGikoForm.BrowserMovement(const AName: string; BrowserRecord: TBrowserRecord);
 var
        top: Integer;
-       item: OleVariant;
        nm: OleVariant;
        activeBrower :TWebBrowser;
+       item : OleVariant;
+       link : IHTMLElement;
 begin
        //
-       while (BrowserRecord.Browser.ReadyState <> READYSTATE_COMPLETE) and
+       while  (BrowserRecord.Browser.ReadyState <> READYSTATE_COMPLETE) and
                                (BrowserRecord.Browser.ReadyState <> READYSTATE_INTERACTIVE) do begin
                Sleep(1);
                Application.ProcessMessages;
@@ -6531,7 +6561,6 @@ var
        doc                                     : Variant;
        threadItem      : TThreadItem;
 begin
-//     AddMessageList('DocumentComplete', nil, gmiWhat);
        if TObject(Sender) is TWebBrowser then begin
                BrowserRecord := nil;
                if TWebBrowser(Sender) <> Browser then begin
@@ -6558,39 +6587,7 @@ begin
                                FEvent.OnContextMenu := OnDocumentContextMenu;
                                FEvent.OnClick := WebBrowserClick;  //\92Ç\89Á\82µ\82½OnClick\83C\83x\83\93\83g
                        end;
-                       
-               end;
-
-               if (BrowserRecord <> nil) and
-                        Assigned( BrowserRecord.Thread ) then begin
-                       threadItem := BrowserRecord.Thread;
 
-                       if (BrowserRecord <> nil) and (Length( BrowserRecord.Movement ) > 0) then begin
-                               if threadItem.UnRead then begin
-                                       threadItem.UnRead := False;
-                                       threadItem.ParentBoard.UnRead := ThreadItem.ParentBoard.UnRead - 1;
-                                       if threadItem.ParentBoard.UnRead < 0 then threadItem.ParentBoard.UnRead := 0;
-                                       TreeView.Refresh;
-                                       ListView.Refresh;
-                               end;
-                               BrowserMovement( BrowserRecord.Movement, BrowserRecord );
-                               BrowserRecord.Movement := '';
-                       end else if threadItem.UnRead then begin
-                               threadItem.UnRead := False;
-                               threadItem.ParentBoard.UnRead := ThreadItem.ParentBoard.UnRead - 1;
-                               if threadItem.ParentBoard.UnRead < 0 then threadItem.ParentBoard.UnRead := 0;
-                               TreeView.Refresh;
-                               BrowserMovement( 'new', BrowserRecord );
-                               ListView.Refresh;
-                       end else if threadItem.ScrollTop <> 0 then begin
-                               try
-                                       doc := Idispatch( OleVariant( BrowserRecord.Browser.ControlInterface ).Document ) as IHTMLDocument2;
-                                       doc.Body.ScrollTop := threadItem.ScrollTop;
-                               except
-                                       on E: Exception do
-                                               MsgBox(Handle, E.Message, 'SetContent[ScrollTop<-]', 0);
-                               end;
-                       end;
                end;
        end;
 end;