OSDN Git Service

終了時のAccessViolation対策。
authorh677 <h677>
Fri, 2 Apr 2004 16:04:06 +0000 (16:04 +0000)
committerh677 <h677>
Fri, 2 Apr 2004 16:04:06 +0000 (16:04 +0000)
Giko.dfm
Giko.pas
gikoNavi.res

index 3fb3578..d42af57 100644 (file)
--- a/Giko.dfm
+++ b/Giko.dfm
@@ -1,6 +1,6 @@
 object GikoForm: TGikoForm
-  Left = 417
-  Top = 75
+  Left = 247
+  Top = 296
   HorzScrollBar.Visible = False
   VertScrollBar.Visible = False
   AutoScroll = False
@@ -19,7 +19,6 @@ object GikoForm: TGikoForm
   OnClose = FormClose
   OnCloseQuery = FormCloseQuery
   OnCreate = FormCreate
-  OnDestroy = FormDestroy
   OnKeyUp = FormKeyUp
   OnMouseWheel = FormMouseWheel
   OnResize = FormResize
@@ -297,9 +296,9 @@ object GikoForm: TGikoForm
           TabOrder = 0
           object ListView: TGikoListView
             Left = 0
-            Top = 24
+            Top = 53
             Width = 642
-            Height = 165
+            Height = 136
             Align = alClient
             Columns = <>
             DragMode = dmAutomatic
@@ -535,6 +534,15 @@ object GikoForm: TGikoForm
               end
             end
           end
+          object TmpToolBar: TToolBar
+            Left = 0
+            Top = 24
+            Width = 642
+            Height = 29
+            Caption = 'TmpToolBar'
+            TabOrder = 2
+            Visible = False
+          end
         end
         object ThreadPanel: TPanel
           Left = 0
@@ -568,14 +576,14 @@ object GikoForm: TGikoForm
                 Control = BrowserToolBar
                 ImageIndex = -1
                 MinHeight = 22
-                Width = 374
+                Width = 448
               end
               item
                 Break = False
                 Control = BrowserNameToolBar
                 ImageIndex = -1
                 MinHeight = 18
-                Width = 262
+                Width = 188
               end
               item
                 Control = BrowserTabToolBar
@@ -591,7 +599,7 @@ object GikoForm: TGikoForm
             object BrowserToolBar: TToolBar
               Left = 9
               Top = 0
-              Width = 361
+              Width = 435
               Height = 22
               AutoSize = True
               ButtonWidth = 25
@@ -713,9 +721,9 @@ object GikoForm: TGikoForm
               end
             end
             object BrowserNameToolBar: TToolBar
-              Left = 385
+              Left = 459
               Top = 2
-              Width = 249
+              Width = 175
               Height = 18
               AutoSize = True
               ButtonHeight = 16
index d28336b..b95f09d 100644 (file)
--- a/Giko.pas
+++ b/Giko.pas
@@ -526,6 +526,7 @@ type
     N65: TMenuItem;
     BBSSelectPopupMenu: TPopupMenu;
                PlugInMenu: TMenuItem;
+    TmpToolBar: TToolBar;
                procedure FormCreate(Sender: TObject);
                procedure FormDestroy(Sender: TObject);
                procedure CabinetPanelHide(Sender: TObject);
@@ -1409,6 +1410,9 @@ begin
        ListToolBar.Wrapable := GikoSys.Setting.ListToolBarWrapable;
        BrowserToolBar.Wrapable := GikoSys.Setting.BrowserToolBarWrapable;
 
+    KeepDefaultToolButton(StdToolBar, TmpToolBar);
+    KeepDefaultToolButton(StdToolBar, ListToolBar);
+    KeepDefaultToolButton(StdToolBar, BrowserToolBar);
        //\83c\81[\83\8b\83{\83^\83\93\93Ç\82Ý\8d\9e\82Ý
        ReadToolBarSetting(ActionList, StdToolBar);
        ReadToolBarSetting(ActionList, ListToolBar);
@@ -1649,7 +1653,7 @@ end;
 procedure TGikoForm.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
 var
        i: Integer;
-       CoolSet: TCoolSet;
+//     CoolSet: TCoolSet;
        wp: TWindowPlacement;
 begin
                if ( GikoSys.Setting.ShowDialogForEnd ) and
@@ -1707,6 +1711,13 @@ begin
        //\82¨\8bC\82É\93ü\82è\95Û\91
        try
                FavoriteDM.WriteFavorite;
