unit DPrintApproveReq; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, ManagerPrint; type TDlgPrintApproveReq = class(TForm) Label1: TLabel; btnApprove: TButton; btnCancel: TButton; procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure btnApproveClick(Sender: TObject); procedure btnCancelClick(Sender: TObject); private { Private declarations } pEnt_: PPrtEnt; public { Public declarations } Constructor Create(aOwner: TComponent; pEnt: PPrtEnt); procedure CreateParams(var Params: TCreateParams); override; // 작업표시줄에 표시 procedure process_WM_SYSCOMMAND(var msg: TWMSysCommand); Message WM_SYSCOMMAND; end; var DlgPrintApproveReq: TDlgPrintApproveReq; implementation uses ManagerService, Tocsg.Convert, Tocsg.Trace, Define, Tocsg.Shell, GlobalDefine, Tocsg.Path, DefineHelper, superobject, Tocsg.Process, ManagerModel, Condition; resourcestring RS_NotFoundInfo = '결재자 정보를 가져올 수 없습니다.'; RS_MsgApproval1 = '출력을 위해 승인이 필요합니다.'; RS_MsgApprova2 = '아래 [결재요청] 버튼으로 승인을 받아주세요.'; RS_MsgApprova3 = '아래 [결재요청] 버튼을 눌러 진행해주세요.'; RS_MsgApprovalVio = '개인(신용)정보가 검출된 문서는 승인 후 출력이 가능합니다.'; RS_MsgPostApproval = '중요 정보가 검출 되어 결재 요청 후 출력이 가능합니다.'; {$R *.dfm} Constructor TDlgPrintApproveReq.Create(aOwner: TComponent; pEnt: PPrtEnt); begin Inherited Create(aOwner); pEnt_ := pEnt; ASSERT(pEnt_ <> nil); if pEnt_.bPostApv then begin Label1.Caption := RS_MsgPostApproval + #13#10#13#10 + RS_MsgApprova3; end else if pEnt_.sVioText = '' then begin Label1.Caption := RS_MsgApproval1 + #13#10#13#10 + RS_MsgApprova2; end else begin case CUSTOMER_TYPE of CUSTOMER_SHSC, CUSTOMER_SHCI : Label1.Caption := RS_MsgApprovalVio + #13#10#13#10 + RS_MsgApprova2; end; end; end; procedure TDlgPrintApproveReq.CreateParams(var Params: TCreateParams); begin Inherited CreateParams(Params); Params.ExStyle := WS_EX_APPWINDOW; end; procedure TDlgPrintApproveReq.btnApproveClick(Sender: TObject); var sUrl: String; LogInfo: TLogInfo; begin Hide; if pEnt_.bPostApv then sUrl := gMgSvc.SendApproval(13, pEnt_) else sUrl := gMgSvc.SendApproval(0, pEnt_); if sUrl = '' then begin gMgSvc.MgPrt.DelPrintInfo(pEnt_.sId); TTgTrace.T('Fail .. SendApprovalPrint()'); MessageBox(Handle, PChar(RS_NotFoundInfo), PChar(APP_TITLE), MB_ICONWARNING or MB_OK); end else begin // ExecutePath(gMgSvc.DestIPort + sUrl); ZeroMemory(@LogInfo, SizeOf(LogInfo)); LogInfo.sCode := REQUEST_APPROVAL; LogInfo.sDevName := pEnt_.WInfo.sPtrName; LogInfo.sPath := pEnt_.WInfo.sDocName; LogInfo.sActionId := pEnt_.WInfo.sPrtDocId; if pEnt_.bPostApv then LogInfo.sSummary := 'Post-Approval Request : Print' else LogInfo.sSummary := 'Approval Request : Print'; gMgSvc.SendEventLogEx(@LogInfo, false); var sHlpExe: String := GetRunExePathDir + DIR_CONF + EXE_HLP; if FileExists(sHlpExe) then begin var O: ISuperObject := SO; O.I['RcvWnd'] := Handle; O.I['Cmd'] := HPCMD_EXECUTE_FILE; O.S['Path'] := gMgSvc.DestIPort + sUrl; SaveJsonObjToFile(O, GetRunExePathDir + DIR_CONF + DAT_PARAM); {$IFDEF DEBUG} ExecutePath(sHlpExe); {$ELSE} ExecuteAppAsUser('explorer.exe', sHlpExe, '', SW_SHOWNORMAL); {$ENDIF} end else ExecutePath(gMgSvc.DestIPort + sUrl); // if pEnt_.bPostApv then // 승인 요청 응답오면 처리하는 걸로 변경 25_1216 16:07:32 kku // gMgSvc.DoPrint(pEnt_); end; Close; end; procedure TDlgPrintApproveReq.btnCancelClick(Sender: TObject); begin gMgSvc.MgPrt.DelPrintInfo(pEnt_.sId, true); Close; end; procedure TDlgPrintApproveReq.FormClose(Sender: TObject; var Action: TCloseAction); begin Action := TCloseAction.caFree; end; procedure TDlgPrintApproveReq.process_WM_SYSCOMMAND(var msg: TWMSysCommand); begin if msg.Msg = SC_CLOSE then begin btnCancel.Click; exit; end; Inherited; end; end.