From a83839e2935c06f2a70ee1f2be40caca54f42aaf Mon Sep 17 00:00:00 2001
From: Hong <chlin1022@i-mps.com>
Date: 星期一, 25 五月 2020 11:19:57 +0800
Subject: [PATCH] Ver 2,0,1,72
---
CB_IMGPSScanImp.pas | 357 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-----
1 files changed, 324 insertions(+), 33 deletions(-)
diff --git a/CB_IMGPSScanImp.pas b/CB_IMGPSScanImp.pas
index 65d6fe7..99818e3 100644
--- a/CB_IMGPSScanImp.pas
+++ b/CB_IMGPSScanImp.pas
@@ -14,7 +14,8 @@
ExtCtrls, ComCtrls, Menus, StdCtrls, Gauges, EnImgScr, PJMenuSpeedButtons,
Buttons, ImgList, SBSimpleSSL, SBHTTPSClient, SBWinCertStorage, SBX509,
SBCustomCertStorage, SBUtils,mpsBarco,BarcodesFinder,HTTPApp,ErrList,
- Xmltool,inifiles,printers,IdHashMessageDigest, idHash, LogFile;
+ Xmltool,inifiles,printers,IdHashMessageDigest, idHash, LogFile,ShellApi,
+ SBSocket;
var
Ch_WriteNote : Boolean;
@@ -111,7 +112,6 @@
Splitter1: TSplitter;
Panel3: TPanel;
Label7: TLabel;
- TreeView1: TTreeView;
Panel6: TPanel;
CB1: TCheckBox;
ScanDuplexCB: TCheckBox;
@@ -180,7 +180,6 @@
PM402: TMenuItem;
PM403: TMenuItem;
PM404: TMenuItem;
- HTTPSClient: TElHTTPSClient;
ElWinCertStorage: TElWinCertStorage;
ElMemoryCertStorage: TElMemoryCertStorage;
Panel5: TPanel;
@@ -188,8 +187,6 @@
Panel11: TPanel;
SampleScanBtn: TBitBtn;
WNoteBtn: TBitBtn;
- Panel13: TPanel;
- CaseHelpBtn: TBitBtn;
PopupMenu1: TPopupMenu;
PM101: TMenuItem;
N12: TMenuItem;
@@ -247,7 +244,6 @@
Edit1: TEdit;
PM110: TMenuItem;
Image1: TImage;
- PrtLb: TLabel;
UseOldCaseLb: TLabel;
PM111: TMenuItem;
SmoothCB: TCheckBox;
@@ -258,6 +254,18 @@
Label3: TLabel;
LogFile1: TLogFile;
ScanGrayCB: TCheckBox;
+ AttFileGB: TGroupBox;
+ AttListBox: TListBox;
+ Panel20: TPanel;
+ AddAttFileLB: TLabel;
+ DelAttFileLB: TLabel;
+ Splitter2: TSplitter;
+ Panel17: TPanel;
+ TreeView1: TTreeView;
+ Panel13: TPanel;
+ PrtLb: TLabel;
+ CaseHelpBtn: TBitBtn;
+ HTTPSClient: TElHTTPSClient;
procedure ActiveFormCreate(Sender: TObject);
procedure Panel9Resize(Sender: TObject);
procedure ISB1Click(Sender: TObject);
@@ -376,6 +384,14 @@
procedure TreeView1MouseEnter(Sender: TObject);
procedure ScrollBox1MouseEnter(Sender: TObject);
procedure ScanGrayCBClick(Sender: TObject);
+ procedure AddAttFileLBClick(Sender: TObject);
+ procedure DelAttFileLBClick(Sender: TObject);
+ procedure AttListBoxDblClick(Sender: TObject);
+ procedure AttListBoxClick(Sender: TObject);
+ procedure TreeView1MouseDown(Sender: TObject; Button: TMouseButton;
+ Shift: TShiftState; X, Y: Integer);
+ procedure HTTPSClientRedirection(Sender: TObject; const OldURL: string;
+ var NewURL: string; var AllowRedirection: Boolean);
private
{ Private declarations }
HotKeyId1,HotKeyId2,HotKeyId3,HotKeyId4 :Integer;
@@ -473,6 +489,7 @@
CaseDocNoList : TStringlist; //案件裡的DocNo清單(不重複)
CaseDocNo_CopiesList : TStringlist; //案件裡的DocNo份數清單
ContextList : TStringlist; //案件裡的檔案清單
+ AttContextList : TStringlist; //案件裡的附加檔案清單
OMRFileList : TStringList; //要OMR檢核的文件(只檢查每種Form的第一頁)
Cust_DocNoList : TStringlist; //自行定義文件名稱
IN_WH_DocNoList : TStringlist; //入庫的文件清單
@@ -572,7 +589,7 @@
FJpgCompression:integer;// 20171211 jpg to tif 的壓縮率
Draging : Boolean;
-
+ MDown : Boolean; //20181210 用來判斷滑鼠右鍵要Popupmenu是否有MouseDonw發生
FEvents: ICB_IMGPSScanXEvents;
@@ -650,6 +667,7 @@
Procedure initkscan; //檢查掃描器的功能
procedure LoadImgFile; //載入案件
procedure LoadImgFile1; //載入案件
+ procedure LoadAttFile(CaseID:String); //載入附加檔案
Procedure DistinctFormCode(CaseID:String); //案件裡的FormCode取出第一頁
Function OMRCheckCase(CaseID:String):Boolean; //OMR檢核
Procedure OMRErr2ini(CaseID,Reason,FileName,Site,RelaFileName,RelaSite,Anchor,Anchor1:String;Del,Ingnore,Display:Boolean); //OMR檢核失敗寫入ini
@@ -712,6 +730,9 @@
Procedure SetCaseList(Mode:Char;Index:Integer;text:String); //'A:加入,I:插入,D:刪除,E:修改'
Procedure SetDocNoList(Mode:Char;Index:Integer;CaseNo,DocDir,Copies:String); //'A:加入,I:插入,D:刪除,E:修改'
Procedure SetContextList(Mode:Char;Index:Integer;CaseNo,DocDir,FileName:String); //'A:加入,I:插入,D:刪除,E:修改'
+ Procedure SetAttContextList(Mode:Char;Index:Integer;CaseNo,FileName:String); //'A:加入,I:插入,D:刪除,E:修改'
+
+
Function checkCaseOMRDone:Boolean; //檢查案件是否完成OMR檢核
Function CheckCaseID_OK:Boolean; //檢查是否有未配號的案件
Procedure CreateEmptyCase(Path,CaseID:String); //產生空白案號(重掃件用)
@@ -1679,6 +1700,7 @@
DocNo_List.Free; //DocNo清單
Context_DocnoList.Free; //案件裡的檔案Docno清單
ContextList.Free; //案件裡的檔案清單
+ AttContextList.Free; //案件裡的附加檔案清單
NowShowFileList.Free; //目前顯示的影像清單
NowSelectFileList.Free; //目前被點選的影像清單
Cust_DocNoList.Free; //自行定義文件名稱
@@ -2106,7 +2128,7 @@
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
+ if (ST1.Count > 0) and ISExistImg(ImageSavePath + NowCaseno+'\'+DocDir+'\'+ST1.Strings[0]) then //20181210 多增加判斷ST1>0 否則會有機會出現List out of bound Hong
begin
DocDir := DocNo2DocNoDir(ImageSavePath + NowCaseno+'\',DocNo);
end;
@@ -2629,7 +2651,8 @@
begin
Result:=False;
ST:=TStringList.Create;
- ST.loadFromfile(DocNopath+'\Context.dat');
+ if FileExists(DocNopath+'\Context.dat') then /////20190319 Hong 當有空的Docno目錄時會掛掉,增加這行
+ ST.loadFromfile(DocNopath+'\Context.dat');
for I := 0 to ST.Count - 1 do
begin
if ISExistImg(DocNopath+ST.Strings[i]) then
@@ -2810,7 +2833,7 @@
MpsGetBarcode(ISB_BW.Graphic, MpsBarcodeinf); //判斷A3 有用FormID 所以要先辨條碼
For n := 1 To MpsBarcodeinf.Count Do
Begin
- If MpsBarcodeinf.r180[n] <> 0 Then // 依條碼角度轉影像
+ If (MpsBarcodeinf.r180[n] <> 0) and (Length(MpsBarcodeinf.Text[n])=FormIDLength) Then // 依條碼角度轉影像
Begin
Rotate(ISB.Graphic, MpsBarcodeinf.r180[n]);
//MpsGetBarcode(iGraphic_First, MpsBarcodeinf);
@@ -2855,7 +2878,7 @@
//ShowMessage(IntToStr(MpsBarcodeinf.Count));
For n := 1 To MpsBarcodeinf.Count Do
Begin
- If MpsBarcodeinf.r180[n] <> 0 Then // 依條碼角度轉影像
+ If (MpsBarcodeinf.r180[n] <> 0) and (Length(MpsBarcodeinf.Text[n])=FormIDLength) Then // 依條碼角度轉影像
Begin
Rotate(iGraphic, MpsBarcodeinf.r180[n]);
MpsGetBarcode(ISB_BW.Graphic, MpsBarcodeinf);
@@ -2933,7 +2956,7 @@
For n := 1 To MpsBarcodeinf.Count Do
Begin
- If MpsBarcodeinf.r180[n] <> 0 Then // 依條碼角度轉影像
+ If (MpsBarcodeinf.r180[n] <> 0) and (Length(MpsBarcodeinf.Text[n])=FormIDLength) Then // 依條碼角度轉影像
Begin
Rotate(iGraphic, MpsBarcodeinf.r180[n]);
MpsGetBarcode(ISB_BW.Graphic, MpsBarcodeinf);
@@ -4082,6 +4105,36 @@
end;
end;
+procedure TCB_IMGPSScanX.AddAttFileLBClick(Sender: TObject);
+var
+ i : Integer;
+ Addfile : String;
+begin
+ OpenDialog1.Filter := 'PDF files|*.pdf';
+ OpenDialog1.Options := [ofAllowMultiSelect];
+ if OpenDialog1.Execute then
+ begin
+ ShowText :=_Msg('檔案加入中,請稍候');
+ DataLoading(True,True);
+ for i := 0 to OpenDialog1.Files.Count - 1 do
+ begin
+ AddFile := HTTPEncode(UTF8Encode(ExtractFileName(OpenDialog1.Files.Strings[i])));
+ if FileExists(ImageSavePath+NowCaseno+'\'+AddFile) then
+ begin
+ if Messagedlg(Format(_msg('%s己存在,是否覆蓋??'),[Addfile]),mtconfirmation,[mbyes,mbcancel],0) = mrcancel Then
+ Continue;
+ SetAttContextList('D',-1,NowCaseno,AddFile);
+ end;
+ // AttFileGB.Visible := True; //附加電子檔窗 //20120207楊玉說不在這加電子檔先拿掉
+ // Splitter2.Visible := True;
+ CopyFile(Pchar(OpenDialog1.Files.Strings[i]),Pchar(ImageSavePath+NowCaseno+'\'+AddFile),False);
+ SetAttContextList('A',-1,NowCaseno,AddFile);
+ LoadAttFile(NowCaseno);
+ end;
+ end;
+ DataLoading(False,False);
+end;
+
procedure TCB_IMGPSScanX.AddCredit1RGClick(Sender: TObject);
begin
if DisplayPath <> '' then
@@ -4135,6 +4188,26 @@
ClearErrini(NowCaseno,MyTreeNode1); //清掉檢核記錄
SetDocDirtoSelected(MyTreeNode1,FirstDocDir);
TreeView1Click(self);
+end;
+
+procedure TCB_IMGPSScanX.AttListBoxClick(Sender: TObject);
+begin
+ DelAttFileLB.Enabled := False;
+ if AttListBox.ItemIndex >= 0 then
+ DelAttFileLB.Enabled := True;
+end;
+
+procedure TCB_IMGPSScanX.AttListBoxDblClick(Sender: TObject);
+var
+ AttFile : String;
+begin
+ if AttListBox.ItemIndex < 0 then Exit;
+
+ AttFile := HTTPEncode(UTF8Encode(AttListBox.Items.Strings[AttListBox.ItemIndex]));
+ if FileExists(DisplayPath+AttFile) then
+ ShellExecute(Application.Handle,'open',PChar(DisplayPath+AttFile),nil,nil,SW_SHOW)
+ else
+ Showmessage(Format(_Msg('找不到檔案:%s'),[AttFile]));
end;
procedure TCB_IMGPSScanX.BtnMouseEnter(Sender: TObject);
@@ -5326,6 +5399,12 @@
Validate := True;
end;
+procedure TCB_IMGPSScanX.HTTPSClientRedirection(Sender: TObject;
+ const OldURL: string; var NewURL: string; var AllowRedirection: Boolean);
+begin
+ AllowRedirection := True;
+end;
+
procedure TCB_IMGPSScanX.EnableImage(v:integer;Sender : TObject);
var bmp : Tbitmap;
begin
@@ -6330,6 +6409,7 @@
ContextList.LoadFromFile(Path+'Context.dat');
Context_DocnoList.LoadFromFile(Path+'Context_DocNo.dat');
end;
+
if FileExists(Path+'CustomDocNo.dat') then
Cust_DocNoList.LoadFromFile(Path+'CustomDocNo.dat');
@@ -6438,7 +6518,6 @@
if HaveMask then
ZipMaskFile(Path,MaskPath,Path,'MaskImg.zip'); //有遮罩設定的才產生
/////壓檔////
-
///檢查上傳的zip大小////
FName :=Path+ 'Img.zip';
@@ -6475,6 +6554,8 @@
+'&in_doc2='+HTTPEncode(UTF8Encode(In_Doc2));
//ShowMessage('SendData='+SendData);
//ShowMessage(FData+#10#13+Doc_Data);
+ //Showmessage('Wait');
+
if not upFile(HTTPSClient,FUrl,'service/imgpsc/IMGPSC02/caseupload',SendData,'file',Path+'Img.zip',FReWrite,Memo1,False) then
begin
Showmessage(Inttostr(HttpError.HttpErrorCode)+' '+HttpError.HttpReason+'.');
@@ -6494,7 +6575,6 @@
Exit;
end;
////上傳////
-
if FMode = 'ESCAN' then //上傳舊件引入檔案 //20140616 原本先搬舊件再搬新件,改為先搬新件再搬舊件
begin
if not TransOldCaseFile(ImageSavePath+CaseID+'\') then
@@ -6503,9 +6583,6 @@
Exit;
end;
end;
-
-
-
// 呼叫Server完成 /////
{If not CaseComplete(Path,CaseID,MainCase) Then
begin
@@ -7309,6 +7386,49 @@
end;
end;
+Procedure TCB_IMGPSScanX.SetAttContextList(Mode:Char;Index:Integer;CaseNo,FileName:String); //'A:加入,I:插入,D:刪除,E:修改'
+var
+ i : Integer;
+begin
+ AttContextList.Clear;
+ if FileExists(ImageSavePath+CaseNo+'\AttContext.dat') then
+ AttContextList.LoadFromFile(ImageSavePath+CaseNo+'\AttContext.dat');
+ case Mode of
+ 'A':begin
+ AttContextList.Add(FileName);
+ end;
+ 'I':begin
+ AttContextList.Insert(Index,FileName);
+ end;
+ 'E':begin
+ AttContextList.Strings[Index] := FileName;
+ end;
+ 'D':begin
+ if Index <> -1 then
+ begin
+ AttContextList.Delete(Index);
+ end
+ Else if (text <> '') then
+ begin
+ for i := 0 to AttContextList.Count - 1 do
+ begin
+ if FileName = AttContextList.Strings[i] then
+ begin
+ AttContextList.Delete(i);
+ Break;
+ end;
+ end;
+ end;
+ if AttContextList.Count = 0 then
+ DeleteFile(ImageSavePath+CaseNo+'\AttContext.dat');
+ end;
+ end;
+ if AttContextList.Count > 0 then
+ begin
+ AttContextList.SaveToFile(ImageSavePath+CaseNo+'\AttContext.dat');
+ end;
+end;
+
Function TCB_IMGPSScanX.checkCaseOMRDone:Boolean; //檢查案件是否完成OMR檢核
var
i : Integer;
@@ -7438,7 +7558,36 @@
try
NewDocNo := FormCode2DocNo(NewFormID);
NewDocDir := FindLastestDocDir(CaseID,NewDocNo);
- if NewDocDir = '' then
+
+ /////20190319 Hong 原本的程式判斷怪怪的先Mark在下方,改用這段
+ if DocNoNeedDiv(NewDocNo) then //要分份數
+ begin
+ if ((FormCode2Page(NewFormID) = '01') and (GetDocDir_Page(CaseID,NewDocDir)>0)) or (NewDocDir = '') then
+ begin
+ NewDocDir := DocNo2DocNoDir(ImageSavePath + CaseID+'\',NewDocNo);
+ end
+ else
+ begin //20171016 真對補件影響 所加的判斷
+ ST1.Clear;
+ if FileExists(ImageSavePath + CaseID+'\'+NewDocDir+'\Context.dat') then
+ begin
+ ST1.LoadFromFile(ImageSavePath + CaseID+'\'+NewDocDir+'\Context.dat');
+ if (ST1.Count > 0) and ISExistImg(ImageSavePath + CaseID+'\'+NewDocDir+'\'+ST1.Strings[0]) then //20181210 多增加判斷ST1>0 否則會有機會出現List out of bound Hong
+ begin
+ NewDocDir := DocNo2DocNoDir(ImageSavePath + CaseID+'\',NewDocNo);
+ end;
+ end;
+ end;
+ end
+ Else //不分份數
+ begin
+ if NewDocNo <> '' then
+ NewDocDir := NewDocNo
+ else //Attach 附件
+ NewDocDir := DocNo2DocNoDir(ImageSavePath + CaseID+'\',NewDocNo);
+ end;
+
+ {if NewDocDir = '' then
begin
if DocNoNeedDiv(NewDocNo) then
begin
@@ -7465,7 +7614,7 @@
NewDocDir := DocNo2DocNoDir(ImageSavePath + NowCaseno+'\',NewDocNo);
end;
end;
- end;
+ end; }
if Not DirectoryExists(ImageSavePath+CaseID+'\'+NewDocDir) then
begin
MkDir(ImageSavePath+CaseID+'\'+NewDocDir);
@@ -8100,6 +8249,18 @@
end;
if FileExists(SoPath+'Context.dat') then
ZipFileList.Add(SoPath+'Context.dat');
+
+ AttContextList.Clear;
+ if FileExists(SoPath+'ATTContext.dat') then
+ AttContextList.LoadFromFile(SoPath+'ATTContext.dat');
+ for n := 0 to AttContextList.Count - 1 do
+ begin
+ ZipFileList.Add(SoPath+AttContextList.Strings[n]);
+ end;
+ if FileExists(SoPath+'ATTContext.dat') then
+ ZipFileList.Add(SoPath+'ATTContext.dat');
+
+
if FileExists(SoPath+'Context_DocNo.dat') then
ZipFileList.Add(SoPath+'Context_DocNo.dat');
if FileExists(SoPath+'scanlist.dat') then
@@ -9260,6 +9421,9 @@
begin
ClearView(1);
PageLV.Clear;
+ AttListBox.Items.Clear;
+ AddAttFileLB.Enabled := False;
+ DelAttFileLB.Enabled := False;
DisplayPath := '';
ClearCaseIndex;
CaseHelpBtn.Visible := False;
@@ -9439,6 +9603,27 @@
GetCase_PageCount(CaseCount,PageCount);
v := Pos('-',NewTreeNode.Text);
NewTreeNode.Text := Format(_Msg('%s-共%d筆共%d頁'),[Copy(NewTreeNode.Text,1,v-1),CaseCount,PageCount]);
+ end;
+end;
+
+procedure TCB_IMGPSScanX.LoadAttFile(CaseID:String); //載入附加檔案
+var
+ AttContextList : TStringlist;
+ i : Integer;
+begin
+ AttListBox.Clear;
+ AttContextList := TStringlist.Create;
+ try
+ if FileExists(ImageSavePath+CaseID+'\AttContext.dat') then
+ begin
+ AttContextList.LoadFromFile(ImageSavePath+CaseID+'\AttContext.dat');
+ end;
+ for i := 0 to AttContextList.Count - 1 do
+ begin
+ AttListBox.Items.Add(UTF8Decode(HTTPDEcode(AttContextList.Strings[i])));
+ end;
+ finally
+ AttContextList.Free;
end;
end;
@@ -9810,6 +9995,41 @@
finally
ini.Free;
end;
+end;
+
+procedure TCB_IMGPSScanX.DelAttFileLBClick(Sender: TObject);
+var
+ AttFile : String;
+ SelectCount : Integer;
+ i : Integer;
+begin
+ SelectCount := 0;
+ for i := 0 to AttListBox.Items.Count - 1 do
+ begin
+ if AttListBox.Selected[i] then
+ inc(SelectCount);
+ end;
+ if SelectCount = 0 then
+ begin
+ Showmessage(_Msg('請選擇要刪除的電子檔'));
+ Exit;
+ end;
+
+ if SelectCount > 0 then
+ begin
+ if Messagedlg(Format(_Msg('是否刪除這%d筆??'),[SelectCount]),MtConfirmation,[mbyes,mbcancel],0) = mrcancel then Exit;
+ for i := 0 to AttListBox.Items.Count - 1 do
+ begin
+ if AttListBox.Selected[i] then
+ begin
+ AttFile := HTTPEncode(UTF8Encode(AttListBox.Items.Strings[i]));
+ DeleteFile(ImageSavePath+NowCaseNo+'\'+AttFile);
+ SetAttContextList('D',-1,NowCaseno,AttFile);
+ end;
+ end;
+ end;
+ LoadAttFile(NowCaseNo);
+ Showmessage(_msg('刪除完成'));
end;
Procedure TCB_IMGPSScanX.DeleteCustomDocDir(Path,DocNo:String); //刪除自定文件DocNo
@@ -10608,10 +10828,17 @@
Function TCB_IMGPSScanX.DocNoAppear(DocNo:String):Boolean; //DocNo是否可出現
begin
Result := True;
- if (((FIs_In_Wh = 'Y') and (not DocNoIs_In_WH(DocNo)) or (DocNo ='S_Attach')) or //入庫掃描不看非入庫文件
+
+ {if (((FIs_In_Wh = 'Y') and (not DocNoIs_In_WH(DocNo)) or (DocNo ='S_Attach')) or //入庫掃描不看非入庫文件
((FIs_In_Wh = 'N') and (DocNoIs_In_WH(DocNo)) or (DocNo ='Attach') )) {and //非入庫掃描不看入庫文件
+ (Copy(DocNo,1,5)<>'ZZZZZ')} {then
+ {Result := False;}
+ //20181031 應該要換成下面的判斷比較對,FIs_In_Wh傳空的話才會出全部
+ if (((FIs_In_Wh = 'Y') and ((not DocNoIs_In_WH(DocNo)) or (DocNo ='S_Attach'))) or //入庫掃描不看非入庫文件
+ ((FIs_In_Wh = 'N') and ((DocNoIs_In_WH(DocNo)) or (DocNo ='Attach') ))) {and //非入庫掃描不看入庫文件
(Copy(DocNo,1,5)<>'ZZZZZ')} then
Result := False;
+
end;
@@ -11028,16 +11255,18 @@
var
i,n:Integer;
OldPath,NewPath,DocDir : String;
- OldFile,NewFile : String;
+ OldFile,NewFile,AttFile : String;
DocNoList,FileList:TStringlist;
iFileList,iFile_DocNoList :TStringlist;
iDocDirList : TStringlist;
+ iAttFileList : TStringlist;
begin
DocNoList := TStringlist.Create;
FileList := TStringlist.Create;
iFileList := TStringlist.Create;
iFile_DocNoList := TStringlist.Create;
iDocDirList := TStringlist.Create;
+ iAttFileList := TStringlist.Create;
try
OldPath := ImageSavePath+CaseID+'\';
NewPath := ImageSavePath+CaseID+'\Upload\';
@@ -11122,6 +11351,18 @@
end;
end;
end;
+ OldPath := ImageSavePath+CaseID+'\';
+ if FileExists(OldPath+'AttContext.dat') then
+ begin
+ iAttFileList.LoadFromFile(OldPath+'AttContext.dat');
+ for n := 0 to iAttFileList.Count - 1 do
+ begin
+ AttFile := iAttFileList.Strings[n];
+ CopyFile(PWideChar(OldPath+AttFile),PWideChar(NewPath+AttFile),False);
+ end;
+ iAttFileList.SaveToFile(NewPath+'AttContext.dat');
+ end;
+
iFileList.SaveToFile(NewPath+'Context.dat');
iFile_DocNoList.SaveToFile(NewPath+'Context_DocNo.dat');
@@ -11129,6 +11370,7 @@
finally
iFileList.Free;
+ iAttFileList.Free;
iFile_DocNoList.Free;
DocNoList.Free;
FileList.Free;
@@ -11139,9 +11381,10 @@
var
i,n : Integer;
DocDir:String;
- OldFile,NewFile:String;
+ OldFile,NewFile,AttFile:String;
DocNoList,FileList : TStringlist;
iFileList,iFile_DocDirList :TStringlist;
+ iAttFileList :TStringlist;
AA,AA2,AA3,AA4:Boolean;
begin
@@ -11166,6 +11409,7 @@
FileList := TStringlist.Create;
iFileList := TStringlist.Create;
iFile_DocDirList := TStringlist.Create;
+ iAttFileList := TStringlist.Create;
try
//if Not FileExists(SoDir+'Context.dat') then Exit;
//iFileList.LoadFromFile(SoDir+'Context.dat');
@@ -11279,6 +11523,17 @@
CaseDocNo_CopiesList.SaveToFile(DeDir+'CaseDocNo_Copies.dat');
end;
end;}
+ if FileExists(SoDir+'AttContext.dat') then
+ begin
+ iAttFileList.LoadFromFile(SoDir+'AttContext.dat');
+ for i := 0 to iAttFileList.Count - 1 do
+ begin
+ AttFile := iAttFileList.Strings[i];
+ CopyFile(PWideChar(SoDir+AttFile),PWideChar(DeDir+AttFile),False);
+ end;
+ iAttFileList.SaveToFile(DeDir+'AttContext.dat');
+ end;
+
if FMode='ESCAN' then
begin
@@ -12727,7 +12982,7 @@
ISB.AntiAliased := False;
ISB.LoadFromFile(Path+iDocNo+'\'+ContextList.Strings[n],1);
- DpiResize(ISB.Graphic,36);
+ DpiResize(ISB.Graphic,36,False);
ISB.Redraw(true);
end;
@@ -12787,7 +13042,7 @@
if ISB.ZoomPercent > 100 then
ISB.AntiAliased := False;
ISB.LoadFromFile(Path+iDocNo+'\'+ContextList.Strings[i],1);
- DpiResize(ISB.Graphic,36);
+ DpiResize(ISB.Graphic,36,False);
ISB.Redraw(true);
end;
FitPreViewISB;
@@ -12826,7 +13081,7 @@
if ISB.ZoomPercent > 100 then
ISB.AntiAliased := False;
ISB.LoadFromFile(Path+iDocNo+'\'+ContextList.Strings[i],1);
- DpiResize(ISB.Graphic,36);
+ DpiResize(ISB.Graphic,36,False);
ISB.Redraw(true);
//NowShowFileList.Add(ContextList.Strings[i]);
@@ -14091,7 +14346,7 @@
end;
end;
//ShowMessage(SendData);
-//ShowMessage(Memo1.Lines.Text);
+
IF memo1.Lines.Strings[0] <> '0' Then
begin
HttpErrStr := _Msg('')+memo1.Lines.Strings[1]+'。';
@@ -14397,6 +14652,9 @@
Panel6.Visible := True;
Panel21.Visible := True;
Panel23.Visible := True;
+
+ AttFileGB.Visible := True;
+ Splitter2.Visible := True;
ScanDuplexCB.Visible := True; //雙面掃描
end
Else if FMode = 'FSCAN' then
@@ -14411,6 +14669,8 @@
Panel6.Visible := True;
Panel21.Visible := True;
Panel23.Visible := True;
+ AttFileGB.Visible := True;
+ Splitter2.Visible := True;
end;
DisplayMode(1,1,1,Panel9);
Application.ProcessMessages;
@@ -14462,6 +14722,7 @@
CaseList := TStringList.Create; //記錄掃瞄案件的順序
Context_DocnoList := TStringlist.Create; //案件裡的檔案Docno清單
ContextList := TStringlist.Create; //案件裡的檔案清單
+ AttContextList := TStringlist.Create; //案件裡的附加檔案清單
NoSaveBarCodeList := TStringlist.Create; //不儲存的條碼清單
FormID_List := TStringlist.Create; //FormID清單
DocNo_List := TStringlist.Create; //DocNo清單
@@ -14833,7 +15094,6 @@
CreateIn_WH(CaseID); //產生入庫文件文字檔 In_Wh.dat
Case2upload(CaseID); //產生原影像結構
TransPath := ImageSavePath+CaseID+'\Upload\';
-
{if FMode = 'ESCAN' then //20140320 yuu說拿掉此檢查
begin
S := TStringlist.Create;
@@ -14981,6 +15241,9 @@
ClearCaseIndex;
PageLv.Items.Clear; //頁數清單
//Panel18.Enabled:= False;
+ AttListBox.Items.Clear;
+ AddAttFileLB.Enabled := False;
+ DelAttFileLB.Enabled := False;
UseOldCaseLb.Visible := False;
PM107.Visible := False; //備註功能
CaseHelpBtn.Visible := False; //檢核失敗原因鈕
@@ -15161,7 +15424,12 @@
if FileExists(DisplayPath+'CustomDocNo.dat') then
Cust_DocNoList.LoadFromFile(DisplayPath+'CustomDocNo.dat');
end;
- MyTreeNode1.Expand(True);
+ MyTreeNode1.Expand(True);
+ AddAttFileLB.Enabled := True;
+ if FileExists(DisplayPath+'ATTContext.dat') then
+ begin
+ LoadAttFile(NowCaseno);
+ end;
end
Else //點在NewTreenode or MyTreenode1 上
begin
@@ -15405,6 +15673,17 @@
end;
+procedure TCB_IMGPSScanX.TreeView1MouseDown(Sender: TObject;
+ Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
+begin
+ IF Button = TMouseButton(MbRight) Then
+ begin
+ MDown := True;
+ If TreeView1.GetNodeAt(X,Y) = nil then Exit;
+ TreeView1.Selected := TreeView1.GetNodeAt(X,Y);
+ end;
+end;
+
procedure TCB_IMGPSScanX.TreeView1MouseEnter(Sender: TObject);
begin
TreeView1.SetFocus;
@@ -15424,9 +15703,13 @@
IF Button = TMouseButton(MbRight) Then
begin
If TreeView1.GetNodeAt(X,Y) = nil then Exit;
- TreeView1.Selected := TreeView1.GetNodeAt(X,Y);
- TreeView1Click(self);
- TreeView1.PopupMenu.Popup(Mouse.CursorPos.X ,Mouse.CursorPos.Y);
+ if MDown then
+ begin
+ TreeView1Click(self);
+ TreeView1.PopupMenu.Popup(Mouse.CursorPos.X ,Mouse.CursorPos.Y);
+ end;
+ Application.ProcessMessages; //需加這行,不然有些全域變數會沒變到
+ MDown:= False;
end;
end;
@@ -15825,14 +16108,22 @@
OLEMISC_SIMPLEFRAME or OLEMISC_ACTSLIKELABEL,
tmApartment);
- SetLicenseKey('5B4451E676A1D2976FBB0F3BB18341336AF114C80B5ABAE7F6926B1CAF671F44' +
+ {SetLicenseKey('5B4451E676A1D2976FBB0F3BB18341336AF114C80B5ABAE7F6926B1CAF671F44' +
'BD2F098CCEDA922F6389BFAE398DA6AEE67F97EEA0C17234C20D75C12173DBDA' +
'594924D56DD8E342F454389C836AD880BB4352CA3BE62C4933B1BA3828E7462C' +
'60514F2ECDAD322E6128D841F12D24DA00B623106D3F08EBCAA917D8A97CAA34' +
'3D65F2DA567316457395BF9123EE53DF235D181F191A5712DBB27735284AA92D' +
'5DFA0C8308308505F384707E900C6063F53F1BFF4C6972607955D1AE517B19D0' +
'82CDD16301885403AD229D57BAEF98C056F31430861E5F68F339D658D72E1F92' +
- '63899412EC2D07891FE3AFD35F3E4A4390B2F0A8A1BF1B7D6160E5F1CC009B17');
+ '63899412EC2D07891FE3AFD35F3E4A4390B2F0A8A1BF1B7D6160E5F1CC009B17'); }
+ SetLicenseKey('4B2CF65E8C2A86CE8A0DD0F6A7DB03BC0B0126168B48AE4C27EBD78CAE75CF0F' +
+ 'A612190861E0D99F6FAE3ED97AC1941B5E97843CFFCF705A3787989072D4EB2C' +
+ 'AE6CAB3F5B69B86616ACC8A37AD6A2AB21C7BDD5C9AE1EDF9E4193D353805C9A' +
+ '403631CE8A3D0803FEBB1BE4C209CE7A63B1298EF080EB34B8628CED567D2B68' +
+ 'E777FAC58E2E32B7411FC217A04336231D1E861A93474759DAA6EDF53F6EB632' +
+ 'A3055229A52F3053FB844754741409022DDE3DFB19473510F2BE63328E74BE20' +
+ 'A6A29AA24878F91ADA9DF8CE1F320AF4DAF58EBF95D9BE761D70EEA274E19475' +
+ '1C15948B184264C5C49E60493F3BCD2FFAE2CA8B021D00B96F45550C5F050D8A');
SetLicenseKey('A6A94A8D91B08A9D58F300C0573EA9EF1B9DB0BF69B90E13B958DB4CB6B44F5A' +
--
Gitblit v1.8.0