OSDN Git Service

検索中のフォームのクローズでのキャンセル処理追加。
authorh677 <h677>
Mon, 24 Apr 2006 16:12:53 +0000 (16:12 +0000)
committerh677 <h677>
Mon, 24 Apr 2006 16:12:53 +0000 (16:12 +0000)
ログ検索フォームを消さずに、終了したときのAccesViolation対策

Giko.pas
Search.dfm
Search.pas

index a21fcd2..e02f57e 100644 (file)
--- a/Giko.pas
+++ b/Giko.pas
@@ -1465,21 +1465,32 @@ procedure TGikoForm.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
 begin
 //     if GikoForm.WindowState <> wsMinimized then
 //             SaveCoolBarSettings;
+       CanClose := True;
        if ( GikoSys.Setting.ShowDialogForEnd ) and
                        (MessageDlg('\83M\83R\83i\83r\82ð\8fI\97¹\82µ\82Ä\82æ\82ë\82µ\82¢\82Å\82·\82©\81H', mtConfirmation,[mbOk, mbCancel], 0) = mrCancel ) then begin
                CanClose := false;
                        Exit;
-       end else begin
-               CanClose := True;
-               if GikoSys.Setting.TabAutoLoadSave then begin
-                       GikoDM.TabAutoSaveAction.Execute;
+       end;
+
+       if GikoSys.Setting.TabAutoLoadSave then begin
+               GikoDM.TabAutoSaveAction.Execute;
+       end;
+
+       if (SearchDialog <> nil) then begin
+               if (SearchDialog.Visible) then begin
+                       SearchDialog.Close;
+                       try
+                               SearchDialog.Release;
+                       except
+                       end;
+                       SearchDialog := nil;
                end;
        end;
-    {    //2ch\8c¾\8cȩ̂²ÙFree
+       {    //2ch\8c¾\8cȩ̂²ÙFree
                if GikoSys.Setting.Gengo <> nil then begin
                                GikoSys.Setting.Gengo.Free;
         end;
-    }
+       }
        Application.UnhookMainWindow(Hook);
        Application.Terminate;
 end;
@@ -4769,8 +4780,8 @@ begin
                                                ListView.Items.Count := ListView.Items.Count + 1;
                                end;
                        end;
-                       // \83\8d\83O\82È\82µ\83X\83\8c\83b\83h\82Ì\82Æ\82«\82Í\81A\83z\83X\83g\96¼\82Ì\83`\83F\83b\83N\82ð\82·\82é
-                       if not ThreadItem.IsLogFile then begin
+                       // 2\82¿\82á\82ñ\82Ë\82é\82Å\82È\82­\83\8d\83O\82È\82µ\83X\83\8c\83b\83h\82Ì\82Æ\82«\82Í\81A\83z\83X\83g\96¼\82Ì\83`\83F\83b\83N\82ð\82·\82é
+                       if (not Board.Is2ch) and  (not ThreadItem.IsLogFile) then begin
                                if AnsiPos(Host, Board.URL) = 0 then
                                        ThreadItem.DownloadHost := Host
                                else
index 7123ed4..978b0ea 100644 (file)
@@ -16,6 +16,7 @@ object SearchDialog: TSearchDialog
   Font.Style = []
   OldCreateOrder = False
   Position = poOwnerFormCenter
+  OnCloseQuery = FormCloseQuery
   OnCreate = FormCreate
   OnDestroy = FormDestroy
   DesignSize = (
index 50beca9..c476e4c 100644 (file)
@@ -39,6 +39,7 @@ type
                procedure CancelBottonClick(Sender: TObject);
                procedure BoardListViewResize(Sender: TObject);
     procedure FormDestroy(Sender: TObject);
+    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
        private
                { Private \90é\8c¾ }
                FChkItem: TObject;
@@ -443,4 +444,14 @@ begin
        end;
 end;
 
+procedure TSearchDialog.FormCloseQuery(Sender: TObject;
+  var CanClose: Boolean);
+begin
+       if (BoardsProgressBar.Visible) then begin
+               TGrep(Sender).Cancel := true;
+               FCancel := true;
+               Application.ProcessMessages;
+       end;
+end;
+
 end.