+        FavoriteDM.Clear;
+               try
+               //      if FavoriteDM <> nil then
+               //              FavoriteDM.Free;
+               //      FavoriteDM := nil;
+               except
+               end;
        except
        end;
 //     Favorite.Free;
@@ -1723,16 +1734,6 @@ begin
        try
         TreeView.Items.BeginUpdate;
         for i := TreeView.Items.Count - 1 downto 0 do begin
-            {if TreeView.Items[i].Data <> nil then begin
-                   if TObject(TreeView.Items[i].Data) is TBBS then
-                       TBBS(TreeView.Items[i].Data).Free
-               else if TObject(TreeView.Items[i].Data) is TCategory then
-                    TCategory(TreeView.Items[i].Data).Free
-                   else if TObject(TreeView.Items[i].Data) is TBoard then
-                    TBoard(TreeView.Items[i].Data).Free;
-
-            end;
-            }
                TreeView.Items[i].Free;
         end;
                TreeView.Items.Clear;
@@ -1740,26 +1741,19 @@ begin
        except
 
        end;
-       //\83q\83X\83g\83\8a\83\8a\83X\83g\95Û\91
-       try
-               SaveHistory;
-        ClearHistory;
-       except
-       end;
+
+
 
 
        //\83A\83h\83\8c\83X\97\9a\97ð\95Û\91
        try
                AddressHistoryDM.WriteHistory(AddressComboBox.Items, GikoSys.Setting.AddressHistoryCount);
+               //if AddressHistoryDM <> nil then
+               //      AddressHistoryDM.Free;
+               //AddressHistoryDM := nil;
        except
        end;
 
-       try
-               FControlThread.Terminate;
-        FControlThread.WaitFor;
-        FControlThread.Free;
-       except
-       end;
 
 
 //     FDownload.Free;
@@ -1768,7 +1762,7 @@ begin
        except
        end;
     try
-       ClearLinkBar;
+       //ClearLinkBar;
     except
     end;
 
@@ -1787,13 +1781,11 @@ begin
     except
     end;
 }
+       //\83q\83X\83g\83\8a\83\8a\83X\83g\95Û\91
        try
-               if FavoriteDM <> nil then
-                       FavoriteDM.Free;
-               FavoriteDM := nil;
-               if AddressHistoryDM <> nil then
-                       AddressHistoryDM.Free;
-               AddressHistoryDM := nil;
+               SaveHistory;
+           ClearHistory;
+
        except
        end;
 
@@ -1814,16 +1806,23 @@ begin
        except
        end;
 
-
        try
-               for i := CabinetSelectPopupMenu.Items.Count - 1 downto 0 do begin
+               {for i := CabinetSelectPopupMenu.Items.Count - 1 downto 0 do begin
                        if CabinetSelectPopupMenu.Items[ i ] is TBBSMenuItem then begin
-                               CabinetSelectPopupMenu.Items[ i ].Free;
+                               TBBSMenuItem(CabinetSelectPopupMenu.Items[ i ]).Free;
                                CabinetMenu.Items[ i ].Free;
                        end;
                end;
+        }
+       except
+       end;
+       try
+               FControlThread.Terminate;
+        FControlThread.WaitFor;
+        FControlThread.Free;
        except
        end;
+
        // TBBS \82Í\95Û\8e\9d\82µ\82Ä\82¢\82é TCategory, TBoard, TThreadItem \82·\82×\82Ä\82ð\8aJ\95ú\82·\82é
        // TBoard, TThreadItem \82Ì\83f\83X\83g\83\89\83N\83^\82Í\83v\83\89\83O\83C\83\93\82É\94j\8aü\82ð\93`\82¦\82é\82Ì\82Å
        // BoardPluteIns \82Ì\8aJ\95ú\82æ\82è\90æ\82É\8ds\82¤\82±\82Æ
@@ -1860,26 +1859,32 @@ begin
                end;
        except
        end;
-
+    //Application.HookMainWindow(Hook);
+    Application.UnhookMainWindow(Hook);
     Application.Terminate;
 end;
 
 procedure TGikoForm.FormDestroy(Sender: TObject);
 begin
-;
+
 end;
 
 //\83t\83H\81[\83\80\83N\83\8d\81[\83Y
 procedure TGikoForm.FormClose(Sender: TObject; var Action: TCloseAction);
 begin
