BSOne.SFC/eCrmHE/EXE_eCrmHomeEdition/Messages/DNoticeImg.pas

232 lines
5.8 KiB
Plaintext

unit DNoticeImg;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.Imaging.pngimage, Vcl.ExtCtrls,
PngImageList, superobject, Vcl.StdCtrls;
type
TDlgNoticeImg = class(TForm)
imgMain: TImage;
imgList: TPngImageCollection;
imgBtnOk: TImage;
imgBtnExit: TImage;
lbTop: TLabel;
lbBottom: TLabel;
lbMsg: TLabel;
lbBtn: TLabel;
tClose: TTimer;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure imgMainMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure imgBtnOkMouseEnter(Sender: TObject);
procedure imgBtnOkMouseLeave(Sender: TObject);
procedure imgBtnOkMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure imgBtnExitMouseEnter(Sender: TObject);
procedure imgBtnExitMouseLeave(Sender: TObject);
procedure imgBtnExitClick(Sender: TObject);
procedure tCloseTimer(Sender: TObject);
private
{ Private declarations }
procedure SetImgBtn(aImg: TImage; nImgIdx: Integer);
public
{ Public declarations }
Constructor Create(aOwner: TComponent; sJsonData: String);
procedure CreateParams(var Params: TCreateParams); override;
end;
var
DlgNoticeImg: TDlgNoticeImg;
implementation
uses
Tocsg.Safe, Tocsg.Strings, GlobalDefine, Condition;
resourcestring
RS_BlockCappApp = '캡쳐 APP이 차단되었습니다.';
RS_StartPI = '개인정보 검사가 시작되었습니다.';
RS_HEC_Info = '정보보호';
RS_HEC_CenterPhone = '보안지원센터';
RS_DetectCappApp = '캡쳐 APP이 감지 되었습니다.';
{$R *.dfm}
Constructor TDlgNoticeImg.Create(aOwner: TComponent; sJsonData: String);
var
hTarkBar: HWND;
r: TRect;
O: ISuperObject;
begin
Inherited Create(aOwner);
SetImgBtn(imgBtnExit, 7);
hTarkBar := FindWindow('Shell_TrayWnd', '');
if hTarkBar <> 0 then
begin
GetWindowRect(hTarkBar, r);
// Top가 0이면 위, 왼쪽 아님 오른쪽
if (r.Left <= 0) and (r.Right < Screen.PrimaryMonitor.Width) then
begin
// 왼쪽
Top := Screen.PrimaryMonitor.Height;
Left := Screen.PrimaryMonitor.Width;
end else
if (r.Left <= 0) and (r.Top = 0) and
(r.Bottom < Screen.PrimaryMonitor.Height) then
begin
// 위쪽
Top := Screen.PrimaryMonitor.Height;
Left := Screen.PrimaryMonitor.Width;
end else
if (r.Left <= 0) and (r.Top > 0) then
begin
// 아래쪽
Top := Screen.PrimaryMonitor.Height - (r.Bottom - r.Top);
Left := Screen.PrimaryMonitor.Width;// - Width;
end else begin
// 오른쪽
Top := Screen.PrimaryMonitor.Height;
Left := Screen.PrimaryMonitor.Width - (r.Right - r.Left);// - Width - (r.Right - r.Left);
end;
// nVCnt := Screen.PrimaryMonitor.Height div Height;
// nHPos := _nNotiCnt mod nVCnt;
// if nHPos = 0 then
// begin
// Left := Left - (_nNotiCnt div nVCnt) * Width;
// nHPos := nVCnt;
// end else
// Left := Left - ((_nNotiCnt div nVCnt) + 1) * Width;
// Top := Top - (nHPos * Height);
Top := Top - Height;
Left := Left - Width;
end;
case CUSTOMER_TYPE of
CUSTOMER_GEC :
begin
lbTop.Caption := RS_HEC_Info;
lbBottom.Caption := '';
tClose.Interval := 5000;
tClose.Enabled := true;
end;
CUSTOMER_HDENG :
begin
lbTop.Caption := RS_HEC_Info;
lbBottom.Caption := RS_HEC_CenterPhone + ' 02-2134-1145';
end;
else
begin
lbTop.Caption := 'BSOne';
lbBottom.Caption := '';
end;
end;
try
O := SO(sJsonData);
if O <> nil then
begin
case O.I['T'] of
TYPE_MSG_CTTSCH_START :
begin
lbMsg.Caption := RS_StartPI;
SetImgBtn(imgBtnOk, 1);
end;
TYPE_MSG_PREVENT_CAPAPP :
begin
if Pos('|PV', O.S['D']) > 0 then
lbMsg.Caption := RS_BlockCappApp
else
lbMsg.Caption := RS_DetectCappApp;
SetImgBtn(imgMain, 0);
SetImgBtn(imgBtnOk, 4);
imgBtnOk.Tag := 1;
end;
end;
end;
except
end;
end;
procedure TDlgNoticeImg.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
Params.ExStyle := WS_EX_APPWINDOW;
Params.WindowClass.Style := Params.WindowClass.Style or CS_DROPSHADOW;
Params.WndParent := GetDesktopWindow;
end;
procedure TDlgNoticeImg.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caFree;
end;
procedure TDlgNoticeImg.imgBtnExitClick(Sender: TObject);
begin
Close;
end;
procedure TDlgNoticeImg.imgBtnExitMouseEnter(Sender: TObject);
begin
SetImgBtn(imgBtnExit, 8);
end;
procedure TDlgNoticeImg.imgBtnExitMouseLeave(Sender: TObject);
begin
SetImgBtn(imgBtnExit, 7);
end;
procedure TDlgNoticeImg.imgBtnOkMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if imgBtnOk.Tag = 0 then
SetImgBtn(imgBtnOk, 3)
else
SetImgBtn(imgBtnOk, 6);
end;
procedure TDlgNoticeImg.imgBtnOkMouseEnter(Sender: TObject);
begin
if imgBtnOk.Tag = 0 then
SetImgBtn(imgBtnOk, 2)
else
SetImgBtn(imgBtnOk, 5);
end;
procedure TDlgNoticeImg.imgBtnOkMouseLeave(Sender: TObject);
begin
if imgBtnOk.Tag = 0 then
SetImgBtn(imgBtnOk, 1)
else
SetImgBtn(imgBtnOk, 4);
end;
procedure TDlgNoticeImg.imgMainMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
ReleaseCapture;
SendMessage(Handle, WM_NCLBUTTONDOWN, HTCAPTION, 0);
end;
procedure TDlgNoticeImg.SetImgBtn(aImg: TImage; nImgIdx: Integer);
begin
aImg.Picture.Assign(imgList.Items[nImgIdx].PngImage);
aImg.Repaint;
end;
procedure TDlgNoticeImg.tCloseTimer(Sender: TObject);
begin
tClose.Enabled := false;
Close;
end;
end.