unit DQnA; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, System.ImageList, Vcl.ImgList, PngImageList, Vcl.ExtCtrls, Vcl.StdCtrls; type TDlgQnA = class(TForm) imgOk: TImage; imgCancel: TImage; imgBtnList: TPngImageList; Label1: TLabel; mmQnA: TMemo; lbOk: TLabel; lbCancel: TLabel; procedure imgOkMouseEnter(Sender: TObject); procedure imgOkMouseLeave(Sender: TObject); procedure imgCancelClick(Sender: TObject); procedure imgOkClick(Sender: TObject); private { Private declarations } procedure SetImgBtn(imgBtn: TImage; nImgIdx: Integer); public { Public declarations } sMinInputMsg: String; ReqCmd, MinStrLen: Integer; Constructor Create(aOwner: TComponent); override; procedure CreateParams(var Params: TCreateParams); override; // 작업표시줄에 표시 procedure process_WM_SYSCOMMAND(var msg: TWMSysCommand); Message WM_SYSCOMMAND; end; var DlgQnA: TDlgQnA; implementation uses Define, Winapi.Imm, Tocsg.Trace, ProcessParam, DefineHelper, Tocsg.Strings; resourcestring RS_InputText = '문의할 내용을 입력해주십시오.'; {$R *.dfm} Constructor TDlgQnA.Create(aOwner: TComponent); begin Inherited Create(aOwner); if aOwner = nil then Position := poScreenCenter; ReqCmd := 0; MinStrLen := 0; sMinInputMsg := ''; Caption := APP_TITLE; SetImgBtn(imgOk, imgOk.Tag); SetImgBtn(imgCancel, imgCancel.Tag); end; procedure TDlgQnA.CreateParams(var Params: TCreateParams); begin Inherited CreateParams(Params); {$IFDEF _HE_} Params.ExStyle := WS_EX_APPWINDOW; {$ENDIF} end; procedure TDlgQnA.imgCancelClick(Sender: TObject); begin {$IFNDEF _HE_} if ReqCmd <> 0 then begin gParam.SendData(ReqCmd, ''); Close; end else {$ENDIF} ModalResult := mrCancel; end; procedure TDlgQnA.imgOkClick(Sender: TObject); begin mmQnA.Text := Trim(mmQnA.Text); if mmQnA.Text = '' then begin if ReqCmd = 0 then MessageBox(Handle, PChar(RS_InputText), PChar(Caption), MB_ICONWARNING or MB_OK) else MessageBox(Handle, PChar(Label1.Caption), PChar(Caption), MB_ICONWARNING or MB_OK); exit; end; if (MinStrLen > 0) and (MinStrLen > Length(StrsReplace(mmQnA.Text, [' '], ''))) then begin if sMinInputMsg = '' then begin MessageBox(Handle, PChar(Format('최소 %d글자 이상 입력해 주십시오.', [MinStrLen])), PChar(Caption), MB_ICONWARNING or MB_OK); end else begin MessageBox(Handle, PChar(Format(sMinInputMsg, [MinStrLen])), PChar(Caption), MB_ICONWARNING or MB_OK); end; exit; end; {$IFDEF _HE_} ModalResult := mrOk; {$ELSE} if ReqCmd = 0 then ReqCmd := HPCMD_SEND_QnA_MESSAGE; gParam.SendData(ReqCmd, mmQnA.Text); Close; {$ENDIF} end; procedure TDlgQnA.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; SetImgBtn(img, img.Tag + 1); end; procedure TDlgQnA.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; SetImgBtn(img, img.Tag); end; procedure TDlgQnA.SetImgBtn(imgBtn: TImage; nImgIdx: Integer); begin imgBtnList.GetIcon(nImgIdx, imgBtn.Picture.Icon); imgBtn.Repaint end; procedure TDlgQnA.process_WM_SYSCOMMAND(var msg: TWMSysCommand); begin if msg.CmdType = SC_CLOSE then begin {$IFNDEF _HE_} if ReqCmd = 0 then ReqCmd := HPCMD_SEND_QnA_MESSAGE; gParam.SendData(ReqCmd, mmQnA.Text); {$ENDIF} end; Inherited; end; end.