unit DReqDevExcept; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ComCtrls, Vcl.Imaging.pngimage, Vcl.ExtCtrls, Vcl.Styles, Vcl.Themes, System.ImageList, Vcl.ImgList, PngImageList, Define; type TDlgReqDevExcept = class(TForm) Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; edDevName: TEdit; edDevKind: TEdit; edSerial: TEdit; dpExpireDate: TDateTimePicker; lbUntil: TLabel; mmReason: TMemo; Label7: TLabel; cbTarget: TComboBox; imgBack: TImage; Shape1: TShape; lbTitle: TLabel; imgOk: TImage; imgCancel: TImage; lbOk: TLabel; lbCancel: TLabel; imgClose: TImage; imgBtnList2: TPngImageList; imgBtnList: TPngImageCollection; dpExpireTime: TDateTimePicker; dpBeginDate: TDateTimePicker; procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure imgBackMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure imgCloseMouseEnter(Sender: TObject); procedure imgCloseMouseLeave(Sender: TObject); procedure imgCloseMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure imgOkMouseEnter(Sender: TObject); procedure imgOkMouseLeave(Sender: TObject); procedure imgOkMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure imgOkClick(Sender: TObject); procedure imgCancelClick(Sender: TObject); private { Private declarations } Info_: TReqDevExceptInfo; procedure SetImgBtn(nImgIdx: Integer); procedure SetImgBtn2(aImg: TImage; nImgIdx: Integer); public { Public declarations } Constructor Create(aOwner: TComponent; aInfo: TReqDevExceptInfo); procedure CreateParams(var Params: TCreateParams); override; // 작업표시줄에 표시 end; var DlgReqDevExcept: TDlgReqDevExcept; implementation uses {$IFDEF _HE_} ManagerService, {$ELSE} ProcessParam, DefineHelper, superobject, Tocsg.Json, {$ENDIF} System.DateUtils, GlobalDefine, Condition; resourcestring RS_InputReason = '요청 사유를 입력해 주십시오.'; RS_InvalidDate = '시작 이후의 날짜를 선택해 주십시오.'; RS_FileConvDateTime = '날짜 정보를 가져오는 중 오류가 발생했습니다.'; {$R *.dfm} Constructor TDlgReqDevExcept.Create(aOwner: TComponent; aInfo: TReqDevExceptInfo); begin Inherited Create(aOwner); SetImgBtn(0); SetImgBtn2(imgOk, 0); SetImgBtn2(imgCancel, 3); Info_ := aInfo; dpBeginDate.Date := Now; dpBeginDate.Time := EncodeTime(0, 0, 0, 0); dpExpireDate.Date := IncDay(dpBeginDate.Date); //, 180); if CUSTOMER_TYPE = CUSTOMER_KISTEP then dpExpireDate.MaxDate := IncYear(dpBeginDate.Date); dpExpireTime.Time := EncodeTime(23, 59, 59, 0); edDevName.Text := Trim(aInfo.sDevName); edSerial.Text := Trim(aInfo.sSerial); cbTarget.ItemIndex := 0; case aInfo.ReqDevType of rdtUsbDrive : edDevKind.Text := 'USB'; rdtMtp : edDevKind.Text := 'MTP'; rdtBluetooth : edDevKind.Text := 'Bluetooth'; rdtCdrom : edDevKind.Text := 'CD/DVD'; else edDevKind.Text := 'Unknown'; end; if CUSTOMER_TYPE = CUSTOMER_KBIZ then begin // "요청 사용자" 제거 요청 24_0823 10:22:24 kku if cbTarget.Items.Count > 1 then cbTarget.Items.Delete(1); // 기본 문구 추가 mmReason.Text := '** 해당 팝업에서 매체예외 신청 후, 별도로 SIMMS에서 서비스 신청 필요 **' + #13#10 + '(simms.kbiz.or.kr 접속하여 ''보안-보안 USB-보안USB해제'' 선택 후 목적과 사용기한 기입)' + #13#10; mmReason.SelStart := Length(mmReason.Text); end; end; procedure TDlgReqDevExcept.CreateParams(var Params: TCreateParams); begin Inherited CreateParams(Params); Params.ExStyle := WS_EX_APPWINDOW; end; procedure TDlgReqDevExcept.SetImgBtn(nImgIdx: Integer); begin imgBtnList2.GetIcon(nImgIdx, imgClose.Picture.Icon); imgClose.Repaint end; procedure TDlgReqDevExcept.SetImgBtn2(aImg: TImage; nImgIdx: Integer); begin aImg.Picture.Assign(imgBtnList.Items[nImgIdx].PngImage) end; procedure TDlgReqDevExcept.FormClose(Sender: TObject; var Action: TCloseAction); begin Action := caFree; end; procedure TDlgReqDevExcept.imgBackMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin ReleaseCapture; SendMessage(Handle, WM_NCLBUTTONDOWN, HTCAPTION, 0); end; procedure TDlgReqDevExcept.imgCancelClick(Sender: TObject); begin Close; end; procedure TDlgReqDevExcept.imgCloseMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin SetImgBtn(2); end; procedure TDlgReqDevExcept.imgCloseMouseEnter(Sender: TObject); begin SetImgBtn(1); end; procedure TDlgReqDevExcept.imgCloseMouseLeave(Sender: TObject); begin SetImgBtn(0); end; procedure TDlgReqDevExcept.imgOkClick(Sender: TObject); var sData: String; dtBegin, dtEnd: TDateTime; wY, wM, wD: WORD; nTgIdx: Integer; begin mmReason.Text := Trim(mmReason.Text); if mmReason.Text = '' then begin MessageBox(Handle, PChar(RS_InputReason), PChar(Caption), MB_ICONWARNING or MB_OK); exit; end; try DecodeDate(dpBeginDate.Date, wY, wM, wD); // DecodeTime(dpExpireTime.Time, wH, wN, wS, wMM); except MessageBox(Handle, PChar(RS_FileConvDateTime), PChar(APP_TITLE), MB_ICONWARNING or MB_OK); exit; end; dtBegin := EncodeDateTime(wY, wM, wD, 0, 0, 0, 0); try DecodeDate(dpExpireDate.Date, wY, wM, wD); // DecodeTime(dpExpireTime.Time, wH, wN, wS, wMM); except MessageBox(Handle, PChar(RS_FileConvDateTime), PChar(APP_TITLE), MB_ICONWARNING or MB_OK); exit; end; dtEnd := EncodeDateTime(wY, wM, wD, 23, 59, 59, 0); if dtEnd <= dtBegin then begin MessageBox(Handle, PChar(RS_InvalidDate), PChar(Caption), MB_ICONWARNING or MB_OK); exit; end; nTgIdx := cbTarget.ItemIndex; if CUSTOMER_TYPE = CUSTOMER_KBIZ then begin if nTgIdx > 0 then Inc(nTgIdx); end; with Info_ do sData := Format('SERIAL:%s|TYPE:%d|DESC:%s|DUEDATE:%s|NAME:%s|TARGET:%d|STDATE:%s', [sSerial, Integer(ReqDevType), mmReason.Text, FormatDateTime('yyyy-mm-dd', dtEnd), sDevName, nTgIdx, FormatDateTime('yyyy-mm-dd', dtBegin)]); // [sSerial, Integer(ReqDevType), mmReason.Text, FormatDateTime('yyyy-mm-dd hh:nn:ss', dt), sDevName, cbTarget.ItemIndex]); {$IFDEF _HE_} if gMgSvc.IsNewApi then gMgSvc.SendRequest(LOGCODE_EVENT_USB_REQUEST, Info_, mmReason.Text, FormatDateTime('yyyy-mm-dd', dtBegin), FormatDateTime('yyyy-mm-dd', dtEnd), nTgIdx, sData) else gMgSvc.SendEventLog(URI_USER_ACTION, LOGCODE_EVENT_USB_REQUEST, sData); {$ELSE} var O: ISuperObject := SO; O.O['ReqInfo'] := TTgJson.ValueToJsonObject(Info_); O.S['R'] := mmReason.Text; O.I['T'] := nTgIdx; O.S['D'] := sData; O.D['BDT'] := dtBegin; O.D['DT'] := dtEnd; gParam.SendData(HPCMD_REQ_DEVICE_EXCEPT, O.AsString); {$ENDIF} Close; end; procedure TDlgReqDevExcept.imgOkMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); var img: TImage; begin if Sender = nil then exit; if Sender is TImage then img := TImage(Sender) else if Sender = lbOk then img := imgOk else img := imgCancel; SetImgBtn2(img, img.Tag + 2); end; procedure TDlgReqDevExcept.imgOkMouseEnter(Sender: TObject); var img: TImage; begin if Sender = nil then exit; if Sender is TImage then img := TImage(Sender) else if Sender = lbOk then img := imgOk else img := imgCancel; SetImgBtn2(img, img.Tag + 1); end; procedure TDlgReqDevExcept.imgOkMouseLeave(Sender: TObject); var img: TImage; begin if Sender = nil then exit; if Sender is TImage then img := TImage(Sender) else if Sender = lbOk then img := imgOk else img := imgCancel; SetImgBtn2(img, img.Tag); end; end.