OSDN Git Service

IDポップアップで20個以上の時に警告を出すように変更
authorh677 <h677>
Thu, 30 Dec 2004 16:20:25 +0000 (16:20 +0000)
committerh677 <h677>
Thu, 30 Dec 2004 16:20:25 +0000 (16:20 +0000)
Giko.dfm
Giko.pas
GikoSystem.pas

index 66efca9..162aee3 100644 (file)
--- a/Giko.dfm
+++ b/Giko.dfm
@@ -1,11 +1,11 @@
 object GikoForm: TGikoForm
-  Left = 261
-  Top = 105
+  Left = 101
+  Top = 248
   HorzScrollBar.Visible = False
   VertScrollBar.Visible = False
   AutoScroll = False
   Caption = '-'
-  ClientHeight = 563
+  ClientHeight = 562
   ClientWidth = 854
   Color = clBtnFace
   Font.Charset = SHIFTJIS_CHARSET
@@ -28,7 +28,7 @@ object GikoForm: TGikoForm
   TextHeight = 12
   object StatusBar: TStatusBar
     Left = 0
-    Top = 543
+    Top = 542
     Width = 854
     Height = 20
     Panels = <
@@ -48,13 +48,13 @@ object GikoForm: TGikoForm
     Left = 0
     Top = 77
     Width = 854
-    Height = 466
+    Height = 465
     Align = alClient
     BevelOuter = bvNone
     TabOrder = 1
     object MessageSplitter: TSplitter
       Left = 0
-      Top = 427
+      Top = 426
       Width = 854
       Height = 5
       Cursor = crVSplit
@@ -67,7 +67,7 @@ object GikoForm: TGikoForm
       Left = 0
       Top = 0
       Width = 854
-      Height = 427
+      Height = 426
       Align = alClient
       BevelOuter = bvNone
       TabOrder = 0
@@ -75,7 +75,7 @@ object GikoForm: TGikoForm
         Left = 145
         Top = 0
         Width = 5
-        Height = 427
+        Height = 426
         Cursor = crHSplit
         AutoSnap = False
         ResizeStyle = rsUpdate
@@ -84,7 +84,7 @@ object GikoForm: TGikoForm
         Left = 0
         Top = 0
         Width = 145
-        Height = 427
+        Height = 426
         Align = alLeft
         BevelOuter = bvNone
         TabOrder = 0
@@ -271,7 +271,7 @@ object GikoForm: TGikoForm
         Left = 150
         Top = 0
         Width = 704
-        Height = 427
+        Height = 426
         Align = alClient
         BevelOuter = bvNone
         TabOrder = 1
@@ -547,7 +547,7 @@ object GikoForm: TGikoForm
           Left = 0
           Top = 194
           Width = 704
-          Height = 233
+          Height = 232
           Align = alClient
           BevelOuter = bvNone
           TabOrder = 1
@@ -555,7 +555,7 @@ object GikoForm: TGikoForm
             Left = 0
             Top = 46
             Width = 704
-            Height = 167
+            Height = 166
             Align = alClient
             BevelOuter = bvNone
             UseDockManager = False
@@ -565,7 +565,7 @@ object GikoForm: TGikoForm
               Left = 0
               Top = 0
               Width = 704
-              Height = 167
+              Height = 166
               Align = alClient
               TabOrder = 0
               OnEnter = BrowserEnter