+end;
+{
+//procedure TGikoForm.FormClose(Sender: TObject; var Action: TCloseAction);
+//begin
+//end;
 //    ListCoolBar.WindowProc := nil;
 //    BrowserCoolBar.WindowProc := nil;
 //    MainCoolBar.WindowProc := nil;
 //     Application.Terminate;
 //     Action := caFree;
 //     Application.UnhookMainWindow(Hook);
-end;
 
+}
 //\83L\83\83\83r\83l\83b\83g\81~\83{\83^\83\93\83N\83\8a\83b\83N
 procedure TGikoForm.CabinetPanelHide(Sender: TObject);
 begin
@@ -2230,7 +2235,7 @@ begin
                if not TBoard(Node.Data).IsThreadDatRead then begin
                        Screen.Cursor := crHourGlass;
                        try
-                               GikoSys.ReadSubjectFile(TBoard(Node.Data));
+                               GikoSys.ReadSubjectFile(Node.Data);
                        finally
                                Screen.Cursor := crDefault;
                        end;
@@ -3189,8 +3194,10 @@ var
        favItem : TFavoriteThreadItem;
 begin
        if ThreadItem.IsLogFile then begin
-    favItem := TFavoriteThreadItem.CreateWithItem( ThreadItem );
-    AddHistory( favItem );
+       //favItem := TFavoriteThreadItem.CreateWithItem( ThreadItem );
+        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
@@ -3586,6 +3593,7 @@ begin
                                if FTreeType = gttHistory then
                                        if TreeView.TopItem <> TreeView.Items[ i ] then
                                                TreeView.Items[ i ].MoveTo( TreeView.TopItem, naInsert );
+                Result := false;
                                Exit;
                        end;
                end;
@@ -3712,7 +3720,8 @@ begin
                                                                if s <> '' then begin
                                                                        favItem := TFavoriteThreadItem.Create(
                                                                                s, HistoryNode.Attributes[ 'title' ] );
-                                                                       AddHistory( favItem );
+                                                                       if not AddHistory( favItem ) then
+                                       favItem.Free;
                                                                end;
                                                        //end;
                                                end;
@@ -3978,11 +3987,11 @@ begin
        if ThreadItem.IsLogFile then begin
 //             if AddHistory(ThreadItem) then
 //             SetContent(ThreadItem);
-               InsertBrowserTab(ThreadItem);
+               InsertBrowserTab(ListItem.Data);
                ListView.UpdateItems(ListItem.Index, ListItem.Index);
        end else begin
 //             SetContent(ThreadItem);
-               InsertBrowserTab(ThreadItem);
+               InsertBrowserTab(ListItem.Data);
        end;
 end;
 
@@ -7099,6 +7108,7 @@ end;
 procedure TGikoForm.ToolButton18Click(Sender: TObject);
 begin
        if FTreeType = gttHistory then begin
+        ClearHistory;
                FHistoryList.Clear;
                TreeView.Items.Clear;
        end;
@@ -7127,11 +7137,13 @@ begin
        try
                LinkBarPopupMenu.Items.Clear;
                for i := LinkToolBar.ButtonCount - 1 downto 0 do
-                       LinkToolBar.RemoveControl(LinkToolBar.Buttons[i]);
+                       //LinkToolBar.RemoveControl(LinkToolBar.Buttons[i]);
+            LinkToolBar.Buttons[i].Free;
                for i := 0 to FavoriteTreeView.Items.Count - 1 do begin
                        if FavoriteTreeView.Items[i].Text = Favorite.FAVORITE_LINK_NAME then begin
                                for j := 0 to FavoriteTreeView.Items[i].Count - 1 do begin
                                        ToolButton := TLinkToolButton.Create(LinkToolBar);
+//                    ToolButton.Parent := LinkToolBar;
                                        if TObject(FavoriteTreeView.Items[i].Item[j].Data) is TFavoriteFolder then begin
                                                MenuItem := TMenuItem.Create(Self);
                                                CreateFavMenu(FavoriteTreeView.Items[i].Item[j], MenuItem);
@@ -7181,9 +7193,11 @@ var
 begin
        MainCoolBar.Bands.BeginUpdate;
        try
-               LinkBarPopupMenu.Items.Clear;
+        if LinkBarPopupMenu.Items.Count > 0 then
+                       LinkBarPopupMenu.Items.Clear;
                for i := LinkToolBar.ButtonCount - 1 downto 0 do
-                       LinkToolBar.RemoveControl(LinkToolBar.Buttons[i]);
+                       //LinkToolBar.RemoveControl(LinkToolBar.Buttons[i]);
+            LinkToolBar.Buttons[i].Free;
     finally
                MainCoolBar.Bands.EndUpdate;
        end;
index bbf027e..60de558 100644 (file)
Binary files a/gikoNavi.res and b/gikoNavi.res differ