From d02cd5e3e87cbe8ff72b2d6ff91ed185910607b5 Mon Sep 17 00:00:00 2001
From: doom4ster <doom4ster@gmail.com>
Date: 星期三, 09 八月 2017 10:23:53 +0800
Subject: [PATCH] CB_IMGPSScan.cab ver2.0.1.27 修改補件必要文件的問題

---
 CB_IMGPSScanImp.pas |  465 ++++++++++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 389 insertions(+), 76 deletions(-)

diff --git a/CB_IMGPSScanImp.pas b/CB_IMGPSScanImp.pas
index 732bb3b..181e9ad 100644
--- a/CB_IMGPSScanImp.pas
+++ b/CB_IMGPSScanImp.pas
@@ -145,7 +145,6 @@
     ISB2: TImageScrollBox;
     imgp1: TPanel;
     lb1: TLabel;
-    ISB1: TImageScrollBox;
     Memo1: TMemo;
     Display1: TMemo;
     Panel22: TPanel;
@@ -255,6 +254,8 @@
     ISB_BW: TImageScrollBox;
     N1: TMenuItem;
     N2: TMenuItem;
+    ISB1: TImageScrollBox;
+    Label3: TLabel;
     procedure ActiveFormCreate(Sender: TObject);
     procedure Panel9Resize(Sender: TObject);
     procedure ISB1Click(Sender: TObject);
@@ -481,8 +482,11 @@
     NowShowFileList : TStringlist;  //目前顯示的影像清單
     NowSelectFileList : TStringlist; //目前被點選的影像清單
     GuideFormIDList : TStringlist; //要當導引頁表單清單
+    DivPageFormIDList:TStringlist; //要當分案頁表單清單
     LastInitFormidList:TStringList;
     LastAddFormidList:TstringList;
+    SampleFormIDList:TStringList; //20170627 已存在範本的formid
+    ExistImgList:TStringList;  //20170724  已經存在的影像list for ESCAN  //Img的完整路徑
     //********清單區********
 
     //********顯示區********
@@ -554,6 +558,7 @@
     Has_Authorize :String; //是否有授權書影像
     AttName : String; //未歸類目錄名稱
     NowGuideFormID : String;
+    NowDivPageFormID:String;
 
     FirstDocDir : String;
 
@@ -676,7 +681,7 @@
     Function FindFormCodePages(CaseID,FormCode:String):Integer;  //計算案件裡FormID的頁數
     Function GetDataFormCodePages(FormCode:String):Integer;   //取記錄的FormcID的頁數
     Procedure CaseReSize(CaseID:String); //案件的影像縮放
-    Procedure ImageReSize(CaseID,FileName:String);  //依十字定位點做縮放
+    Procedure ImageReSize_FormID(CaseID,FileName:String);  //依十字定位點做縮放
     Procedure ImageReSize_tmp(FormID,FileName:String);  //依十字定位點做縮放(暫存檔)
     Function TransCaseID(Path,CaseID:String;MainCase:Boolean):Boolean; //傳送案件
     Procedure NewTreeNodeRefresh;
@@ -827,6 +832,9 @@
     procedure initParameter;
     procedure LastInitFormidListCreate(path:string);
     function checkFormCodeIsCustom(path,formcode:string):boolean;
+    function ISDivPageFormID(FormID: String): Boolean;
+    function GetSampleInf: Boolean;
+    procedure InitExistImgList(casepath:String);
   protected
     { Protected declarations }
     procedure DefinePropertyPages(DefinePropertyPage: TDefinePropertyPage); override;
@@ -1196,6 +1204,54 @@
   PM605Click(nil);
 end;
 