@@ -575,7 +575,7 @@ object GikoForm: TGikoForm
               OnNewWindow2 = BrowserNewWindow2
               OnDocumentComplete = BrowserDocumentComplete
               ControlData = {
-                4C000000C3480000431100000000000000000000000000000000000000000000
+                4C000000C3480000281100000000000000000000000000000000000000000000
                 000000004C000000000000000000000001000000E0D057007335CF11AE690800
                 2B2E12620A000000000000004C0000000114020000000000C000000000000046
                 8000000000000000000000000000000000000000000000000000000000000000
@@ -584,7 +584,7 @@ object GikoForm: TGikoForm
           end
           object BrowserBottomPanel: TGikoPanel
             Left = 0
-            Top = 213
+            Top = 212
             Width = 704
             Height = 20
             Align = alBottom
@@ -862,7 +862,7 @@ object GikoForm: TGikoForm
     end
     object MessagePanel: TPanel
       Left = 0
-      Top = 432
+      Top = 431
       Width = 854
       Height = 34
       Align = alBottom
index 63ca53d..18435e0 100644 (file)
--- a/Giko.pas
+++ b/Giko.pas
@@ -10723,8 +10723,9 @@ var
        e: IHTMLElement;
        AID: string;
        stlist : TStringList;
-       i : Integer;
+       i, count, rc : Integer;
        body : String;
+    limited : boolean;
 begin
   result := true;
   try
@@ -10755,7 +10756,16 @@ begin
                                                        stList.Free;
                                                end;
                                        end;
-                                       body := GikoSys.GetSameIDResAnchor(AID, FActiveContent.Thread);
+                    count := GikoSys.GetSameIDResCount(AID, FActiveContent.Thread);
+                    limited := false;
+                    if count > 20 then begin
+                        rc := GikoUtil.MsgBox(Handle,
+                                                               '20\8cÂ\88È\8fã\82 \82è\82Ü\82·\82ª\81A\82·\82×\82Ä\95\\8e¦\82µ\82Ü\82·\82©\81H',
+                                'ID\83|\83b\83v\83A\83b\83v\8cx\8d\90',
+                                                               MB_YESNO or MB_ICONQUESTION);
+                        limited := rc <> ID_YES;
+                    end;
+                    body := GikoSys.GetSameIDResAnchor(AID, FActiveContent.Thread, limited);
                                        IDAnchorPopup(body);
                                end;
                        end;
@@ -11801,14 +11811,24 @@ end;
 procedure TGikoForm.SameIDResAnchorActionExecute(Sender: TObject);
 var
        ThreadItem : TThreadItem;
-       No : Integer;
+       No, count, rc : Integer;
        body : string;
+    limited: boolean;
 begin
        No := KokoPopupMenu.Tag;
        if No = 0 then Exit;
        ThreadItem := GetActiveContent;
        if ThreadItem = nil then Exit;
-       body := GikoSys.GetSameIDResAnchor(No, ThreadItem);
+    count := GikoSys.GetSameIDResCount(No, FActiveContent.Thread);
+    limited := false;
+    if count > 20 then begin
+        rc := GikoUtil.MsgBox(Handle,
+                '20\8cÂ\88È\8fã\82 \82è\82Ü\82·\82ª\81A\82·\82×\82Ä\95\\8e¦\82µ\82Ü\82·\82©\81H',
+                'ID\83|\83b\83v\83A\83b\83v\8cx\8d\90',
+                MB_YESNO or MB_ICONQUESTION);
+        limited := rc <> ID_YES;
+    end;
+       body := GikoSys.GetSameIDResAnchor(No, ThreadItem, limited);
        IDAnchorPopup(body);
 end;
 //ID\83A\83\93\83J\81[\92Ç\89Á
index a12bc9f..18dcb5a 100644 (file)
@@ -219,10 +219,13 @@ type
                                procedure SambaFileExists();
 
                property Bayesian : TGikoBayesian read FBayesian write FBayesian;
-               function GetSameIDResAnchor(const AID : string; ThreadItem: TThreadItem):string; overload;
-               function GetSameIDResAnchor(AIDNum : Integer; ThreadItem: TThreadItem):string; overload;
+               function GetSameIDResAnchor(const AID : string; ThreadItem: TThreadItem; limited: boolean):string; overload;
+               function GetSameIDResAnchor(AIDNum : Integer; ThreadItem: TThreadItem; limited: boolean):string; overload;
                procedure GetSameIDRes(const AID : string; ThreadItem: TThreadItem;var body: TStringList); overload;
                procedure GetSameIDRes(AIDNum : Integer; ThreadItem: TThreadItem;var body: TStringList); overload;
+               function GetSameIDResCount(const AID : string; ThreadItem: TThreadItem):Integer; overload;
+               function GetSameIDResCount(AIDNum : Integer; ThreadItem: TThreadItem):Integer; overload;
+
                //! \92P\8cê\89ð\90Í
                procedure SpamCountWord( const text : string; wordCount : TWordCount );
                //! \8aw\8fK\83N\83\8a\83A
@@ -3790,7 +3793,7 @@ begin
                end;
        end;
 end;
-function TGikoSys.GetSameIDResAnchor(const AID : string; ThreadItem: TThreadItem):string;
+function TGikoSys.GetSameIDResAnchor(const AID : string; ThreadItem: TThreadItem; limited: boolean):string;
 var
        i: integer;
        body: TStringList;
@@ -3800,9 +3803,15 @@ begin
                body := TStringList.Create;
                try
                        GetSameIDRes(AID, ThreadItem, body);
-                       for i := 0 to body.Count - 1 do begin
-                               Result := Result + '&gt;' + body[i] + ' ';
-                       end;
+            if (limited) and (body.Count > 20) then begin
+                       for i := body.Count - 20 to body.Count - 1 do begin
+                               Result := Result + '&gt;' + body[i] + ' ';
+                       end;
+            end else begin
+                       for i := 0 to body.Count - 1 do begin
+                               Result := Result + '&gt;' + body[i] + ' ';
+                       end;
+            end;
                finally
                        body.Free;
                end;
@@ -3844,7 +3853,7 @@ begin
                end;
        end;
 end;
-function TGikoSys.GetSameIDResAnchor(AIDNum : Integer; ThreadItem: TThreadItem):string;
+function TGikoSys.GetSameIDResAnchor(AIDNum : Integer; ThreadItem: TThreadItem; limited: boolean):string;
 var
        i: integer;
        body: TStringList;
@@ -3854,9 +3863,15 @@ begin
                body := TStringList.Create;
                try
                        GetSameIDRes(AIDNum, ThreadItem, body);
-                       for i := 0 to body.Count - 1 do begin
-                               Result := Result + '&gt;' + body[i] + ' ';
-                       end;
+            if (limited) and (body.Count > 20) then begin
+                       for i := body.Count - 20 to body.Count - 1 do begin
+                               Result := Result + '&gt;' + body[i] + ' ';
+                       end;
+            end else begin
+                       for i := 0 to body.Count - 1 do begin
+                               Result := Result + '&gt;' + body[i] + ' ';
+                       end;
+            end;
                finally
                        body.Free;
                end;
@@ -3903,6 +3918,39 @@ begin
                GetSameIDRes(AID, ThreadItem, body);
        end;
 end;
+function TGikoSys.GetSameIDResCount(const AID : string; ThreadItem: TThreadItem):Integer;
+var
+       body: TStringList;
+begin
+    Result := 0;
+       if (ThreadItem <> nil) and (ThreadItem.IsLogFile) then begin
+               body := TStringList.Create;
+               try
+                       GetSameIDRes(AID, ThreadItem, body);
+                       Result := body.Count;
+               finally
+                       body.Free;
+               end;
+       end;
+
+end;
+function TGikoSys.GetSameIDResCount(AIDNum : Integer; ThreadItem: TThreadItem):Integer;
+var
+       i: integer;
+       body: TStringList;
+begin
+       Result := 0;
+       if (ThreadItem <> nil) and (ThreadItem.IsLogFile) then begin
+               body := TStringList.Create;
+               try
+                       GetSameIDRes(AIDNum, ThreadItem, body);
+            Result := body.Count;
+               finally
+                       body.Free;
+               end;
+       end;
+end;
+
 function TGikoSys.NotDateorTimeString(const AStr : string): boolean;
 begin
        Result := false;