doom4ster
2017-11-07 8c86e4a3773fa05a18a853f2ee3cad1573accbe2
CB_IMGPSScanImp.pas
@@ -14,7 +14,7 @@
  ExtCtrls, ComCtrls, Menus, StdCtrls, Gauges, EnImgScr, PJMenuSpeedButtons,
  Buttons, ImgList, SBSimpleSSL, SBHTTPSClient, SBWinCertStorage, SBX509,
  SBCustomCertStorage, SBUtils,mpsBarco,BarcodesFinder,HTTPApp,ErrList,
  Xmltool,inifiles,printers,IdHashMessageDigest, idHash;
  Xmltool,inifiles,printers,IdHashMessageDigest, idHash, LogFile;
var
  Ch_WriteNote : Boolean;
@@ -256,6 +256,7 @@
    N2: TMenuItem;
    ISB1: TImageScrollBox;
    Label3: TLabel;
    LogFile1: TLogFile;
    procedure ActiveFormCreate(Sender: TObject);
    procedure Panel9Resize(Sender: TObject);
    procedure ISB1Click(Sender: TObject);
@@ -488,6 +489,7 @@
    LastAddFormidList:TstringList;
    SampleFormIDList:TStringList; //20170627 已存在範本的formid
    ExistImgList:TStringList;  //20170724  已經存在的影像list for ESCAN  //Img的完整路徑
    reSizeExistImgList:TstringList; //20171012被縮放的舊圖MD5存入
    //********清單區********
    //********顯示區********
@@ -843,6 +845,8 @@
    function CheckCaseAttach_OK: Boolean;
    function DeleteDocNoFileForESCAN(Path, DocNo: String): Boolean;     //2017 確認是否有未歸類文件
    function CheckRequiredColumnValues(workno,caseno:String) :Boolean;  //20171003  此大類下此案是否檢核必填
    function logTimeString :String;
    procedure ReduceLogFile ;
  protected
    { Protected declarations }
    procedure DefinePropertyPages(DefinePropertyPage: TDefinePropertyPage); override;
@@ -1640,6 +1644,7 @@
  LastAddFormidList.Free;
  SampleFormIDList.Free;
  ExistImgList.Free;
  reSizeExistImgList.Free;
  //********清單區********
  if FEvents <> nil then FEvents.OnDestroy;
end;
@@ -1968,8 +1973,10 @@
  iISB : TImageScrollBox;
  GoAtt : Boolean;
  AttLv : Integer;
  ST1 :TStringList;
begin
  PreNode2Name := '';
  ST1:=TStringList.Create;
  if TreeView1.Selected.Parent = MyTreeNode1 then
    PreNode2Name:= GetNode2Name(MyTreeNode2);
  ShowText := _Msg('文件歸類中,請稍候');
@@ -1984,6 +1991,7 @@
  try
    InitialLanguage(DocListForm); //載入多國語言
    //InitialLanguage(PatchDlg); //載入多國語言
    DocListForm.CheckBox1.Visible:=False;
    for i := 1 to FORM_INF_List.Count - 1 do
    begin
      FormID :=  GetSQLData(FORM_INF_List,'T1.FORM_ID',i);
@@ -2009,23 +2017,48 @@
      begin
        if (Components[i] is TShape) and (copy(Components[i].Name,1,2)='SP') then
        begin
          //Showmessage(Components[i].Name);
          iISBName := ShapeName2PreViewISBName(TShape(Components[i]));
          iISB := TImageScrollBox(FindComponent(iISBName));
          OldName := ExtractFileName(iISB.FileName);
          Ext := ExtractFileExt(OldName);
          FormID := DocListForm.DocLV.Selected.Caption;
          DocNo := FormCode2DocNo(FormID);
          if DocListForm.CheckBox1.Checked then
          begin
            FormID := DocListForm.Edit1.Text;
            DocNo := GetNewCustomDocNo(DisplayPath,FormID);
          end
          else
          begin
            FormID := DocListForm.DocLV.Selected.Caption;
            DocNo := FormCode2DocNo(FormID);
          end;
          if DocNoDir2DocNo(Path2DocDir(ExtractFilePath(iISB.FileName),NowCaseno)) = DocNo then
            DocDir := Path2DocDir(ExtractFilePath(iISB.FileName),NowCaseNo)
          Else
            DocDir := FindLastestDocDir(NowCaseno,DocNo);