+procedure TCB_IMGPSScanX.InitExistImgList(casepath: String);
+var
+  ST1,ST2,ST3,ST4:TStringList;
+  i,j,k:Integer;
+begin
+//ShowMessage('casepath='+casepath);
+  ST1:=TStringList.Create;
+  ST2:=TStringList.Create;
+  ST3:=TStringList.Create;
+  ST4:=TStringList.Create;
+//FImgDelete:='Y';
+  if FileExists(casepath+'CaseDocNo.dat') then
+  begin
+    ST1.LoadFromFile(casepath+'CaseDocNo.dat');
+    for I := 0 to ST1.Count - 1 do
+    begin
+      ST2.LoadFromFile(casepath+ST1.Strings[i]+'\Context.dat');
+      for j := 0 to ST2.Count - 1 do
+      begin
+        ExistImgList.Add(casepath+ST1.Strings[i]+'\'+ST2.Strings[j])
+      end;
+    end;
+  end;
+
+  if FileExists(casepath+'S_Attach\Context.dat') then
+  begin
+    ST3.LoadFromFile(casepath+'S_Attach\Context.dat');
+    for I := 0 to ST3.Count - 1 do
+    begin
+      ExistImgList.Add(casepath+'S_Attach\'+ST3.Strings[i])
+    end;
+  end;
+
+  if FileExists(casepath+'Attach\Context.dat') then
+  begin
+    ST3.LoadFromFile(casepath+'Attach\Context.dat');
+    for I := 0 to ST3.Count - 1 do
+    begin
+      ExistImgList.Add(casepath+'Attach\'+ST3.Strings[i])
+    end;
+  end;
+
+  ST1.Free;
+  ST2.Free;
+  ST3.Free;
+//ShowMessage('ExistImgList='+ExistImgList.Text);
+end;
+
 procedure TCB_IMGPSScanX.Initialize;
 begin
   inherited Initialize;
@@ -1256,7 +1312,7 @@
 
 procedure TCB_IMGPSScanX.ISB1Enter(Sender: TObject);
 begin
-  ISB1.SetFocus;
+  //ISB1.SetFocus;
 end;
 
 procedure TCB_IMGPSScanX.ISB1ImageMouseDown(Sender: TObject; Button: TMouseButton;
@@ -1265,7 +1321,7 @@
   p : Integer;
 begin
   DisplayISB := TImageScrollBox(Sender);
-  DisplayISB.SetFocus;
+  //DisplayISB.SetFocus;
   Shape1.Left := TPanel(TImageScrollBox(Sender).Parent).Left - Seg;
   Shape1.Top := TPanel(TImageScrollBox(Sender).Parent).Top - Seg;
   P := strtoint(copy(DisplayISB.Name,4,1)) + ScrollBar1.Position-2;
@@ -1298,12 +1354,19 @@
 procedure TCB_IMGPSScanX.ISB1ImageMouseMove(Sender: TObject; Shift: TShiftState;
   X, Y: Integer);
 begin
-   Edit1.SetFocus;
+   //Edit1.SetFocus;
   //TImageScrollBox(Sender).SetFocus;
   if TImageScrollBox(Sender).FileName = '' then
+  begin
+//ShowMessage('AAA');
+Label3.Caption:='FileName='+TImageScrollBox(Sender).FileName+'  time='+FormatDateTime('yyyy/mm/dd HH:MM:SS', now);
     TImageScrollBox(Sender).MouseMode := mmUser
+  end
   Else
+  begin
+Label3.Caption:='FileName='+TImageScrollBox(Sender).FileName;
     ViewMouseMode(NowClick);
+  end;
 end;
 
 procedure TCB_IMGPSScanX.ISB1ImageMouseUp(Sender: TObject; Button: TMouseButton;
@@ -1555,9 +1618,11 @@
   Cust_DocNoList.Free; //自行定義文件名稱
   IN_WH_DocNoList.Free; //入庫的文件清單
   GuideFormIDList.Free; //要當導引頁表單清單
-
+  DivPageFormIDList.Free; //要當分案頁表單清單
   LastInitFormidList.Free;
   LastAddFormidList.Free;
+  SampleFormIDList.Free;
+  ExistImgList.Free;
   //********清單區********
   if FEvents <> nil then FEvents.OnDestroy;
 end;
@@ -2111,6 +2176,8 @@
       //Showmessage(Components[i].Name);
       iISBName := ShapeName2PreViewISBName(TShape(Components[i]));
       iISB := TImageScrollBox(FindComponent(iISBName));
+//ShowMessage('iISB.FileName='+iISB.FileName);
+//ShowMessage(ExtractFilePath(iISB.FileName)+','+ExtractFileName(iISB.FileName)+','+NowCaseNo);
       DeleteImageFile(ExtractFilePath(iISB.FileName),ExtractFileName(iISB.FileName),NowCaseNo);
     end;
   end;
@@ -2155,6 +2222,7 @@
       TreeView1click(nil);
       FirstDocDir := '';
       NowGuideFormID := '';
+      NowDivPageFormID :='';
       AddScanBtnclick(nil);
     end;
   end
@@ -2170,6 +2238,7 @@
     ScanPath := '';
     ScanCaseno := '';
     NowGuideFormID := '';
+    NowDivPageFormID :='';
     ClearView(1);
     ContextList.Clear;
     Try
@@ -2585,12 +2654,14 @@
         ShowText :=_Msg('檔案加入中,請稍候('+inttostr(i)+'/'+inttostr(P)+')');
         DataLoading(True,True);
         ISB.LoadFromFile(FName,i);
+//ISB.SaveToFile('C:\OCX\aaaaaa'+IntToStr(i)+'.tif');
         DeskewImg(ISB.Graphic);
+//ISB.SaveToFile('C:\OCX\bbbbbb'+IntToStr(i)+'.tif');
         if (TreeView1.Selected = NewTreeNode) or (TreeView1.Selected = MyTreeNode1) then
         begin
           SaveFilename := '';
           MpsGetBarcode(ISB.Graphic,MpsBarcodeinf);
-          for n := 1 to MpsBarcodeinf.Count-1  do
+          for n := 1 to MpsBarcodeinf.Count  do
           begin
             if MpsBarcodeinf.r180[n] <> 0 then  //依條碼角度轉影像
             begin
@@ -2655,6 +2726,17 @@
             SaveFilename:= Add_Zoo(ContextList.Count+1,3)+ext
           Else
             SaveFilename := Add_Zoo(ContextList.Count+1,3)+'_'+SaveFilename+ext;
+
+          for n := 1 to MpsBarcodeinf.Count  do
+          begin
+            if MpsBarcodeinf.r180[n] <> 0 then  //依條碼角度轉影像
+            begin
+              Rotate(ISB.Graphic,MpsBarcodeinf.r180[n]);
+              MpsGetBarcode(ISB.Graphic,MpsBarcodeinf);
+              Break;
+            end;
+          end;
+          //Rotate(ISB.Graphic,MpsBarcodeinf.r180[n]);  //20170705 加入有條碼就轉正
           ISB.SaveToFile(SavePath+SaveFilename);
 
           SetContextList('A',-1,CaseID,DocDir,SaveFilename);
@@ -2683,6 +2765,17 @@
             SaveFilename := Add_Zoo(ContextList.Count+1,3)+'_'+NowFormCode+ext
           else
             SaveFilename := Add_Zoo(ContextList.Count+1,3)+ext;
+
+          for n := 1 to MpsBarcodeinf.Count  do
+          begin
+            if MpsBarcodeinf.r180[n] <> 0 then  //依條碼角度轉影像
+            begin
+              Rotate(ISB.Graphic,MpsBarcodeinf.r180[n]);
+              MpsGetBarcode(ISB.Graphic,MpsBarcodeinf);
+              Break;
+            end;
+          end;
+          //Rotate(ISB.Graphic,MpsBarcodeinf.r180[n]); //20170705 加入有條碼就轉正
           ISB.SaveToFile(SavePath+SaveFilename);
           ContextList.Add(SaveFilename);
           ContextList.SaveToFile(SavePath+'Context.dat');
@@ -3176,14 +3269,33 @@
       PM104.Visible := True;   //檔案加入影像
     end;
 
-    if FMode='ESCAN' then
+    if FModeName='異動件' then
     begin
-      PM101.Visible := False;
+      PM101.Visible := True;
     end;
+//    if FMode='ESCAN' then
+//    begin
+//      PM101.Visible := True;
+//    end;
   end
   Else if TreeView1.Selected = MyTreeNode1 then    //案件層
   begin
     PM101.Visible := True;   //刪除
+
+    if FImgDelete='Y' then
+    begin
+      PM101.Visible:=True;
+    end;
+    if FImgDelete='N' then
+    begin
+      PM101.Visible:=false;
+    end;
+
+    if FModeName='異動件' then
+    begin
+      PM101.Visible := True;
+    end;
+
     if not CaseDelete_Enable(NowCaseno) then //
       PM101.Enabled := False
     else
@@ -3198,10 +3310,10 @@
     begin
       PM102.Visible := True;   //修改案件編號
     end;
-    if FMode='ESCAN' then
-    begin
-      PM101.Visible := False;
-    end;
+//    if FMode='ESCAN' then
+//    begin
+//      PM101.Visible := True;
+//    end;
   end
   Else if TreeView1.Selected = MyTreeNode2 then    //文件層
   begin
@@ -3210,6 +3322,20 @@
     //PM109.Visible := True;   //檢核此筆
     if FCustDocYN <> 'N' Then
       PM110.Visible := True;   //新增自訂文件
+    if FImgDelete='Y' then
+    begin
+      PM101.Visible:=True;
+    end;
+    if FImgDelete='N' then
+    begin
+      PM101.Visible:=false;
+    end;
+
+    if FModeName='異動件' then
+    begin
+      PM101.Visible := True;
+    end;
+
     if GetUseCase('T',DisplayPath,NowDocDir) <> '' then   //沒有被引用走的
       PM101.Enabled := False    //刪除
     Else
@@ -3218,10 +3344,10 @@
       PM111.Visible := True;   //修改份數
     if (FMode = 'NSCAN') then
       PM102.Visible := True;   //修改案件編號
-    if FMode='ESCAN' then
-    begin
-      PM101.Visible := False;
-    end;
+//    if FMode='ESCAN' then
+//    begin
+//      PM101.Visible := True;
+//    end;
   end
   Else if TreeView1.Selected = MyTreeNode3 then    //表單層
   begin
@@ -3232,7 +3358,23 @@
     if FCustDocYN <> 'N' Then
       PM110.Visible := True;   //新增自訂文件
     if GetFormIDPage(ContextList,NowFormCode) < 1 Then
+    begin
       PM108.Visible := False;   //歸類
+    end;
+    if FImgDelete='Y' then
+    begin
+      PM101.Visible:=True;
+    end;
+    if FImgDelete='N' then
+    begin
+      PM101.Visible:=false;
+    end;
+
+    if FModeName='異動件' then
+    begin
+      PM101.Visible := True;
+    end;
+
     if GetUseCase('T',DisplayPath,NowDocDir) <> '' then   //被引用走的
     begin
       PM101.Enabled := False;   //刪除
@@ -3247,22 +3389,12 @@
     end;
 
     if (FMode = 'NSCAN') then
-      PM102.Visible := True;   //修改案件編號
-    //PM103.Visible := True;   //掃瞄器加入影像
-    //PM104.Visible := True;   //檔案加入影像
-    //PM107.Visible := True;   //寫備註
-    //PM109.Visible := True;   //檢核此筆
-
-    if FMode='ESCAN' then
     begin
-      PM101.Visible := False;
+      PM102.Visible := True;   //修改案件編號
     end;
   end;
 
-  if FImgDelete='Y' then
-  begin
-    PM101.Visible:=True;
-  end;
+
 
 end;
 
@@ -3316,28 +3448,52 @@
 
 procedure TCB_IMGPSScanX.PopupMenu6Popup(Sender: TObject);
 begin
-  PM601.Visible := False;  //歸類
-  PM602.Visible := False;  //自行定義文件名稱
+  PM601.Visible := True;  //歸類
+  PM602.Visible := True;  //自行定義文件名稱
   PM603.Visible := False;  //掃描替換此頁
   PM604.Visible := False;  //歪斜矯正
-  PM605.Visible := False;  //刪除
-  if ((NowDocNo = 'Attach') or (NowDocNo = 'S_Attach')) and (FCustDocYN <> 'N') then
-    PM602.Visible := True;  //自行定義文件名稱
-  //PM603.Visible := True;  //掃描替換此頁
-  PM604.Visible := True;  //歪斜矯正
-  PM601.Visible := True;  //歸類
   PM605.Visible := True;  //刪除
+
+//  if FMode='ESCAN' then
+//  begin
+//    PM601.Visible := False;  //歸類
+//    PM602.Visible := False;  //自行定義文件名稱
+//    PM603.Visible := False;  //掃描替換此頁
+//    PM604.Visible := False;  //歪斜矯正
+//    PM605.Visible := False;  //刪除
+//  end;
+
+  if ((NowDocNo = 'Attach') or (NowDocNo = 'S_Attach')) and (FCustDocYN <> 'N') then
+  begin
+    PM602.Visible := True;  //自行定義文件名稱
+    //PM603.Visible := True;  //掃描替換此頁
+    PM604.Visible := True;  //歪斜矯正
+    PM601.Visible := True;  //歸類
+    PM605.Visible := True;  //刪除
+  end;
+
+  if  FModeName<>'異動件' then
+  begin
+    if (FImgDelete='Y') then
+    begin
+      PM605.Enabled:=True;
+    end;
+    if FImgDelete='N' then
+    begin
+      PM605.Enabled:=false;
+    end;
+  end;
+
+
+
 
   if CheckSelectImg_UseCase(DisplayPath,NowCaseNo) then //選擇的影像不可有引用的
   begin
     PM601.Enabled := False;  //歸類
     PM605.Enabled := False;  //刪除
-  end
-  Else
-  begin
-    PM601.Enabled := True;  //歸類
-    PM605.Enabled := True;  //刪除
   end;
+
+
 end;
 
 procedure TCB_IMGPSScanX.PrePageBtnClick(Sender: TObject);
@@ -3372,6 +3528,7 @@
 var
   SampleFormID : String;
   SendData : String;
+  buttonSelected : Integer;
 begin
   ScanMode := smSample;
   ClearView(1);
@@ -3384,6 +3541,19 @@
   ShowText := _Msg('範本掃描中,請稍候');
   DataLoading(True,True);
   SampleFormID := UpperCase(InputBox(_Msg('範本檔掃瞄輸入畫面'),_Msg('請輸入文件編號'),''));
+
+  if SampleFormIDList.IndexOf(SampleFormID)<>-1 then
+  begin
+    // Show a custom dialog
+    buttonSelected := messagedlg(SampleFormID+'已有範本,是否取代?',mtCustom,
+                                [mbYes,mbCancel], 0);
+    if buttonSelected = mrCancel then
+    begin
+      DataLoading(false,false);
+      Exit;
+    end;
+  end;
+
   if SampleFormID <> '' then
   begin
     if FormIDExists(SampleFormID,False,0) then
@@ -3635,7 +3805,7 @@
   //CreateFormID_FormName(DisplayPath);  //產生FormID_FormName.dat
   //CreateDocNo_DocName(DisplayPath); //產生DocNo_Name.dat
   //Showmessage(CreateDocNo_Info(DisplayPath));  //產生 Docno,份數,頁數;Docno,份數,頁數 的回傳字串
-
+  lb1.Caption:='AAAAAAAAAAA';
   //Showmessage(CreateDocnoFrom_Info(NowCaseno));
   //Showmessage(self.CreateCustDocNoFrom_Info(NowCaseno));
 
@@ -3671,6 +3841,11 @@
     'FIsExternal='+    FIsExternal+#10#13+
     'FCheck_main_form='+    FCheck_main_form);
 
+ { ShowMessage('UpLPoint='+IntToStr(UpLPoint.X)+','+IntToStr(UpLPoint.Y)+#10#13+
+    'UpRPoint='+IntToStr(UpRPoint.X)+','+IntToStr(UpRPoint.Y)+#10#13+
+    'DownLPoint='+IntToStr(DownLPoint.X)+','+IntToStr(DownLPoint.Y)+#10#13+
+    'DownRPoint='+IntToStr(DownRPoint.X)+','+IntToStr(DownRPoint.Y));
+  }
 end;
 
 procedure TCB_IMGPSScanX.Button4Click(Sender: TObject);
@@ -3681,6 +3856,8 @@
   //Showmessage(self.Doc_Inf_List.Text);
   //LoadImgFile;
   //LoadImgFile1;
+  //ISB1.MouseMode:=mmAmplifier;
+
   str:='';
   for I := 1 to 11 do // 看 OMRErrInfo 的內容
   begin
@@ -3696,6 +3873,14 @@
   ShowMessage('MEMO_INF_List='+MEMO_INF_List.Text)         ;
   ShowMessage('WORK_INF_List='+WORK_INF_List.Text)          ;
   ShowMessage('LASTEST_FORM_INF_List='+LASTEST_FORM_INF_List.Text)   ;
+  ShowMessage('SampleFormIDList='+SampleFormIDList.Text);
+  ShowMessage('ExistImgList='+ExistImgList.Text);
+  ShowMessage('LastInitFormidList='+LastInitFormidList.Text);
+  ShowMessage('IN_WH_DocNoList='+IN_WH_DocNoList.Text);
+
+//  SampleFormIDList.Add('31A00101011706A');
+//  SampleFormIDList.Add('31A00101021706A');
+//  SampleFormIDList.Add('31A00101031706A');
 end;
 
 procedure TCB_IMGPSScanX.StatrTwainScan;
@@ -3713,6 +3898,7 @@
   ScanInfo.Graphic := TTiffGraphic.Create;
   try
     ISB := nil; //規零
+//ShowMessage(IntToStr(ScanDpi));
     Scanner.RequestedXDpi := ScanDpi;
     Scanner.RequestedYDpi := ScanDpi;
     Scanner.RequestedImageFormat := ScanColor;
@@ -4019,8 +4205,13 @@
           if FormID = '' then
           begin
             FormID := BarCode2FormID; //取出FormID
-
           end;
+
+          if (FormID <> '') and ISDivPageFormID(FormID) then
+          begin
+            NowDivPageFormID := FormID;
+          end;
+
           if (FormID <> '') and ISGuideFormID(FormID) then
           begin
             NowGuideFormID := FormID;
@@ -4030,7 +4221,10 @@
             FormID := NowGuideFormID;
           DocNo := FormCode2DocNo(FormID);
 //ShowMessage('FormID='+FormID);
-          if (FormID <>'') and FindDivFormCode(FormID) and (NowGuideFormID <> '')  Then  //只找分案頁上的案件條碼
+//ShowMessage('ISDivPageFormID(FormID)='+BoolToStr(ISDivPageFormID(FormID),true));
+//ShowMessage('FindDivFormCode(FormID)='+BoolToStr(FindDivFormCode(FormID),true));
+//ShowMessage('A NowDivPageFormID='+NowDivPageFormID+#10#13+'FormID='+FormID+#10#13+'ScanCaseno='+ScanCaseno);
+          if (FormID <>'') and FindDivFormCode(FormID) and (NowDivPageFormID <> '')  Then  //只找分案頁上的案件條碼
           begin
 
             ScanInfo.ImageCount := 0;
@@ -4040,7 +4234,8 @@
             ClearCaseIndex;                //清掉案件索引
             ScanCaseno := BarCode2CaseID; //取出案件編號
             NowGuideFormID := '';
-//ShowMessage('NowGuideFormID='+NowGuideFormID+#10#13+'FormID='+FormID+#10#13+'ScanCaseno='+ScanCaseno);
+            NowDivPageFormID :='';
+//ShowMessage('B NowGuideFormID='+NowGuideFormID+#10#13+'FormID='+FormID+#10#13+'ScanCaseno='+ScanCaseno);
           end;
           if ScanCaseno = '' then //一開始都沒找到
           begin
@@ -4130,10 +4325,9 @@
       begin
         ScanSaveFilename := '';
         FormID := BarCode2FormID; //取出FormID
-        if (FormID <> '') and ISGuideFormID(FormID) then
+        if (FormID <> '') and ISGuideFormID(FormID) then   //20170510 註解 因為DSCAN 會全擠在導引頁下
           NowGuideFormID := FormID;
-        //Showmessage('A:'+FormID+#13+'B:'+NowGuideFormID);
-        if (NowGuideFormID <> '') {and (FormID = '')} then
+        if (NowGuideFormID <> '') {and (FormID = '')} then  //20170510 註解  因為DSCAN 會全擠在導引頁下
           FormID := NowGuideFormID;
         DocNo := FormCode2DocNo(FormID);
         ScanDocDir := FindLastestDocDir(ScanCaseno,DocNo);
@@ -4430,21 +4624,39 @@
   W,H : Integer;
 begin
   Result := 0;
+//ShowMessage('GetSiteOMR');
+
   IF (ImageScrollBox1.FileName <> FileName) and (FileName <> '') then
   begin
+//ShowMessage('11111'+ImageScrollBox1.FileName+#10#13+FileName);
     ImageScrollBox1.LoadFromFile(FileName,1);
-    FindPoint(ImageScrollBox1.Graphic,UpLPoint,UpRPoint,DownLPoint,'NONE');
+{
+ShowMessage('UpLPoint='+IntToStr(UpLPoint.X)+','+IntToStr(UpLPoint.Y)+#10#13+
+'UpRPoint='+IntToStr(UpRPoint.X)+','+IntToStr(UpRPoint.Y)+#10#13+
+'DownLPoint='+IntToStr(DownLPoint.X)+','+IntToStr(DownLPoint.Y)+#10#13+
+'DownRPoint='+IntToStr(DownRPoint.X)+','+IntToStr(DownRPoint.Y));
+    FindPoint(ImageScrollBox1.Graphic,UpLPoint,UpRPoint,DownLPoint,'');
+ShowMessage('UpLPoint='+IntToStr(UpLPoint.X)+','+IntToStr(UpLPoint.Y)+#10#13+
+'UpRPoint='+IntToStr(UpRPoint.X)+','+IntToStr(UpRPoint.Y)+#10#13+
+'DownLPoint='+IntToStr(DownLPoint.X)+','+IntToStr(DownLPoint.Y)+#10#13+
+'DownRPoint='+IntToStr(DownRPoint.X)+','+IntToStr(DownRPoint.Y));
+}
     ClearLine(ISB_BW.Graphic,bt);
     ISB_BW.Redraw(True);
     Application.ProcessMessages;
   end;
   If ImageScrollBox1.FileName <> '' Then
   begin
+
+//ShowMessage('22222'+ImageScrollBox1.FileName);
     Xdpi := ImagescrollBox1.Graphic.XDotsPerInch;
     Ydpi := ImagescrollBox1.Graphic.YDotsPerInch;
     H := ImageScrollBox1.Graphic.Height;
     W := ImageScrollBox1.Graphic.Width;
+//ShowMessage('Xdpi='+IntToStr(Xdpi)+#10#13+'Ydpi='+IntToStr(Ydpi)+#10#13+'H='+IntToStr(H)+#10#13+'W='+IntToStr(W)+#10#13);
+//ShowMessage('Site='+Site);
     OMRRect := CM_Str2Rect(Site,Xdpi,UpLPoint);
+//ShowMessage(IntToStr(OMRRect.Left)+#10#13+IntToStr(OMRRect.top)+#10#13+IntToStr(OMRRect.Right)+#10#13+IntToStr(OMRRect.Bottom));
     if OMRRect.Left < 0 then
       OMRRect.Left := 0;
     if OMRRect.Top < 0  then
@@ -4455,6 +4667,7 @@
       OMRRect.Bottom := ImageScrollBox1.Graphic.Height;
 
     result := Get_OMR(ISB_BW.Graphic,OMRRect);
+//ShowMessage('result='+IntToStr(result));
   end;
 end;
 
@@ -4496,7 +4709,7 @@
           DeviceDeleteSize := ini.ReadInteger('DeviceDelete','Size_New',Def_DeviceDeleteSize);
           ScannerReverse := ini.ReadBool('Scanner','Reverse',Def_ScannerReverse);
           BoardClear := ini.ReadBool('Scanner','BoardClear',Def_BoardClear);
-          ScanDpi := ini.ReadInteger('Scanner','Dpi',Def_ScanDpi);
+          //ScanDpi := ini.ReadInteger('Scanner','Dpi',Def_ScanDpi);
           //ScanDuplex := ini.ReadBool('Scanner','Duplex',Def_ScanDuplex);
           ScanRotate := ini.ReadInteger('Scanner','ScanRotate',Def_ScanRotate);
           ScanDeskew := ini.ReadBool('Scanner','ScanDeskew',Def_ScanDeskew);
@@ -4510,7 +4723,7 @@
           ini.WriteInteger('DeviceDelete','Size_New',DeviceDeleteSize);
           ini.WriteBool('Scanner','Reverse',ScannerReverse);
           ini.WriteBool('Scanner','BoardClear',BoardClear);
-          ini.ReadInteger('Scanner','Dpi',ScanDpi);
+          //ini.ReadInteger('Scanner','Dpi',ScanDpi);
           //ini.WriteBool('Scanner','Duplex',ScanDuplex);
           ini.WriteInteger('Scanner','ScanRotate',ScanRotate);
           ini.WriteBool('Scanner','ScanDeskew',ScanDeskew);
@@ -4683,6 +4896,11 @@
     begin
       PARA_CONTENT := GetSQLData(WORK_INF_List,'PARA_CONTENT',i);
       GuideFormIDList.CommaText := PARA_CONTENT;
+    end
+    Else if UpperCase(GetSQLData(WORK_INF_List,'PARA_NO',i)) = 'DIVPAGEFORMID' Then     //當分案頁的表單
+    begin
+      PARA_CONTENT := GetSQLData(WORK_INF_List,'PARA_CONTENT',i);
+      DivPageFormIDList.CommaText := PARA_CONTENT;
     end;
   end;
   ScanDuplex := Def_ScanDuplex;
@@ -4734,6 +4952,7 @@
   Md : TMouseMode;
   ISB : TImageScrollBox;
 begin
+//ShowMessage(IntToStr(v));
   case v of
    -1 : Md := TMouseMode(mmUser);
     0 : Md := TMouseMode(mmAmplifier);
@@ -4748,6 +4967,7 @@
   begin
     ISB := TImageScrollBox(FindComponent('ISB'+inttostr(i)));
     ISB.MouseMode := TMouseMode(Md);
+    //Label3.Caption:='v='+IntToStr(v)+'  time'+FormatDateTime('yyyy/mm/dd HH:MM:SS', now);
   end;
 end;
 
@@ -4828,6 +5048,39 @@
     ServerTime := Copy(ServerDate,9,6);
     ServerDate := Copy(ServerDate,1,8);
     Balance := GetBalance(ServerTime); //Server 跟Local的時間差
+    Result := True;
+  end
+  Else if Pos('<script type="text/javascript" src="scripts/CW00/login.js"></script>',Memo1.Lines.Text) > 0 then
+  begin
+    HttpErrStr := _Msg('錯誤原因:')+_Msg('閒置過久或被登出,請重新登入');
+    Result := False;
+    Exit;
+  end;
+
+end;
+
+Function TCB_IMGPSScanX.GetSampleInf : Boolean;
+var
+  str:String;
+begin
+  Result := False;
+  If not ProcessServlet_Get(HTTPSClient,FURL+'service/imgpsc/IMGPSC01/serversampleforocx','work_no='+FWork_no,FReWrite,Memo1,False) Then
+  begin
+    HttpErrStr := _Msg('錯誤代碼:')+inttostr(HttpError.HttpErrorCode)+','+HttpError.HttpReason;
+    Result := False;
+    Exit;
+  end;
+  IF memo1.Lines.Strings[0] = '1' Then
+  begin
+    HttpErrStr := _Msg('錯誤原因:')+memo1.Lines.Strings[1];
+    Result := False;
+    Exit;
+  end
+  Else IF memo1.Lines.Strings[0] = '0' Then
+  begin
+    str := memo1.Lines.Strings[1];
+    SampleFormIDList.CommaText:=str;
+    
     Result := True;
   end
   Else if Pos('<script type="text/javascript" src="scripts/CW00/login.js"></script>',Memo1.Lines.Text) > 0 then
@@ -5404,14 +5657,14 @@
     For i := 0 to S.Count -1 do
     begin
       FileName := S.Strings[i];
-      ImageReSize(CaseID,FileName);  //依十字定位點做縮放
+      ImageReSize_FormID(CaseID,FileName);  //依十字定位點做縮放
     end;
   finally
   S.Free;
   end;
 end;
 
-Procedure TCB_IMGPSScanX.ImageReSize(CaseID,FileName:String);  //依十字定位點做縮放
+Procedure TCB_IMGPSScanX.ImageReSize_FormID(CaseID,FileName:String);  //依十字定位點做縮放
 var
   FormID : String;
   DH,DW : String;
@@ -5430,17 +5683,27 @@
     DW := GetFindResult('T1.FORM_WIDTH');
     ANCHOR := UpperCase(GetFindResult('T1.ANCHOR'));
     ANCHOR := Index2Anchor(ANCHOR);
+//showmessage(FormID+#13+DH+#13+DW+#13);
+//ShowMessage('AAAAAAAAA');
     if ((ANCHOR = 'ANCHOR') or (ANCHOR = 'FRAME')) and (DH <> '') and (DW <> '') then  //有十字定位點
     begin
+//ShowMessage('BBBBBBB');
       ImageScrollBox1.LoadFromFile(ImageSavePath+CaseID+'\Upload\'+FileName,1);
       //FindPoint(ImageScrollBox1.Graphic,UpLPoint,UpRPoint,DownLPoint,NowW,NowH);
       FindPoint(ISB_BW.Graphic,UpLPoint,UpRPoint,DownLPoint,NowW,NowH,ANCHOR);
+
       SizeStr := CheckSize(ISB_BW,UpLPoint,UpRPoint,DownLPoint,DW,DH);
+      ImageResize(ImageScrollBox1.Graphic,ISB_BW.Graphic.Width,ISB_BW.Graphic.Height);
+
+      FindPoint(ISB_BW.Graphic,UpLPoint,UpRPoint,DownLPoint,NowW,NowH,ANCHOR);
       v := 5;
       v1 := length(SizeStr);
       IF (SizeStr <> '') and (Copy(SizeStr,1,v) <> 'ERROR') then
       begin
+//ShowMessage('CCCCC');
+
         ImageScrollBox1.SaveToFile(ImageSavePath+CaseID+'\Upload\'+FileName);
+//showmessage(ImageSavePath+CaseID+'\Upload\'+FileName);
         S := TStringlist.Create;                     ///20110422拿掉 換成上傳才做
         if FileExists(ImageSavePath+CaseID+'\Upload\ReSize.dat') then
           S.LoadFromFile(ImageSavePath+CaseID+'\Upload\ReSize.dat');
@@ -5580,6 +5843,7 @@
   ST1:=TStringList.Create;
   ST1.LoadFromFile(path+'FormCode_Name.dat');
 //ShowMessage(ST1.Text);
+//ShowMessage(LastInitFormidList.Text);
   ST2:=TStringList.Create;
 
   for I := 0 to ST1.Count - 1 do
@@ -5587,14 +5851,16 @@
     if (Pos('_',St1.Strings[i])<>1) and (Pos('_',St1.Strings[i])<>-11) then
     begin
       str1:=Copy(ST1.Strings[i],1,Pos('_',St1.Strings[i])-1);
+      ST2.Add(str1);
       if ST2.IndexOf(str1) = -1 then
       begin
-        ST2.Add(str1);
+
         must_formidStr:= must_formidStr+str1+'@#,';
       end;
     end;
   end;
   must_formidStr:=Copy(must_formidStr,1,Length(must_formidStr)-3) ;
+//ShowMessage('AST2='+ST2.Text);
   for I := 0 to LastInitFormidList.Count - 1 do
   begin
     if ST2.IndexOf(LastInitFormidList.Strings[i]) <> -1 then
@@ -5602,19 +5868,15 @@
       ST2.Delete(ST2.IndexOf(LastInitFormidList.Strings[i]));
     end;
   end;
+//ShowMessage('BST2='+ST2.Text);
   for I := 0 to ST2.Count - 1 do
   begin
-    if i <> ST2.Count then
-    begin
       last_add_formidstr:=last_add_formidstr+ST2.Strings[i]+'@#,';
-    end
-    else
-    begin
-      last_add_formidstr:=last_add_formidstr+ST2.Strings[i]
-    end;
   end;
+  last_add_formidstr:=Copy(last_add_formidstr,1,Length(last_add_formidstr)-3) ;
   ST1.Free;
   ST2.Free;
+//ShowMessage('last_add_formidstr='+last_add_formidstr);
   ///////必要formid 20170315 end //////////////////////////
 
   ///保留外部影像  start///////////////////////////////
@@ -7561,6 +7823,7 @@
   ErrlistForm : TErrlistForm;
   S : TStringlist;
   UpFormID : String;
+  Anchor : String;
 begin
   ShowText := _Msg('處理檢核失敗中,請稍候');
   DataLoading(True,True);
@@ -8490,7 +8753,7 @@
   end;
 end;
 
-Function TCB_IMGPSScanX.Case2Mask(SoPath,DePath:String):Boolean;//產生遮罩影像
+Function TCB_IMGPSScanX.Case2Mask(SoPath,DePath:String):Boolean;//產生遮罩影像  20170639 發現沒用到
 var
   XT : TXMLTool;
   i : Integer;
@@ -9660,6 +9923,22 @@
   end;
 end;
 
+Function TCB_IMGPSScanX.ISDivPageFormID(FormID:String):Boolean;
+var
+  i : Integer;
+begin
+  Result := False;
+
+  for i := 0 to DivPageFormIDList.Count - 1 do
+  begin
+    if FormID = DivPageFormIDList.Strings[i] then
+    begin
+      Result := True;
+      Break;
+    end;
+  end;
+end;
+
 Function TCB_IMGPSScanX.CaseDelete_Enable(CaseID:String):Boolean;  //案件可否被刪除
 var
   i : Integer;
@@ -10093,6 +10372,12 @@
         CaseDocNo_CopiesList.SaveToFile(DeDir+'CaseDocNo_Copies.dat');
       end;
     end;}
+
+    if FMode='ESCAN' then
+    begin
+      InitExistImgList(DeDir);
+    end;
+
 
   finally
   iFileList.Free;
@@ -10557,17 +10842,18 @@
 //ShowMessage('MainFormID='+MainFormID);
         if MainFormID = ''then
         begin
-          //20131203 yuu說不檢查這個,先拿掉   20170315 楷琳說未歸類要擋
-          if FCheck_main_form='Y' then
+          //20131203 yuu說不檢查這個,先拿掉   20170315 楷琳說未歸類要擋  20170726 因此有檢查必要FormID  所以 可以拿掉
+          {if FCheck_main_form='Y' then
           begin
-            if (FMode <> 'SSCAN') then  //簽署章件會換主FormID,先跳過
+            if (FMode <> 'SSCAN') AND (FMode<>'ESCAN') then  //簽署章件會換主FormID,先跳過 20170629 ESCAN 也不檢查
             begin
               ErrStr:=_Msg('找不到分案文件');   //找不到主文件
               OMRErr2ini(CaseID,ErrStr,'','','','','','',False,False,True);
               CaseOk := false;
+//ShowMessage('AAAAA');
             end;
           end;
-
+          }
         end
         Else
         begin
@@ -10685,6 +10971,7 @@
       DistinctFormCode(CaseID);
       if ModeNeedCheck(OMRErrInfo[10].Mode,FMode) then //是否要檢核
       begin
+//ShowMessage(OMRFileList.Text);
         For i := 0 to OMRFileList.Count - 1 do
         begin
           FormCode := FileName2FormCode(OMRFileList.Strings[i]);
@@ -10716,7 +11003,7 @@
           OMRFormName := FormCode2FormName(CaseID,OMRFormCode);
           Anchor := FormID2Anchor(OMRFormCode);
           ///依十字定位點縮放////
-          ImageReSize(CaseID,OMRFile);
+          ImageReSize_FormID(CaseID,OMRFile);
           ////依十字定位點縮放////
           if not FileExists(CheckXmlPath+OMRFormCode+'.xml') then  //沒有Xml就不用檢核
             Continue;
@@ -10749,6 +11036,8 @@
                       SiteRec := SiteRec+'@'+Site;
                     //有填就ok
                     //Showmessage(ColCName +','+ inttostr(OMRMpsV1.GetSiteOMR(ImageSavePath+CaseID+'\upload\'+OMRFile,Site))+','+inttostr(Pixel + SafePixel));
+//SafePixel:=90000;
+//ShowMessage(ColEName+' '+ColCName+'   圖像實際點數='+IntToStr(GetSiteOMR(ImageSavePath+CaseID+'\upload\'+OMRFile,Site,Bt))+' 設定點數='+IntToStr( (Pixel + SafePixel)));
                     if GetSiteOMR(ImageSavePath+CaseID+'\upload\'+OMRFile,Site,Bt) > (Pixel + SafePixel)  then
                     begin
                       //Showmessage('oh');
@@ -11366,7 +11655,7 @@
        begin
          inc(Ct);
          ISB := TImageScrollBox(FindComponent(ISBName+intToStr(Ct)));
-         ISB.AntiAliased := False;
+         ISB.AntiAliased := True;
          if ISB.ZoomPercent > 100  then
            ISB.AntiAliased := False;
          ISB.LoadFromFile(Path+iDocNo+'\'+ContextList.Strings[n],1);
@@ -11975,7 +12264,8 @@
   for I := 0 to ContextList.Count - 1 do
   begin
     FileFormID := FileName2FormCode(ContextList.Strings[i]);
-    if FileFormID=GuideFormIDList.Strings[0] then //20170509 跳過導引頁的formid
+
+    if DivPageFormIDList.IndexOf(FileFormID)<>-1 then //20170509 跳過分案頁的formid
     begin
       Continue;
     end;
@@ -12984,6 +13274,7 @@
   i: Integer;
 begin
   Timer1.Enabled := False;
+
   //Showmessage('a');
   //self.FIs_OldCase := 'Y';
   PageLVclear := True;
@@ -13090,8 +13381,11 @@
   Cust_DocNoList := TStringlist.Create; //自行定義的文件名稱
   IN_WH_DocNoList := TStringlist.Create; //入庫的文件清單
   GuideFormIDList := TStringlist.Create; //要當導引頁表單清單
+  DivPageFormIDList := TStringList.Create; //要當分案頁表單清單
   LastInitFormidList :=TStringList.Create;
   LastAddFormidList := TStringList.Create;
+  SampleFormIDList := TStringList.Create;//20170627 加入
+  ExistImgList := TStringList.Create;  //20170724 新增
   //********清單區********
 
   ShowText := _Msg('資料載入中,請稍候');
@@ -13103,6 +13397,19 @@
     DataLoading(False,False);
     Exit;
   end;
+
+  if FMode='SAMPLESCAN' then
+  begin
+    IF not GetSampleInf Then  //取已存在sample
+    begin
+      Showmessage(_Msg('取存在範本資訊時,網路發生錯誤!!')+HttpErrStr);
+      DataLoading(False,False);
+      Exit;
+    end;
+  end;
+
+
+
 //ShowMessage('GetServerDate  '+ServerDate+' , '+ServerTime);
   ////下載系統資訊////
   IF not GetSetInf1 Then  //取DOC_INF  文件資訊
@@ -13176,14 +13483,19 @@
   initkscan;
   if ImagePath[Length(ImagePath)] <> '\' then
     ImagePath := ImagePath + '\';
+//ShowMessage('ImagePath='+ImagePath);
   CheckXmlPath := ImagePath+'OMRSITE\'+FWork_No;
+//ShowMessage('CheckXmlPath='+CheckXmlPath);
   SitePath := ImagePath+'Site\'+FWork_No+'\';
   LngPath := ImagePath;
   SamplePath := ImagePath+'Sample\'+FWork_No+'\';
   ImagePath := ImagePath + 'Scantemp\';
+//ShowMessage('AA  ImagePath='+ImagePath);
   ScaniniPath :=ImagePath+FWork_No+'\'+FUserUnit +'\';
+//ShowMessage('ScaniniPath='+ScaniniPath);
   ImagePath := ImagePath + FWork_No+'\'+FUserUnit+'\'+FMode+'\';
-//ShowMessage('ImagePath='+ImagePath);
+  ImagePath := StringReplace(ImagePath, '\\', '\',[rfReplaceAll, rfIgnoreCase]);
+//ShowMessage('BB  ImagePath='+ImagePath);
   ImageSavePath := ImagePath;
   str2dir(CheckXmlPath);
   str2dir(SitePath);
@@ -13292,8 +13604,9 @@
     DenialTimeLb.Visible := True;
     DenialTimeLb.Caption := Format(ScanDenialHint,[ScanDenialTime]);
   end;
-
+//ShowMessage(IntToStr(ScanDpi));
   R_W_Scanini('R'); //掃瞄設定的ini
+//ShowMessage(IntToStr(ScanDpi));
   ScanDuplexCB.Checked := ScanDuplex;
   if FMode <> 'SAMPLESCAN' then
     LoadImgFile;
@@ -13311,10 +13624,9 @@
   Splitter2.Visible := True;
   AttFileGB.Visible := False; //附加電子檔窗
   Splitter2.Visible := False; }
-
+//ShowMessage('ImageSavePath='+ImageSavePath);
   DataLoading(False,False);
-//ShowMessage('初始話執行完成');
-//ShowMessage(GuideFormIDList.Text);
+
 end;
 
 procedure TCB_IMGPSScanX.Timer2Timer(Sender: TObject);
@@ -13435,7 +13747,7 @@
           begin
             ShowText := CaseID+_Msg('檢核中,請稍候');
             DataLoading(True,True);
-            If not OMRCheckCase(CaseID) then
+            If not OMRCheckCase(CaseID) then  //進檢核
             begin
               Inc(CheckErrCount);
               Continue;
@@ -13452,6 +13764,7 @@
       ShowText := CaseID+_Msg('資料上傳中,請稍候');
       DataLoading(True,True);
 //ShowMessage('NNNNN');
+//ShowMessage('退出');DataLoading(False,False);Exit;
       If Not TransCaseID(TransPath,CaseID,True) Then  //傳送案件
       begin
         DataLoading(False,False);

--
Gitblit v1.8.0