doom4ster
2017-07-28 2eea00a047ded1eb4706e02e453aadc22a88b9e7
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);
@@ -485,6 +486,7 @@
    LastInitFormidList:TStringList;
    LastAddFormidList:TstringList;
    SampleFormIDList:TStringList; //20170627 已存在範本的formid
    ExistImgList:TStringList;  //20170724  已經存在的影像list for ESCAN  //Img的完整路徑
    //********清單區********
    //********顯示區********
@@ -832,6 +834,7 @@
    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;
@@ -1201,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;
@@ -1261,7 +1312,7 @@
procedure TCB_IMGPSScanX.ISB1Enter(Sender: TObject);
begin
  ISB1.SetFocus;
  //ISB1.SetFocus;
end;
procedure TCB_IMGPSScanX.ISB1ImageMouseDown(Sender: TObject; Button: TMouseButton;
@@ -1270,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;
@@ -1303,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;
@@ -1564,6 +1622,7 @@
  LastInitFormidList.Free;
  LastAddFormidList.Free;
  SampleFormIDList.Free;
  ExistImgList.Free;
  //********清單區********
  if FEvents <> nil then FEvents.OnDestroy;
end;
@@ -2117,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;
@@ -2593,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
@@ -2663,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);
@@ -2691,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');
@@ -3264,6 +3349,8 @@
    if FMode='ESCAN' then
    begin
      PM101.Visible := False;
      PM108.Visible := False;
      PM110.Visible := False;
    end;
  end;
@@ -3324,17 +3411,29 @@
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 CheckSelectImg_UseCase(DisplayPath,NowCaseNo) then //選擇的影像不可有引用的
  begin
@@ -3346,6 +3445,17 @@
    PM601.Enabled := True;  //歸類
    PM605.Enabled := True;  //刪除
  end;
  if FMode='ESCAN' then
  begin
    PM605.Enabled:=False;
  end;
  if FImgDelete='Y' then
  begin
    PM605.Enabled:=True;
  end;
end;
procedure TCB_IMGPSScanX.PrePageBtnClick(Sender: TObject);
@@ -3657,7 +3767,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));
@@ -3708,6 +3818,8 @@
  //Showmessage(self.Doc_Inf_List.Text);
  //LoadImgFile;
  //LoadImgFile1;
  //ISB1.MouseMode:=mmAmplifier;
  str:='';
  for I := 1 to 11 do // 看 OMRErrInfo 的內容
  begin
@@ -3724,6 +3836,8 @@
  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);
//  SampleFormIDList.Add('31A00101011706A');
//  SampleFormIDList.Add('31A00101021706A');
//  SampleFormIDList.Add('31A00101031706A');
@@ -4067,6 +4181,9 @@
            FormID := NowGuideFormID;
          DocNo := FormCode2DocNo(FormID);
//ShowMessage('FormID='+FormID);
//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
@@ -4078,7 +4195,7 @@
            ScanCaseno := BarCode2CaseID; //取出案件編號
            NowGuideFormID := '';
            NowDivPageFormID :='';
//ShowMessage('NowGuideFormID='+NowGuideFormID+#10#13+'FormID='+FormID+#10#13+'ScanCaseno='+ScanCaseno);
//ShowMessage('B NowGuideFormID='+NowGuideFormID+#10#13+'FormID='+FormID+#10#13+'ScanCaseno='+ScanCaseno);
          end;
          if ScanCaseno = '' then //一開始都沒找到
          begin
@@ -4795,6 +4912,7 @@
  Md : TMouseMode;
  ISB : TImageScrollBox;
begin
//ShowMessage(IntToStr(v));
  case v of
   -1 : Md := TMouseMode(mmUser);
    0 : Md := TMouseMode(mmAmplifier);
@@ -4809,6 +4927,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;
@@ -10215,6 +10334,12 @@
      end;
    end;}
    if FMode='ESCAN' then
    begin
      InitExistImgList(DeDir);
    end;
  finally
  iFileList.Free;
  FileList.Free;
@@ -10678,17 +10803,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') 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
@@ -10806,6 +10932,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]);
@@ -11489,7 +11616,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);
@@ -13108,6 +13235,7 @@
  i: Integer;
begin
  Timer1.Enabled := False;
  //Showmessage('a');
  //self.FIs_OldCase := 'Y';
  PageLVclear := True;
@@ -13218,6 +13346,7 @@
  LastInitFormidList :=TStringList.Create;
  LastAddFormidList := TStringList.Create;
  SampleFormIDList := TStringList.Create;//20170627 加入
  ExistImgList := TStringList.Create;  //20170724 新增
  //********清單區********
  ShowText := _Msg('資料載入中,請稍候');
@@ -13315,14 +13444,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);
@@ -13451,11 +13585,9 @@
  Splitter2.Visible := True;
  AttFileGB.Visible := False; //附加電子檔窗
  Splitter2.Visible := False; }
//ShowMessage('ImageSavePath='+ImageSavePath);
  DataLoading(False,False);
//ShowMessage('初始話執行完成');
//ShowMessage('GuideFormIDList='+GuideFormIDList.Text);
//ShowMessage('DivPageFormIDList='+DivPageFormIDList.Text);
end;
procedure TCB_IMGPSScanX.Timer2Timer(Sender: TObject);
@@ -13576,7 +13708,7 @@
          begin
            ShowText := CaseID+_Msg('檢核中,請稍候');
            DataLoading(True,True);
            If not OMRCheckCase(CaseID) then
            If not OMRCheckCase(CaseID) then  //進檢核
            begin
              Inc(CheckErrCount);
              Continue;
@@ -13593,7 +13725,7 @@
      ShowText := CaseID+_Msg('資料上傳中,請稍候');
      DataLoading(True,True);
//ShowMessage('NNNNN');
ShowMessage('退出');DataLoading(False,False);Exit;
//ShowMessage('退出');DataLoading(False,False);Exit;
      If Not TransCaseID(TransPath,CaseID,True) Then  //傳送案件
      begin
        DataLoading(False,False);