//ShowMessage('DocNoNeedDiv(DocNo)='+BoolToStr(DocNoNeedDiv(DocNo),true));
//ShowMessage('DocDir='+DocDir);
          if DocNoNeedDiv(DocNo) then   //要分份數
          begin
            if ((FormCode2Page(FormID) = '01') and (GetDocDir_Page(NowCaseno,DocDir)>0)) or (DocDir = '') then
            begin
              DocDir := DocNo2DocNoDir(ImageSavePath + NowCaseno+'\',DocNo);
            end
            else
            begin //20171016  真對補件影響 所加的判斷
              ST1.Clear;
              if FileExists(ImageSavePath + NowCaseno+'\'+DocDir+'\Context.dat') then
              begin
                ST1.LoadFromFile(ImageSavePath + NowCaseno+'\'+DocDir+'\Context.dat');
                if ISExistImg(ImageSavePath + NowCaseno+'\'+DocDir+'\'+ST1.Strings[0]) then
                begin
                  DocDir := DocNo2DocNoDir(ImageSavePath + NowCaseno+'\',DocNo);
                end;
              end;
            end;
          end
          Else        //不分份數
          begin
@@ -2059,6 +2092,7 @@
          //ReNameContext(iISB.FileName,OldName,NewName);
        end;
      end;
//ShowMessage('KKKK');
      ReSortFileName(ExtractFilePath(iISB.FileName));
      DrawDocItem2(MytreeNode1,NowCaseno);
      ClearErrini(NowCaseno,MyTreeNode1);  //清掉檢核記錄
@@ -2073,6 +2107,7 @@
  finally
  DataLoading(False,False);
  DocListForm.Free;
  ST1.Free;
  end;
end;
@@ -3065,11 +3100,12 @@
  i : Integer;
  DocListForm : TDocListForm;
  OldName,NewName,Ext : String;
  NewFormID,NewFormName : String;
  NewFormID,NewFormName,CustomDocNo : String;
begin
  DocListForm := TDocListForm.Create(self);
  try
    InitialLanguage(PatchDlg); //載入多國語言
    InitialLanguage(DocListForm); //載入多國語言
    DocListForm.CheckBox1.Visible:=True;
    for i := 1 to FORM_INF_List.Count - 1 do
    begin
      NewFormID := GetSQLData(FORM_INF_List,'T1.FORM_ID',i);
@@ -3087,30 +3123,64 @@
    end;
    if DocListForm.ShowModal = mrOk then
    begin
      NewFormID := DocListForm.DocLV.Selected.Caption;
      if NowFormCode <> AttName then
      if not (DocListForm.DocLV.Selected=nil) then
         NewFormID := DocListForm.DocLV.Selected.Caption;
      if DocListForm.CheckBox1.Checked then
      begin
        If Messagedlg(Format(_Msg('是否將"%s"的所有影像歸類成"%s"'),[FormCode2FormName(NowCaseNo,NowFormCode),FormCode2FormName(NowCaseNo,NewFormID)]),MtConfirmation,[mbyes,mbcancel],0) = mrcancel Then
        //歸類到自訂文件
        NewFormID:=DocListForm.Edit1.Text;
        if Trim(DocListForm.Edit1.Text)='' then
        begin
          Showmessage('未輸入文件名稱');
          Exit;
        end;
        if FindCustomDocName(DisplayPath,NewFormID) then
        begin
          Showmessage(Format('文件名稱:"%s"己存在',[NewFormID]));
          Exit;
        end;
        if NowFormCode <> AttName then
        begin
          If Messagedlg(Format(_Msg('是否將"%s"的所有影像歸類成"%s"'),[FormCode2FormName(NowCaseNo,NowFormCode),NewFormID]),MtConfirmation,[mbyes,mbcancel],0) = mrcancel Then
            Exit;
        end
        Else
        begin
          If Messagedlg(Format(_Msg('是否將"%s"的所有影像歸類成"%s"'),[_Msg('附件')+MyTreeNode3.Text,FormCode2FormName(NowCaseNo,NewFormID)]),MtConfirmation,[mbyes,mbcancel],0) = mrcancel Then
            Exit;
        end;
        CustomDocNo := GetNewCustomDocNo(DisplayPath,NewFormID);
//ShowMessage('CustomDocNo='+CustomDocNo);
        ShowText := _Msg('歸類中,請稍侯');
        DataLoading(True,True);
        FormIDReplace(NowCaseNo,NowDocDir,NowFormCode,CustomDocNo+'010101A');
      end
      Else
      else
      begin
        If Messagedlg(Format(_Msg('是否將"%s"的所有影像歸類成"%s"'),[_Msg('附件')+MyTreeNode3.Text,FormCode2FormName(NowCaseNo,NewFormID)]),MtConfirmation,[mbyes,mbcancel],0) = mrcancel Then
          Exit;
        //歸類到既有文件
        if NowFormCode <> AttName then
        begin
          If Messagedlg(Format(_Msg('是否將"%s"的所有影像歸類成"%s"'),[FormCode2FormName(NowCaseNo,NowFormCode),FormCode2FormName(NowCaseNo,NewFormID)]),MtConfirmation,[mbyes,mbcancel],0) = mrcancel Then
            Exit;
        end
        Else
        begin
          If Messagedlg(Format(_Msg('是否將"%s"的所有影像歸類成"%s"'),[_Msg('附件')+MyTreeNode3.Text,FormCode2FormName(NowCaseNo,NewFormID)]),MtConfirmation,[mbyes,mbcancel],0) = mrcancel Then
            Exit;
        end;
        ShowText := _Msg('歸類中,請稍侯');
        DataLoading(True,True);
        FormIDReplace(NowCaseNo,NowDocDir,NowFormCode,NewFormID);
      end;
      ShowText := _Msg('歸類中,請稍侯');
      DataLoading(True,True);
      //FormIDReplace(DisplayPath,NowFormCode,FormID);
      //ShowFileReplace(DisplayPath,FormID);
      FormIDReplace(NowCaseNo,NowDocDir,NowFormCode,NewFormID);
      ClearErrini(NowCaseno,MyTreeNode1);  //清掉檢核記錄
      DrawDocItem2(MytreeNode1,NowCaseno);
      //DrawDocItem(MytreeNode1,FORM_INF_List,NowCaseno);
      DataLoading(False,False);
      TreeView1.Selected := MyTreeNode1;
      TreeView1Click(self);
    end;
  finally
  DocListForm.Free;
  end;
@@ -3153,6 +3223,7 @@
  CustomDocNo : String;
  DocDir : String;
  SavePath : String;
  ST1:TStringList;
begin
  if InputQuery('輸入其他文件名稱','文件名稱',CustomDocName) then
  begin
@@ -3163,7 +3234,7 @@
        Showmessage(Format('文件名稱:"%s"己存在',[CustomDocName]));
        Exit;
      end;
      ST1:=TStringList.Create;
      CustomDocNo := GetNewCustomDocNo(DisplayPath,CustomDocName);
      DocDir := CustomDocNo;
      SavePath := ImageSavePath+NowCaseNo+'\'+DocDir+'\';
@@ -5821,8 +5892,10 @@
        end;
        FormCode := FileName2FormCode(S.Strings[n]);
//Showmessage('1:'+version+','+FormCode2Version(FormCode)+','+DocNo+','+FormCode2DocNo(FormCode)+','+iPage+','+FormCode2Page(FormCode));
LogFile1.LogToFile(logTimeString+'CheckCaseDocNoPage caseno='+CaseID+','+version+','+FormCode2Version(FormCode)+','+DocNo+','+FormCode2DocNo(FormCode)+','+iPage+','+FormCode2Page(FormCode));
        if (version = FormCode2Version(FormCode)) and (DocNo = FormCode2DocNo(FormCode)) and (ipage = FormCode2Page(FormCode)) then
        begin
LogFile1.LogToFile(logTimeString+'CheckCaseDocNoPage caseno='+CaseID+','+version+','+FormCode2Version(FormCode)+','+DocNo+','+FormCode2DocNo(FormCode)+','+iPage+','+FormCode2Page(FormCode));
//Showmessage(version+','+DocNo+',iPage='+iPage);
//Showmessage(inttostr(Count+1));
          Inc(Count);
@@ -5910,7 +5983,9 @@
  SizeStr : String;
  S : TStringlist;
  v,v1:Integer;
  IsRecordMD5:Boolean;
begin
  IsRecordMD5:=False;
  FormID := FileName2FormCode(FileName);
  if FormID = '' then Exit;
@@ -5926,6 +6001,12 @@
    begin
//ShowMessage('BBBBBBB');
      ImageScrollBox1.LoadFromFile(ImageSavePath+CaseID+'\Upload\'+FileName,1);
      if (FWH_category='N') and  ISExistImg(ImageSavePath+CaseID+'\Upload\'+FileName) then
      begin
        Exit;//20171103  補件  原有的圖不作resize
      end;
      //FindPoint(ImageScrollBox1.Graphic,UpLPoint,UpRPoint,DownLPoint,NowW,NowH);
      FindPoint(ISB_BW.Graphic,UpLPoint,UpRPoint,DownLPoint,NowW,NowH,ANCHOR);
@@ -5938,8 +6019,15 @@
      IF (SizeStr <> '') and (Copy(SizeStr,1,v) <> 'ERROR') then
      begin
//ShowMessage('CCCCC');
        if (ISExistImg(ImageSavePath+CaseID+'\Upload\'+FileName)) and (reSizeExistImgList.IndexOf(LoadFileGetMD5(ImageSavePath+CaseID+'\Upload\'+FileName))=-1) then
        begin
          IsRecordMD5:=True;
        end;
        ImageScrollBox1.SaveToFile(ImageSavePath+CaseID+'\Upload\'+FileName);
        if IsRecordMD5 then
        begin
          reSizeExistImgList.add(LoadFileGetMD5(ImageSavePath+CaseID+'\Upload\'+FileName));
        end;
//showmessage(ImageSavePath+CaseID+'\Upload\'+FileName);
        S := TStringlist.Create;                     ///20110422拿掉 換成上傳才做
        if FileExists(ImageSavePath+CaseID+'\Upload\ReSize.dat') then
@@ -6427,7 +6515,7 @@
    Result := False;
    Exit;
  end
  Else if Pos('<script type="text/javascript" src="scripts/CW00/login.js"></script>',Memo1.Lines.Text) > 0 then
  Else if Pos('<script type="text/javascript" src="scripts/IMGPS00/login.js"></script>',Memo1.Lines.Text) > 0 then
  begin
    HttpErrStr := _Msg('錯誤原因:')+_Msg('閒置過久或被登出,請重新登入');
    Result := False;
@@ -6747,7 +6835,7 @@
    begin
      if FWH_category='N' then
      begin
        if ISExistImg(Path+S.Strings[i]) then
        if (ISExistImg(Path+S.Strings[i])) or (reSizeExistImgList.IndexOf(LoadFileGetMD5(Path+S.Strings[i]))<>-1)  then
        begin
          Continue;
        end;
@@ -7111,7 +7199,9 @@
  FormID : String;
  OldFile,NewFile:String;
  Ext : String;
  ST1:TStringList;
begin
  ST1:=TStringList.Create;
  OldFileList := TStringlist.Create;
  NewFileList := TStringlist.Create;
  try
@@ -7119,8 +7209,23 @@
    NewDocDir := FindLastestDocDir(CaseID,NewDocNo);
    if NewDocDir = '' then
      NewDocDir := NewDocNo;
//ShowMessage('NewDocDir='+NewDocDir);
    if DocNoNeedDiv(NewDocNo) and (FormCode2Page(NewFormID)='01') then
    begin
      NewDocDir := DocNo2DocNoDir(ImageSavePath+CaseID+'\',NewDocNo);
    end
    else
    begin
      ST1.Clear;
      if FileExists(ImageSavePath + NowCaseno+'\'+NewDocDir+'\Context.dat') then
      begin
        ST1.LoadFromFile(ImageSavePath + NowCaseno+'\'+NewDocDir+'\Context.dat');
        if ISExistImg(ImageSavePath + NowCaseno+'\'+NewDocDir+'\'+ST1.Strings[0]) then
        begin
          NewDocDir := DocNo2DocNoDir(ImageSavePath + NowCaseno+'\',NewDocNo);
        end;
      end;
    end;
    if Not DirectoryExists(ImageSavePath+CaseID+'\'+NewDocDir) then
    begin
      MkDir(ImageSavePath+CaseID+'\'+NewDocDir);
@@ -7163,6 +7268,7 @@
  finally
  OldFileList.Free;
  NewFileList.Free;
  ST1.Free;
  end;
end;
@@ -7585,6 +7691,27 @@
end;
procedure TCB_IMGPSScanX.ReduceLogFile; //20171011 必免log檔掌太大
var
  ST1:TStringlist;
  I:integer;
begin
  ST1:=TStringList.Create;
  if FileExists(LngPath+'IMGPSCheck.log') then
  begin
    ST1.LoadFromFile(LngPath+'IMGPSCheck.log');
    if ST1.count>100000 then
    begin
      for I := 0 to 10000 do
      begin
        ST1.Delete(0);
      end;
      ST1.SaveToFile(LngPath+'IMGPSCheck.log');
    end;
  end;
  ST1.Free;
end;
Procedure TCB_IMGPSScanX.ClearCaseIndex;
begin
@@ -9026,6 +9153,11 @@
    v := Pos('-',NewTreeNode.Text);
    NewTreeNode.Text := Format(_Msg('%s-共%d筆共%d頁'),[Copy(NewTreeNode.Text,1,v-1),CaseCount,PageCount]);
  end;
end;
function TCB_IMGPSScanX.logTimeString: String;
begin
Result:=FormatDateTime('yyyymmdd hh:mm:ss',now) +'  '
end;
Function TCB_IMGPSScanX.FindDivFormCode(FormCode:String):Boolean; //找有沒有分案的條碼
@@ -11208,9 +11340,12 @@
    S.LoadFromFile(ImageSavePath + CaseID+'\upload\Context.dat');
    for i := 0 to S.Count - 1 do
    begin
LogFile1.LogToFile(logTimeString+S.Strings[i]+' ISExistImg='+BoolToStr(ISExistImg(ImageSavePath+CaseID+'\upload\'+S.Strings[i]),true));
LogFile1.LogToFile(logTimeString+S.Strings[i]+' reSizeExistImgList='+BoolToStr(reSizeExistImgList.IndexOf(LoadFileGetMD5(ImageSavePath+CaseID+'\upload\'+S.Strings[i]))<>-1,true));
      if FWH_category='N' then
      begin
        if ISExistImg(ImageSavePath+CaseID+'\upload\'+S.Strings[i]) then
        if (ISExistImg(ImageSavePath+CaseID+'\upload\'+S.Strings[i]))
        or  (reSizeExistImgList.IndexOf(LoadFileGetMD5(ImageSavePath+CaseID+'\upload\'+S.Strings[i]))<>-1)  then
        begin
          Continue;
        end;
@@ -11296,6 +11431,7 @@
        end;
//ShowMessage('MainFormID='+MainFormID);
LogFile1.LogToFile(logTimeString+' '+FModeName+' '+CaseID+' '+'MainFormID='+MainFormID);
        if MainFormID = ''then
        begin
          //20131203 yuu說不檢查這個,先拿掉   20170315 楷琳說未歸類要擋  20170726 因此有檢查必要FormID  所以 可以拿掉
@@ -11316,6 +11452,8 @@
          //////主要非主要文件//////
          DistinctDocinCase(ImageSavePath+CaseID+'\upload\');
//ShowMessage(DocNo_VerinCase.Text);
//DocNo_VerinCase.Add('31A00101_1706A');
LogFile1.LogToFile(logTimeString+' '+CaseID+' '+'DocNo_VerinCase.Text='+DocNo_VerinCase.Text);
          if ModeNeedCheck(OMRErrInfo[1].Mode,FMode) then //是否要檢核
          begin
            for i := 0 to DocNo_VerinCase.Count - 1 do
@@ -11326,6 +11464,7 @@
              MainVersion :=Copy(DocNo_VerinCase.Strings[i],v+1,v1-v); //FormCode2Version(MainFormID);
              MainFormPage := GetDataDocNoPage(MainDocNo,MainVersion); //資料庫記錄主文件頁數
              CaseFormPage := CheckCaseDocNoPage(CaseID,MainDocNo,MainVersion,MainFormPage); //案件主文件的頁數
LogFile1.LogToFile(logTimeString+CaseID+',MainDocNo='+MainDocNo+',MainVersion='+MainVersion+',MainFormPage='+IntToStr(MainFormPage)+',CaseFormPage='+IntToStr(CaseFormPage));
              IF (MainFormPage > 0) and (MainFormPage <> CaseFormPage) then
              begin
                ErrStr:=MainDocNo+Format(OMRErrInfo[1].Info,[Inttostr(MainFormPage),Inttostr(CaseFormPage)]); //主要文件需有XX頁僅附XX頁
@@ -11336,7 +11475,7 @@
            end;
          end;
          //////主要非主要文件/////
          //showmessage(MainFormID);
showmessage(MainFormID);
          MainDocNo := FormCode2DocNo(MainFormID);
          MainVersion := FormCode2Version(MainFormID);
          if FindSQLData(DM_FORM_INF_List,'DEPE_FORM_ID,MUTEX_FORM_ID','MAIN_FORM_ID,DOC_VERSION',MainDocNo+','+MainVersion,0,FindResult) then
@@ -11397,7 +11536,7 @@
            end;
          end;
          //////互斥文件/////
        end;
        end; //MainFormID結束
      //end;
      List.LoadFromFile(ImageSavePath + CaseID+'\upload\Context.dat');
      for i := 0 to List.Count - 1 do
@@ -11437,13 +11576,17 @@
    end;
    //if AllCheck then
    //begin
      //////最大頁數/////
      //////最大頁數///
LogFile1.LogToFile(logTimeString+'最大頁數A段 '+CaseID+' '+'OMRFileList.Text='+OMRFileList.Text);
      DistinctFormCode(CaseID);
      if ModeNeedCheck(OMRErrInfo[10].Mode,FMode) then //是否要檢核
      begin
//ShowMessage('AAA'+OMRFileList.Text);
LogFile1.LogToFile(logTimeString+'最大頁數B段 '+CaseID+' '+'OMRFileList.Text='+OMRFileList.Text);
        For i := 0 to OMRFileList.Count - 1 do
        begin
          if FModeName='異動件' then Continue;
          if FWH_category='N' then
          begin
            if ISExistImg(ImageSavePath+CaseID+'\upload\'+OMRFileList.Strings[i]) then
@@ -11474,17 +11617,12 @@
      ValueXT := TXmltool.Create;
      Try
//ShowMessage('必填'+OMRFileList.Text);
LogFile1.LogToFile(logTimeString+'必填 '+CaseID+' '+'OMRFileList.Text='+OMRFileList.Text);
        For i := 0 to OMRFileList.Count - 1 do
        begin
//ShowMessage('OMRFileList.Strings['+IntToStr(i)+']'+OMRFileList.Strings[i]);
          if CheckRequiredColumnValues(FWork_NO,CaseID) then Continue;
//          if FWH_category='N' then
//          begin
//            if ISExistImg(ImageSavePath+CaseID+'\upload\'+OMRFileList.Strings[i]) then
//            begin
//              Continue;
//            end;
//          end;
          OMRFile := OMRFileList.Strings[i];
          OMRFormCode := FileName2FormCode(OMRFileList.Strings[i]);
          OMRFormName := FormCode2FormName(CaseID,OMRFormCode);
@@ -11493,10 +11631,12 @@
          ImageReSize_FormID(CaseID,OMRFile);
          ////依十字定位點縮放///
//Display1.Lines.Add('OMRFile='+OMRFile+',OMRFormCode='+OMRFormCode+',OMRFormName='+OMRFormName);
LogFile1.LogToFile(logTimeString+'OMRFile='+OMRFile+',OMRFormCode='+OMRFormCode+',OMRFormName='+OMRFormName);
//ShowMessage('KKKKK');
          if not FileExists(CheckXmlPath+OMRFormCode+'.xml') then  //沒有Xml就不用檢核
            Continue;
//ShowMessage('11638 OMRFileList.Strings['+IntToStr(i)+']'+OMRFileList.Strings[i]);
          XT := TXmltool.Create(CheckXmlPath+OMRFormCode+'.xml');
          RelaXT := TXmltool.Create;
//ShowMessage('ModeNeedCheck='+BoolToStr(ModeNeedCheck(OMRErrInfo[4].Mode,FMode),true));
@@ -11549,7 +11689,7 @@
              Until not XT.SubNodes['/form/settype1/'].Next ;
            end;
            //*******必填********
//ShowMessage('11692 OMRFileList.Strings['+IntToStr(i)+']'+OMRFileList.Strings[i]);
            //if AllCheck then
            //begin
            //*******有值相關文件的欄位也要有值*******
@@ -11588,10 +11728,16 @@
                      Anchor1 := FormID2Anchor(RelaFormCode);
                      RelaXT.LoadFromFile(CheckXmlPath+RelaFormCode+'.xml');
Display1.Lines.Add(RelaFile+','+RelaFormName);
                      ISB8.LoadFromFile(ImageSavePath+CaseID+'\upload\'+RelaFile,1); //20170815
                      ISB8W:= ISB8.Graphic.Width;
                      ISB8H:= ISB8.Graphic.Height;
                      FindPoint(ISB8.Graphic,UpLPoint,UpRPoint,DownLPoint,ISB8W,ISB8H,ANCHOR);  //20170815  抓相關然欄位所在圖檔的定位
//ShowMessage(RelaFile);
//ShowMessage(ImageSavePath+CaseID+'\upload\'+RelaFile);
                      if RelaFile<>'' then
                      begin
                        ISB8.LoadFromFile(ImageSavePath+CaseID+'\upload\'+RelaFile,1); //20170815
                        ISB8W:= ISB8.Graphic.Width;
                        ISB8H:= ISB8.Graphic.Height;
                        FindPoint(ISB8.Graphic,UpLPoint,UpRPoint,DownLPoint,ISB8W,ISB8H,ANCHOR);  //20170815  抓相關然欄位所在圖檔的定位
                      end;
                      OMROK := False;
                      //OMROK := False;
                      //if RelaXT.SubNodes['/form/settype2/'].First then
@@ -11645,6 +11791,7 @@
              Until not XT.SubNodes['/form/settype3/'].Next ;
            end;
            //*******有值相關文件的欄位也要有值*******
//ShowMessage('11788 OMRFileList.Strings['+IntToStr(i)+']'+OMRFileList.Strings[i]);
            //*******有值相關文件的欄位不能有值*******
            if ModeNeedCheck(OMRErrInfo[11].Mode,FMode) then //是否要檢核
@@ -11684,10 +11831,15 @@
                    RelaFormName := FormCode2FormName(CaseID,RelaFormCode);
                    Anchor1 := FormID2Anchor(RelaFormCode);
                    RelaXT.LoadFromFile(CheckXmlPath+RelaFormCode+'.xml');
                    ISB8.LoadFromFile(ImageSavePath+CaseID+'\upload\'+RelaFile,1); //20170815
                    ISB8W:= ISB8.Graphic.Width;
                    ISB8H:= ISB8.Graphic.Height;
                    FindPoint(ISB8.Graphic,UpLPoint,UpRPoint,DownLPoint,ISB8W,ISB8H,ANCHOR);  //20170815  抓相關然欄位所在圖檔的定位
                    if RelaFile<>'' then
                    begin
                      ISB8.LoadFromFile(ImageSavePath+CaseID+'\upload\'+RelaFile,1); //20170815
                      ISB8W:= ISB8.Graphic.Width;
                      ISB8H:= ISB8.Graphic.Height;
                      FindPoint(ISB8.Graphic,UpLPoint,UpRPoint,DownLPoint,ISB8W,ISB8H,ANCHOR);  //20170815  抓相關然欄位所在圖檔的定位
                    end;
                    OMROK := False;
                    //OMROK := False;
                    //if RelaXT.SubNodes['/form/settype2/'].First then
@@ -11745,7 +11897,7 @@
            end;
            //*******有值相關文件的欄位不能有值*******
//ShowMessage('11889 OMRFileList.Strings['+IntToStr(i)+']'+OMRFileList.Strings[i]);
              //*******有值相依文件*******
            if ModeNeedCheck(OMRErrInfo[5].Mode,FMode) then //是否要檢核
@@ -11908,6 +12060,7 @@
          RelaXT.Free;
          end;
        end;
        //必填迴圈結束
      Finally
      ValueXT.Free;
      end;
@@ -13845,6 +13998,7 @@
  PageLVclear := True;
  InitialOk := False;
  //FMode := 'DSCAN' ;
  //FIs_In_Wh := 'Y';
  if FIs_In_Wh = 'Y' then
@@ -13951,6 +14105,7 @@
  LastAddFormidList := TStringList.Create;
  SampleFormIDList := TStringList.Create;//20170627 加入
  ExistImgList := TStringList.Create;  //20170724 新增
  reSizeExistImgList :=TStringList.Create; //20171012 新增
  //********清單區********
  ShowText := _Msg('資料載入中,請稍候');
@@ -14069,7 +14224,9 @@
  Del_Sub_NothingPath(ImagePath);  //清掉案件目錄是空的
  LogFile1.LogFile:=LngPath+'IMGPSCheck.log';
  ReduceLogFile;
  ShowText := _Msg('資料載入中,請稍候');
  DataLoading(True,True);