FrmVmsMsgPubrMngrF.cpp 42 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247
  1. //---------------------------------------------------------------------------
  2. #include <vcl.h>
  3. #include "ITSSkinF.h"
  4. #include "ITSUtilF.h"
  5. #include "AppGlobalF.h"
  6. #include "WindowMsgF.h"
  7. #include "CDSVmsIfscF.h"
  8. #include "CDSFontF.h"
  9. #include "CDSVmsFormF.h"
  10. #pragma hdrstop
  11. #include "FrmVmsMsgPubrMngrF.h"
  12. #include "FrmVmsPubrSelTermF.h"
  13. #include "VMSEDT0MF.h"
  14. //---------------------------------------------------------------------------
  15. #pragma package(smart_init)
  16. #pragma link "cxButtons"
  17. #pragma link "cxCalendar"
  18. #pragma link "cxContainer"
  19. #pragma link "cxControls"
  20. #pragma link "cxDropDownEdit"
  21. #pragma link "cxEdit"
  22. #pragma link "cxGraphics"
  23. #pragma link "cxGroupBox"
  24. #pragma link "cxLabel"
  25. #pragma link "cxLookAndFeelPainters"
  26. #pragma link "cxLookAndFeels"
  27. #pragma link "cxMaskEdit"
  28. #pragma link "cxPC"
  29. #pragma link "cxPCdxBarPopupMenu"
  30. #pragma link "cxSpinEdit"
  31. #pragma link "cxSplitter"
  32. #pragma link "cxTextEdit"
  33. #pragma link "cxTimeEdit"
  34. #pragma link "dxSkinBlack"
  35. #pragma link "dxSkinBlue"
  36. #pragma link "dxSkinCaramel"
  37. #pragma link "dxSkinCoffee"
  38. #pragma link "dxSkinDarkRoom"
  39. #pragma link "dxSkinDarkSide"
  40. #pragma link "dxSkinFoggy"
  41. #pragma link "dxSkinGlassOceans"
  42. #pragma link "dxSkiniMaginary"
  43. #pragma link "dxSkinLilian"
  44. #pragma link "dxSkinLiquidSky"
  45. #pragma link "dxSkinLondonLiquidSky"
  46. #pragma link "dxSkinMcSkin"
  47. #pragma link "dxSkinMoneyTwins"
  48. #pragma link "dxSkinOffice2007Black"
  49. #pragma link "dxSkinOffice2007Blue"
  50. #pragma link "dxSkinOffice2007Green"
  51. #pragma link "dxSkinOffice2007Pink"
  52. #pragma link "dxSkinOffice2007Silver"
  53. #pragma link "dxSkinOffice2010Black"
  54. #pragma link "dxSkinOffice2010Blue"
  55. #pragma link "dxSkinOffice2010Silver"
  56. #pragma link "dxSkinsCore"
  57. #pragma link "dxSkinscxPCPainter"
  58. #pragma link "dxSkinSeven"
  59. #pragma link "dxSkinSharp"
  60. #pragma link "dxSkinSilver"
  61. #pragma link "dxSkinStardust"
  62. #pragma link "cxRadioGroup"
  63. #pragma link "cxClasses"
  64. #pragma link "cxCustomData"
  65. #pragma link "cxData"
  66. #pragma link "cxDataStorage"
  67. #pragma link "cxDBData"
  68. #pragma link "cxFilter"
  69. #pragma link "cxGrid"
  70. #pragma link "cxGridCustomTableView"
  71. #pragma link "cxGridCustomView"
  72. #pragma link "cxGridDBTableView"
  73. #pragma link "cxGridLevel"
  74. #pragma link "cxGridTableView"
  75. #pragma link "cxStyles"
  76. #pragma link "cxCheckBox"
  77. #pragma link "cxImage"
  78. #pragma link "cxButtonEdit"
  79. #pragma link "cxBlobEdit"
  80. #pragma link "cxColorComboBox"
  81. #pragma link "cxCalc"
  82. #pragma link "VmsDesignerF"
  83. #pragma link "FRAME_VmsSchListF"
  84. #pragma link "cxHint"
  85. #pragma link "dxCustomHint"
  86. #pragma link "dxScreenTip"
  87. #pragma link "dxSkinsForm"
  88. #pragma link "dxGDIPlusClasses"
  89. #pragma resource "*.dfm"
  90. TFrmVmsMsgPubrMngr *FrmVmsMsgPubrMngr = NULL;
  91. //---------------------------------------------------------------------------
  92. __fastcall TFrmVmsMsgPubrMngr::TFrmVmsMsgPubrMngr(TComponent* Owner)
  93. : TForm(Owner)
  94. {
  95. //CMM_SetFormPosition(g_AppCfg.bSaveForm);
  96. ITSSkin_Initialize(Application, g_AppCfg.sLang);
  97. ITSSkin_Caption(false);
  98. ITSSkin_Load(this);
  99. //CMM_LoadForm(g_sFormsDir, this);
  100. SetColorScheme(g_AppCfg.sSkinName);
  101. FUpdate= false;
  102. FTitle = Caption;//"VMS 자동 스케줄 관리";
  103. FListSymb = new TList;
  104. EditMode = false;
  105. FRAMEVmsSchList1->PnlTop->Visible = false;
  106. FRAMEVmsSchList1->PnlBottom->Visible = false;
  107. PgVmsSch->Properties->ActivePage = TsEdit;
  108. }
  109. //---------------------------------------------------------------------------
  110. void __fastcall TFrmVmsMsgPubrMngr::SetColorScheme(String ASkinName)
  111. {
  112. dxSkinController1->SkinName = ASkinName;
  113. dxSkinController1->Refresh();
  114. PnlPreview->ParentColor = false;
  115. PnlPreview->Color = clBlack;
  116. }
  117. //---------------------------------------------------------------------------
  118. void __fastcall TFrmVmsMsgPubrMngr::CommClose()
  119. {
  120. try {
  121. #if 0
  122. if (m_pEdtDesigner) {
  123. delete m_pEdtDesigner;
  124. m_pEdtDesigner = NULL;
  125. }
  126. #endif
  127. APP_DelVmsSizeCombo(CbSizeType);
  128. ClearSymbloList();
  129. SAFE_DELETE(FListSymb);
  130. CComm_Terminate();
  131. ITSSkin_Term();
  132. //CMM_SaveForm(g_sFormsDir, this);
  133. }
  134. catch(...) {
  135. }
  136. }
  137. //---------------------------------------------------------------------------
  138. void __fastcall TFrmVmsMsgPubrMngr::FormCreate(TObject *Sender)
  139. {
  140. InitDbLoading();
  141. //m_pEdtDesigner = new TVmsFormDesigner(PnlEditForm);
  142. //FOR_STL(TCDSFontColor*, pObj, CDSFontManager->FFontColors) {
  143. // m_pEdtDesigner->InitFontColor(pObj->VMS_FONT_COLR_CD, (TColor)pObj->VMS_FONT_COLR_VAL);
  144. //}
  145. }
  146. //---------------------------------------------------------------------------
  147. void __fastcall TFrmVmsMsgPubrMngr::InitDbLoading()
  148. {
  149. Application->ProcessMessages();
  150. if (!VmsCtlrManager) {
  151. VmsCtlrManager = new TVmsCtlrManager();
  152. }
  153. VmsCtlrManager->LoadVmsModlSize();
  154. VmsCtlrManager->LoadFromDb();
  155. #if 0
  156. if (SysCodeManager == NULL) {
  157. SysCodeManager = new TSysCodeManager();
  158. }
  159. SysCodeManager->LoadFromDb();
  160. if (!VmsTextItemManager) {
  161. VmsTextItemManager = new TVmsTextItemManager();
  162. }
  163. VmsTextItemManager->LoadFromDb();
  164. #endif
  165. if(!CDSFontManager) {
  166. CDSFontManager = new TCDSFontManager();
  167. }
  168. CDSFontManager->LoadFontInfo();
  169. if (!CenterCommManager) {
  170. CenterCommManager = new TCenterCommManager();
  171. }
  172. CenterCommManager->LoadFromDb(g_AppCfg.PRCS_ID);
  173. FCommCtrlTarget = CenterCommManager->FLists.Find("22"); // VMS표출문안 등록 알림
  174. }
  175. //---------------------------------------------------------------------------
  176. void __fastcall TFrmVmsMsgPubrMngr::FormShow(TObject *Sender)
  177. {
  178. int nResult = CComm_Initialize((long)Handle, g_AppCfg.PRCS_ID, "P04010", 0);
  179. Refresh();
  180. FormInit();
  181. TmrShow->Enabled = true;
  182. }
  183. //---------------------------------------------------------------------------
  184. void __fastcall TFrmVmsMsgPubrMngr::FormInit()
  185. {
  186. TNotifyEvent evt = CbSizeType->Properties->OnChange;
  187. CbSizeType->Properties->OnChange = NULL;
  188. APP_FillVmsSizeType(CbSizeType, false);
  189. CbSizeType->Properties->OnChange = evt;
  190. FNewDb = false;
  191. }
  192. //---------------------------------------------------------------------------
  193. void __fastcall TFrmVmsMsgPubrMngr::TmrShowTimer(TObject *Sender)
  194. {
  195. TmrShow->Enabled = false;
  196. CbSizeType->ItemIndex = -1;
  197. CbSizeType->ItemIndex = 0;
  198. }
  199. //---------------------------------------------------------------------------
  200. void __fastcall TFrmVmsMsgPubrMngr::BtnCloseClick(TObject *Sender)
  201. {
  202. Close();
  203. }
  204. //---------------------------------------------------------------------------
  205. void __fastcall TFrmVmsMsgPubrMngr::FormClose(TObject *Sender, TCloseAction &Action)
  206. {
  207. CommClose();
  208. FrmVmsMsgPubrMngr = NULL;
  209. Action = caFree;
  210. }
  211. //---------------------------------------------------------------------------
  212. void __fastcall TFrmVmsMsgPubrMngr::FormCloseQuery(TObject *Sender, bool &CanClose)
  213. {
  214. if (FUpdate)
  215. {
  216. //POST_MSG(Application->MainForm->Handle, WM_DATABASE_REFRESH, WP_MSG_14, 0);
  217. }
  218. }
  219. //---------------------------------------------------------------------------
  220. void __fastcall TFrmVmsMsgPubrMngr::ClearSymbloList()
  221. {
  222. FFormLists.RemoveAll();
  223. for(int ii = 0; ii < FListSymb->Count; ii++)
  224. {
  225. Graphics::TBitmap *bitmap = (Graphics::TBitmap *)FListSymb->Items[ii];
  226. delete bitmap;
  227. }
  228. FListSymb->Clear();
  229. }
  230. //---------------------------------------------------------------------------
  231. void __fastcall TFrmVmsMsgPubrMngr::FRAMEVmsSchList1TvListCellDblClick(TcxCustomGridTableView *Sender,
  232. TcxGridTableDataCellViewInfo *ACellViewInfo, TMouseButton AButton,
  233. TShiftState AShift, bool &AHandled)
  234. {
  235. if (!ACellViewInfo) return;
  236. DisplayInfo();
  237. }
  238. //---------------------------------------------------------------------------
  239. void __fastcall TFrmVmsMsgPubrMngr::FRAMEVmsSchList1TvListFocusedRecordChanged(TcxCustomGridTableView *Sender,
  240. TcxCustomGridRecord *APrevFocusedRecord, TcxCustomGridRecord *AFocusedRecord,
  241. bool ANewItemRecordFocusingChanged)
  242. {
  243. if (!AFocusedRecord) return;
  244. DisplayInfo();
  245. }
  246. //---------------------------------------------------------------------------
  247. void __fastcall TFrmVmsMsgPubrMngr::CbSizeTypePropertiesChange(TObject *Sender)
  248. {
  249. if (CbSizeType->ItemIndex < 0) return;
  250. EdFocus->SetFocus();
  251. BtnSearchClick(NULL);
  252. FRAMEVmsSchList1->CxList->SetFocus();
  253. LockWindowUpdate(GrpPreview->Handle);
  254. PnlPreview->Width = FVmsWidth;
  255. PnlPreview->Height= FVmsHeight;
  256. ImgPreview->Align = alNone;
  257. ImgPreview->Picture->Bitmap->Width = FVmsWidth;
  258. ImgPreview->Picture->Bitmap->Height= FVmsHeight;
  259. APP_ImageClear(ImgPreview->Canvas, 0, 0, ImgPreview->Width, ImgPreview->Height, clBlack);
  260. ImgPreview->Align = alClient;
  261. TvView->OptionsView->DataRowHeight = FVmsHeight;
  262. if (TvView->OptionsView->DataRowHeight < 48) {
  263. TvView->OptionsView->DataRowHeight = 48;
  264. }
  265. if (TvView->OptionsView->DataRowHeight > 144) {
  266. TvView->OptionsView->DataRowHeight = 144;
  267. }
  268. LockWindowUpdate(0);
  269. }
  270. //---------------------------------------------------------------------------
  271. void __fastcall TFrmVmsMsgPubrMngr::BtnSearchClick(TObject *Sender)
  272. {
  273. RefreshData();
  274. EdFocus->SetFocus();
  275. }
  276. //---------------------------------------------------------------------------
  277. void __fastcall TFrmVmsMsgPubrMngr::RefreshData()
  278. {
  279. FormClear();
  280. TVmsSizeType *pVmsSizeType = APP_GetVmsSizeTypeObject(CbSizeType);
  281. if (pVmsSizeType == NULL) return;
  282. FVmsTypeCd = pVmsSizeType->TypeCd;
  283. FVmsWidth = pVmsSizeType->Width;
  284. FVmsHeight = pVmsSizeType->Height;
  285. #if 0
  286. PnlEdtBack->Width = FVmsWidth+4;
  287. PnlEdtBack->Height= FVmsHeight+4;
  288. m_pEdtDesigner->Clear();
  289. m_pEdtDesigner->SizeType = FVmsTypeCd;
  290. m_pEdtDesigner->SetSize(FVmsWidth, FVmsHeight);
  291. m_pEdtDesigner->SetPos(0, 0);
  292. m_pEdtDesigner->BkColorCode = "00";
  293. m_pEdtDesigner->EditMode = true;
  294. m_pEdtDesigner->Show();
  295. #endif
  296. FRAMEVmsSchList1->UpdateList(FVmsTypeCd);
  297. LoadVmsFormList(FVmsTypeCd);
  298. }
  299. //---------------------------------------------------------------------------
  300. void __fastcall TFrmVmsMsgPubrMngr::FormClear()
  301. {
  302. FSelIdx = -1;
  303. EdVmsNmbr->Clear();
  304. GrpSchedule->Caption = lblTitle->Caption;//"▶ 자동 스케줄 설정";
  305. CMM_ClearGridTableView(TvSche);
  306. LockWindowUpdate(GrpPreview->Handle);
  307. APP_ImageClear(ImgPreview->Canvas, 0, 0, ImgPreview->Width, ImgPreview->Height, clBlack);
  308. LockWindowUpdate(0);
  309. FNewDb = false;
  310. }
  311. //---------------------------------------------------------------------------
  312. void __fastcall TFrmVmsMsgPubrMngr::DisplayInfo()
  313. {
  314. FormClear();
  315. FSelIdx = CMM_GetRecordIndex(FRAMEVmsSchList1->TvList);
  316. if (FSelIdx < 0) return;
  317. TcxDataController *pGDC = FRAMEVmsSchList1->TvList->DataController;
  318. String sVmsCtlrId = VarToStr(pGDC->Values[FSelIdx][FRAMEVmsSchList1->Column01->Index]);
  319. EdVmsNmbr->Text = sVmsCtlrId;
  320. GrpSchedule->Caption = lblTitle->Caption + " (" + VarToStr(pGDC->Values[FSelIdx][FRAMEVmsSchList1->Column02->Index]) + ": " + VarToStr(pGDC->Values[FSelIdx][FRAMEVmsSchList1->Column03->Index]) + ")";
  321. LoadVmsScheduleInfo(sVmsCtlrId);
  322. }
  323. //---------------------------------------------------------------------------
  324. bool __fastcall TFrmVmsMsgPubrMngr::CheckExistScheduleFormId(String AVmsFormId)
  325. {
  326. try {
  327. TvSche->BeginUpdate();
  328. TcxDataController *pGDC = TvSche->DataController;
  329. int nRows = pGDC->RecordCount;
  330. for (int ii = 0; ii < nRows; ii++) {
  331. String VMS_FORM_ID = VarToStr(pGDC->Values[ii][Col00->Index]);
  332. if (AVmsFormId == VMS_FORM_ID) {
  333. return true;
  334. }
  335. }
  336. }
  337. __finally {
  338. TvSche->EndUpdate();
  339. }
  340. return false;
  341. }
  342. //---------------------------------------------------------------------------
  343. void __fastcall TFrmVmsMsgPubrMngr::BtnListAddClick(TObject *Sender)
  344. {
  345. int nSelIdx = CMM_GetRecordIndex(FRAMEVmsSchList1->TvList);
  346. if (nSelIdx < 0) return;
  347. TcxGridDataController *pDcFrm = TvForm->DataController;
  348. TcxGridDataController *pDcSch = TvSche->DataController;
  349. int nFormIdx = CMM_GetRecordIndex(TvForm);
  350. if (nFormIdx < 0) return;
  351. String sNewVmsFormId = VarToStr(pDcFrm->Values[nFormIdx][ColFrm00->Index]);
  352. String sNewVmsFormNm = VarToStr(pDcFrm->Values[nFormIdx][ColFrm02->Index]);
  353. if (CheckExistScheduleFormId(sNewVmsFormId)) {
  354. String sMsg = "VMS 홍보 메시지 관리 - 메시지 추가 실패\r\n\r\n";
  355. sMsg += "메시지ID: " + sNewVmsFormId + "\r\n";
  356. sMsg += "메시지명: " + sNewVmsFormNm + "\r\n\r\n";
  357. sMsg += "메시지 정보가 스케줄에 이미 존재 합니다.\r\n스케줄에는 하나의 메시지 정보만 가능합니다.\r\n";
  358. Application->MessageBox(sMsg.c_str(), FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  359. return;
  360. }
  361. TFrmVmsPubrSelTerm *pSelDate = new TFrmVmsPubrSelTerm(this);
  362. pSelDate->FStrTime = Now().FormatString("YYYYMMDDHHNN");
  363. pSelDate->FEndTime = (Now()+1).FormatString("YYYYMMDDHHNN");//"209912312359";
  364. pSelDate->FWeek = "1111111";
  365. pSelDate->ShowModal();
  366. bool bSelected = pSelDate->FSelected;
  367. String sStrDate = pSelDate->FStrTime;
  368. String sEndDate = pSelDate->FEndTime;
  369. String sWeek = pSelDate->FWeek;
  370. delete pSelDate;
  371. pSelDate = NULL;
  372. if (!bSelected) {
  373. return;
  374. }
  375. int nRow = pDcSch->AppendRecord();
  376. pDcSch->Values[nRow][Col00->Index] = VarToStr(pDcFrm->Values[nFormIdx][ColFrm00->Index]); //ID
  377. pDcSch->Values[nRow][Col02->Index] = VarToStr(pDcFrm->Values[nFormIdx][ColFrm02->Index]); //명칭
  378. pDcSch->Values[nRow][Col03->Index] = VarToStr(pDcFrm->Values[nFormIdx][ColFrm03->Index]); //표출(초)
  379. pDcSch->Values[nRow][Col01->Index] = pDcFrm->Values[nFormIdx][ColFrm01->Index]; //이미지데이터임
  380. pDcSch->Values[nRow][Col04->Index] = ITSUtil_FormatStr(sStrDate, STR_HHNN);
  381. pDcSch->Values[nRow][Col05->Index] = ITSUtil_FormatStr(sEndDate, STR_HHNN);
  382. pDcSch->Values[nRow][ColWeek1->Index] = sWeek;
  383. String sUse = "Y";
  384. String sNowDate = Now().FormatString("YYYYMMDDHHNNSS");
  385. if (sEndDate < sNowDate) {
  386. sUse = "N";
  387. }
  388. pDcSch->Values[nRow][ColUse->Index] = sUse;
  389. EditPreviewForm();
  390. }
  391. //---------------------------------------------------------------------------
  392. void __fastcall TFrmVmsMsgPubrMngr::BtnListDeleteClick(TObject *Sender)
  393. {
  394. int nSelIdx = CMM_GetRecordIndex(FRAMEVmsSchList1->TvList);
  395. if (nSelIdx < 0) return;
  396. #if 0
  397. TcxGridDataController *pDcSch = TvSche->DataController;
  398. nSelIdx = CMM_GetRecordIndex(TvSche);
  399. if (nSelIdx < 0) return;
  400. TvSche->DataController->DeleteRecord(nSelIdx);
  401. #endif
  402. TcxGridTableView *pSrcList = TvSche;
  403. int nFocused = pSrcList->Controller->FocusedRecordIndex;
  404. int nSelRows = pSrcList->Controller->SelectedRowCount;
  405. if (nSelRows <= 0) {
  406. return;
  407. }
  408. try {
  409. TcxGridDataController *pGDC = pSrcList->DataController;
  410. pSrcList->BeginUpdate();
  411. try {
  412. pSrcList->Controller->DeleteSelection();
  413. int nDataCnt = pSrcList->DataController->RecordCount;
  414. if (nDataCnt <= nFocused)
  415. nFocused = nDataCnt - 1;
  416. pSrcList->Controller->ClearSelection();
  417. }
  418. catch(...) {
  419. }
  420. }
  421. __finally {
  422. pSrcList->EndUpdate();
  423. }
  424. EditPreviewForm();
  425. }
  426. //---------------------------------------------------------------------------
  427. void __fastcall TFrmVmsMsgPubrMngr::BtnSaveClick(TObject *Sender)
  428. {
  429. //작업한 스케줄 정보를 저장한다.
  430. if (EdVmsNmbr->Text.Trim().IsEmpty())
  431. {
  432. Application->MessageBox(lblErr2->Caption.c_str(),//L"VMS 자동 스케줄 관리\r\nVMS 목록에서 VMS를 먼저 선택한 후 작업을 진행하세요.",
  433. FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  434. return;
  435. }
  436. bool bUpdate = true;
  437. String sVmsCtlrId = EdVmsNmbr->Text.Trim();
  438. if (bUpdate)
  439. {
  440. String sMsg;
  441. sMsg = "VMS: " + sVmsCtlrId;
  442. sMsg+= "\r\n" + lblErr3->Caption;//선택한 VMS의 자동 스케줄 정보를 저장하시겠습니까?";
  443. if (Application->MessageBox(sMsg.c_str(), FTitle.c_str(), MB_YESNO|MB_ICONQUESTION|MB_APPLMODAL) != IDYES) return;
  444. }
  445. ITSDb_GetConnection()->BeginTrans();
  446. if (!DeleteVmsScenario(sVmsCtlrId)) {
  447. ITSDb_GetConnection()->RollbackTrans();
  448. return;
  449. }
  450. if (!SaveVmsScenario(sVmsCtlrId)) {
  451. ITSDb_GetConnection()->RollbackTrans();
  452. return;
  453. }
  454. ITSDb_GetConnection()->CommitTrans();
  455. #if 0
  456. if (FCommCtrlTarget != NULL) {
  457. FOR_STL(TCommInfo*, pCommInfo, FCommCtrlTarget->FLists) {
  458. int sendResult = CComm_VmsNotiRegDsplMsg(pCommInfo->SRVR_IP, pCommInfo->CMNC_PORT);
  459. if (VERR_NONE == sendResult) {
  460. }
  461. Sleep(200);
  462. }
  463. }
  464. #endif
  465. Application->MessageBox(lblErr4->Caption.c_str(),//L"VMS 자동 스케줄 관리\r\nVMS 자동 스케줄 정보를 저장 하였습니다.",
  466. FTitle.c_str(), MB_OK|MB_ICONINFORMATION|MB_APPLMODAL);
  467. CMM_SetGridRow(FRAMEVmsSchList1->CxList, FRAMEVmsSchList1->TvList, sVmsCtlrId, FRAMEVmsSchList1->Column01->Index);
  468. //DisplayInfo();
  469. }
  470. //---------------------------------------------------------------------------
  471. bool __fastcall TFrmVmsMsgPubrMngr::SaveVmsScenario(String AVmsCtlrId)
  472. {
  473. String sQry;
  474. TADOQuery *pADO = NULL;
  475. TcxDataController *pGDC = TvSche->DataController;
  476. sQry = "INSERT INTO TB_VMS_PUBRL_FORM ( \r\n"
  477. " VMS_CTLR_ID, \r\n"
  478. " VMS_FORM_ID, \r\n"
  479. " DSPL_BGN_YMD, \r\n"
  480. " DSPL_FNSH_YMD, \r\n"
  481. " DSPL_WEEK, \r\n"
  482. " DSPL_BGN_HM, \r\n"
  483. " DSPL_FNSH_HM, \r\n"
  484. " RGSTR_ID, \r\n"
  485. " REG_DT ) \r\n"
  486. " VALUES ( \r\n"
  487. " :p01, \r\n"
  488. " :p02, \r\n"
  489. " :p03, \r\n"
  490. " :p04, \r\n"
  491. " :p05, \r\n"
  492. " :p06, \r\n"
  493. " :p07, \r\n"
  494. " :p08, \r\n"
  495. " SYSDATE ) \r\n";
  496. try {
  497. TvSche->BeginUpdate();
  498. int nRows = pGDC->RecordCount;
  499. try {
  500. pADO = new TADOQuery(NULL);
  501. pADO->Close();
  502. pADO->Connection = ITSDb_GetConnection();
  503. ITSDb_SQLText(pADO, sQry);
  504. for (int ii = 0; ii < nRows; ii++) {
  505. String VMS_CTLR_ID = AVmsCtlrId;
  506. //int SN = ii+1;
  507. String VMS_FORM_ID = VarToStr(pGDC->Values[ii][Col00->Index]);
  508. String sStrDateTime = VarToStr(pGDC->Values[ii][Col04->Index]);
  509. sStrDateTime = StringReplace(sStrDateTime, ":", "", TReplaceFlags() << rfReplaceAll);
  510. sStrDateTime = StringReplace(sStrDateTime, "-", "", TReplaceFlags() << rfReplaceAll);
  511. sStrDateTime = StringReplace(sStrDateTime, " ", "", TReplaceFlags() << rfReplaceAll);
  512. String DSPL_BGN_YMD = sStrDateTime.SubString(1, 8);
  513. String DSPL_BGN_HM = sStrDateTime.SubString(9, 4);
  514. String sEndDateTime = VarToStr(pGDC->Values[ii][Col05->Index]);
  515. sEndDateTime = StringReplace(sEndDateTime, ":", "", TReplaceFlags() << rfReplaceAll);
  516. sEndDateTime = StringReplace(sEndDateTime, "-", "", TReplaceFlags() << rfReplaceAll);
  517. sEndDateTime = StringReplace(sEndDateTime, " ", "", TReplaceFlags() << rfReplaceAll);
  518. String DSPL_FNSH_YMD = sEndDateTime.SubString(1, 8);
  519. String DSPL_FNSH_HM = sEndDateTime.SubString(9, 4);
  520. String DSPL_WEEK = VarToStr(pGDC->Values[ii][ColWeek1->Index]);
  521. String RGSTR_ID = g_AppCfg.OPER_ID;
  522. pADO->Parameters->ParamByName("p01")->Value = VMS_CTLR_ID;
  523. pADO->Parameters->ParamByName("p02")->Value = VMS_FORM_ID;
  524. pADO->Parameters->ParamByName("p03")->Value = DSPL_BGN_YMD;
  525. pADO->Parameters->ParamByName("p04")->Value = DSPL_FNSH_YMD;
  526. pADO->Parameters->ParamByName("p05")->Value = DSPL_WEEK;
  527. pADO->Parameters->ParamByName("p06")->Value = DSPL_BGN_HM;
  528. pADO->Parameters->ParamByName("p07")->Value = DSPL_FNSH_HM;
  529. pADO->Parameters->ParamByName("p08")->Value = RGSTR_ID;
  530. pADO->ExecSQL();
  531. }
  532. }
  533. catch(EDatabaseError &E) {
  534. DBERRORMSG("TFrmVmsMsgPubrMngr::SaveVmsScenario", String(E.ClassName()), E.Message, sQry);
  535. return false;
  536. }
  537. catch(Exception &e) {
  538. DBERRORMSG("TFrmVmsMsgPubrMngr::SaveVmsScenario", String(e.ClassName()), e.Message, sQry);
  539. return false;
  540. }
  541. }
  542. __finally {
  543. if (pADO) {
  544. pADO->Close();
  545. delete pADO;
  546. }
  547. TvSche->EndUpdate();
  548. }
  549. return true;
  550. }
  551. //---------------------------------------------------------------------------
  552. bool __fastcall TFrmVmsMsgPubrMngr::DeleteVmsScenario(String AVmsCtlrId)
  553. {
  554. String sQry;
  555. TADOQuery *pADO = NULL;
  556. sQry = "DELETE TB_VMS_PUBRL_FORM \r\n"
  557. " WHERE 1=1 \r\n"
  558. " AND VMS_CTLR_ID = :p01 \r\n";
  559. try {
  560. try {
  561. pADO = new TADOQuery(NULL);
  562. pADO->Close();
  563. pADO->Connection = ITSDb_GetConnection();
  564. ITSDb_SQLText(pADO, sQry);
  565. ITSDb_SQLBind(pADO, "p01", AVmsCtlrId);
  566. pADO->ExecSQL();
  567. }
  568. catch(EDatabaseError &E) {
  569. DBERRORMSG("TFrmVmsMsgPubrMngr::DeleteVmsScenario", String(E.ClassName()), E.Message, sQry);
  570. return false;
  571. }
  572. catch(Exception &e) {
  573. DBERRORMSG("TFrmVmsMsgPubrMngr::DeleteVmsScenario", String(e.ClassName()), e.Message, sQry);
  574. return false;
  575. }
  576. }
  577. __finally {
  578. if (pADO) {
  579. pADO->Close();
  580. delete pADO;
  581. }
  582. }
  583. return true;
  584. }
  585. //---------------------------------------------------------------------------
  586. bool __fastcall TFrmVmsMsgPubrMngr::LoadVmsScheduleInfo(String AVmsCtlrId)
  587. {
  588. String sQry;
  589. TADOQuery *pADO = NULL;
  590. CMM_ClearGridTableView(TvSche);
  591. CMM_ClearGridTableView(TvView);
  592. TcxDataController *pDcSch = TvSche->DataController;
  593. TcxDataController *pDcViw = TvView->DataController;
  594. sQry = "SELECT A.VMS_CTLR_ID, ROWNUM AS SN, \r\n"
  595. " A.VMS_FORM_ID, B.VMS_FORM_NM, \r\n"
  596. " B.VMS_FORM_TYPE, B.DSPL_HR, \r\n"
  597. " B.VMS_FORM_IMG, \r\n"
  598. " A.DSPL_BGN_YMD, A.DSPL_FNSH_YMD, \r\n"
  599. " A.DSPL_WEEK, \r\n"
  600. " A.DSPL_BGN_HM, \r\n"
  601. " A.DSPL_FNSH_HM \r\n"
  602. " FROM TB_VMS_PUBRL_FORM A, \r\n"
  603. " TB_VMS_FORM B \r\n"
  604. " WHERE 1=1 \r\n"
  605. " AND A.VMS_CTLR_ID = :p01 \r\n"
  606. " AND A.VMS_FORM_ID = B.VMS_FORM_ID \r\n"
  607. " ORDER BY A.VMS_CTLR_ID, A.VMS_FORM_ID \r\n";
  608. try {
  609. TvSche->BeginUpdate();
  610. TvView->BeginUpdate();
  611. int nRowS, nRowV;
  612. try {
  613. pADO = new TADOQuery(NULL);
  614. pADO->Close();
  615. pADO->Connection = ITSDb_GetConnection();
  616. ITSDb_SQLText(pADO, sQry);
  617. ITSDb_SQLBind(pADO, "p01", AVmsCtlrId);
  618. ITSDb_SQLOpen(pADO);
  619. for( ; !pADO->Eof; pADO->Next()) {
  620. nRowS = pDcSch->AppendRecord();
  621. pDcSch->Values[nRowS][Col00->Index] = pADO->FieldByName("VMS_FORM_ID")->AsString;
  622. pDcSch->Values[nRowS][Col02->Index] = pADO->FieldByName("VMS_FORM_NM")->AsString;
  623. pDcSch->Values[nRowS][Col03->Index] = pADO->FieldByName("DSPL_HR")->AsString;
  624. String sStrDate = pADO->FieldByName("DSPL_BGN_YMD")->AsString + pADO->FieldByName("DSPL_BGN_HM")->AsString;
  625. String sEndDate = pADO->FieldByName("DSPL_FNSH_YMD")->AsString + pADO->FieldByName("DSPL_FNSH_HM")->AsString;
  626. pDcSch->Values[nRowS][Col04->Index] = ITSUtil_FormatStr(sStrDate, STR_HHNN);
  627. pDcSch->Values[nRowS][Col05->Index] = ITSUtil_FormatStr(sEndDate, STR_HHNN);
  628. pDcSch->Values[nRowS][ColWeek1->Index] = pADO->FieldByName("DSPL_WEEK")->AsString;
  629. pDcSch->Values[nRowS][Col01->Index] = pADO->FieldByName("VMS_FORM_IMG")->AsVariant;
  630. String sUse = "Y";
  631. if (sEndDate < Now().FormatString("YYYYMMDDHHNN")) {
  632. sUse = "N";
  633. }
  634. pDcSch->Values[nRowS][ColUse->Index] = sUse;
  635. if (sUse == "N") {
  636. continue;
  637. }
  638. nRowV = pDcViw->AppendRecord();
  639. pDcViw->Values[nRowV][ColView00->Index] = pADO->FieldByName("VMS_FORM_ID")->AsString;
  640. pDcViw->Values[nRowV][ColView02->Index] = pADO->FieldByName("VMS_FORM_NM")->AsString;
  641. pDcViw->Values[nRowV][ColView03->Index] = pADO->FieldByName("DSPL_HR")->AsString;
  642. pDcViw->Values[nRowV][ColView01->Index] = pADO->FieldByName("VMS_FORM_IMG")->AsVariant;
  643. }
  644. }
  645. catch(EDatabaseError &E) {
  646. DBERRORMSG("TFrmVmsMsgPubrMngr::LoadVmsScheduleInfo", String(E.ClassName()), E.Message, sQry);
  647. return false;
  648. }
  649. catch(Exception &e) {
  650. DBERRORMSG("TFrmVmsMsgPubrMngr::LoadVmsScheduleInfo", String(e.ClassName()), e.Message, sQry);
  651. return false;
  652. }
  653. }
  654. __finally {
  655. if (pADO) {
  656. pADO->Close();
  657. delete pADO;
  658. }
  659. TvSche->EndUpdate();
  660. TvView->EndUpdate();
  661. }
  662. return true;
  663. }
  664. //---------------------------------------------------------------------------
  665. void __fastcall TFrmVmsMsgPubrMngr::EditPreviewForm()
  666. {
  667. CMM_ClearGridTableView(TvView);
  668. TcxDataController *pDcSch = TvSche->DataController;
  669. TcxDataController *pDcViw = TvView->DataController;
  670. try {
  671. TvSche->BeginUpdate();
  672. TvView->BeginUpdate();
  673. int nRowS, nRowV;
  674. try {
  675. for(nRowS = 0; nRowS < pDcSch->RecordCount; nRowS++) {
  676. String sUse = VarToStr(pDcSch->Values[nRowS][ColUse->Index]);
  677. if (sUse == "N") {
  678. continue;
  679. }
  680. nRowV = pDcViw->AppendRecord();
  681. pDcViw->Values[nRowV][ColView00->Index] = pDcSch->Values[nRowS][Col00->Index];
  682. pDcViw->Values[nRowV][ColView02->Index] = pDcSch->Values[nRowS][Col02->Index];
  683. pDcViw->Values[nRowV][ColView03->Index] = pDcSch->Values[nRowS][Col03->Index];
  684. pDcViw->Values[nRowV][ColView01->Index] = pDcSch->Values[nRowS][Col01->Index];
  685. }
  686. }
  687. catch(Exception &e) {
  688. }
  689. }
  690. __finally {
  691. TvSche->EndUpdate();
  692. TvView->EndUpdate();
  693. }
  694. }
  695. //---------------------------------------------------------------------------
  696. bool __fastcall TFrmVmsMsgPubrMngr::LoadVmsFormList(String AFormSizeCd)
  697. {
  698. ClearSymbloList();
  699. CMM_ClearGridTableView(TvForm);
  700. String sQry;
  701. TADOQuery *pADO = NULL;
  702. sQry = "SELECT A.VMS_FORM_ID, A.VMS_MODL_KIND, A.VMS_FORM_TYPE, A.VMS_FORM_NM, \r\n"
  703. " A.VMS_FORM_IMG, \r\n"
  704. " A.DSPL_EFF, NVL(A.DSPL_HR, 0) AS DSPL_HR, A.BACK_CLR, \r\n"
  705. " NVL(B.FORM_TYPE_NM, A.VMS_FORM_TYPE) AS FORM_TYPE_NM, \r\n"
  706. " NVL(C.FORM_TYPE_NM, A.DSPL_EFF) AS DSPL_EFF_NM, \r\n"
  707. " NVL(D.VMS_MODL_KIND_NM, A.VMS_MODL_KIND) AS VMS_MODL_KIND_NM \r\n"
  708. " FROM TB_VMS_FORM A, \r\n"
  709. " (SELECT CODE_NO, CD_NM AS FORM_TYPE_NM \r\n"
  710. " FROM TB_SYS_CD \r\n"
  711. " WHERE CLSS_CD = 'VMS_FORM_TYPE_CD') B, \r\n"
  712. " (SELECT CODE_NO, CD_NM AS FORM_TYPE_NM \r\n"
  713. " FROM TB_SYS_CD \r\n"
  714. " WHERE CLSS_CD = 'VMS_FORM_DSPL_EFF_CD') C, \r\n"
  715. " TB_VMS_MODL_KIND D \r\n"
  716. " WHERE 1=1 \r\n"
  717. " AND A.VMS_FORM_TYPE = 'P' \r\n"
  718. " AND A.VMS_FORM_TYPE = B.CODE_NO(+) \r\n"
  719. " AND A.DSPL_EFF = C.CODE_NO(+) \r\n"
  720. " AND A.VMS_MODL_KIND = D.VMS_MODL_KIND(+) \r\n"
  721. " AND A.VMS_MODL_KIND = :p01 \r\n"
  722. " ORDER BY A.VMS_MODL_KIND, A.VMS_FORM_ID \r\n";
  723. try {
  724. TvForm->BeginUpdate();
  725. TcxDataController *pGDC = TvForm->DataController;
  726. int nRow;
  727. try {
  728. pADO = new TADOQuery(NULL);
  729. pADO->Close();
  730. pADO->Connection = ITSDb_GetConnection();
  731. ITSDb_SQLText(pADO, sQry);
  732. ITSDb_SQLBind(pADO, "p01", AFormSizeCd);
  733. ITSDb_SQLOpen(pADO);
  734. for( ; !pADO->Eof; pADO->Next()) {
  735. nRow = pGDC->AppendRecord();
  736. String VMS_FORM_ID = pADO->FieldByName("VMS_FORM_ID")->AsString;
  737. pGDC->Values[nRow][ColFrm00->Index] = VMS_FORM_ID;
  738. pGDC->Values[nRow][ColFrm02->Index] = pADO->FieldByName("VMS_FORM_NM")->AsString;
  739. pGDC->Values[nRow][ColFrm03->Index] = pADO->FieldByName("DSPL_HR")->AsString;
  740. pGDC->Values[nRow][ColFrm09->Index] = pADO->FieldByName("FORM_TYPE_NM")->AsString;
  741. pGDC->Values[nRow][ColFrm01->Index] = pADO->FieldByName("VMS_FORM_IMG")->AsVariant;
  742. TFormImage *pImage = new TFormImage();
  743. pImage->formId = VMS_FORM_ID;
  744. pImage->bitmap = new Graphics::TBitmap;
  745. try {
  746. pImage->bitmap->LoadFromStream(pADO->CreateBlobStream(pADO->FieldByName("VMS_FORM_IMG"), bmRead));
  747. }
  748. catch(Exception &e) {
  749. delete pImage->bitmap;
  750. pImage->bitmap = NULL;
  751. }
  752. FFormLists.Push(pImage->formId, pImage);
  753. }
  754. }
  755. catch(EDatabaseError &E)
  756. {
  757. DBERRORMSG("TFrmVmsMsgPubrMngr::LoadVmsFormList", String(E.ClassName()), E.Message, sQry);
  758. return false;
  759. }
  760. catch(Exception &e)
  761. {
  762. DBERRORMSG("TFrmVmsMsgPubrMngr::LoadVmsFormList", String(e.ClassName()), e.Message, sQry);
  763. return false;
  764. }
  765. }
  766. __finally {
  767. if (pADO) {
  768. pADO->Close();
  769. delete pADO;
  770. }
  771. TvForm->EndUpdate();
  772. }
  773. return true;
  774. }
  775. //---------------------------------------------------------------------------
  776. void __fastcall TFrmVmsMsgPubrMngr::cxGridColumn172CustomDrawCell(TcxCustomGridTableView *Sender, TcxCanvas *ACanvas, TcxGridTableDataCellViewInfo *AViewInfo,
  777. bool &ADone)
  778. {
  779. int nRecordIdx = AViewInfo->GridRecord->RecordIndex;
  780. if (nRecordIdx < 0) {
  781. return;
  782. }
  783. try {
  784. int nItemIdx = AViewInfo->Item->Index;
  785. if (VarIsNull(AViewInfo->GridRecord->DisplayTexts[nItemIdx])) return;
  786. String sEndDt = AViewInfo->GridRecord->DisplayTexts[nItemIdx];
  787. if (sEndDt < Now().FormatString(STR_HHNN)) {
  788. ACanvas->Canvas->Brush->Color = clSilver;
  789. }
  790. }
  791. catch(Exception &e) {
  792. }
  793. }
  794. //---------------------------------------------------------------------------
  795. void __fastcall TFrmVmsMsgPubrMngr::BtnUpClick(TObject *Sender)
  796. {
  797. try {
  798. TvSche->BeginUpdate();
  799. int nCurIdx = TvSche->DataController->FocusedRowIndex;//FocusedRecordIndex;
  800. if (nCurIdx <= 0) {
  801. return;
  802. }
  803. int nUpIdx = nCurIdx-1;
  804. try {
  805. int nCols = TvSche->ColumnCount;
  806. for (int ii = 0; ii < nCols; ii++) {
  807. Variant va = TvSche->DataController->Values[nCurIdx][ii];
  808. TvSche->DataController->Values[nCurIdx][ii] = TvSche->DataController->Values[nUpIdx][ii];
  809. TvSche->DataController->Values[nUpIdx][ii] = va;
  810. }
  811. TvSche->Controller->ClearSelection();
  812. TvSche->Controller->FocusedRowIndex = nUpIdx;
  813. TvSche->ViewData->Records[nUpIdx]->Focused = true;
  814. TvSche->ViewData->Records[nUpIdx]->Selected = true;
  815. CxSche->SetFocus();
  816. }
  817. catch(...) {
  818. }
  819. }
  820. __finally {
  821. TvSche->EndUpdate();
  822. }
  823. EditPreviewForm();
  824. }
  825. //---------------------------------------------------------------------------
  826. void __fastcall TFrmVmsMsgPubrMngr::BtnDownClick(TObject *Sender)
  827. {
  828. try {
  829. TvSche->BeginUpdate();
  830. int nCurIdx = TvSche->DataController->FocusedRowIndex;//FocusedRecordIndex;
  831. if (nCurIdx < 0) {
  832. return;
  833. }
  834. if (nCurIdx == TvSche->DataController->RecordCount-1) {
  835. return;
  836. }
  837. int nDnIdx = nCurIdx+1;
  838. try {
  839. int nCols = TvSche->ColumnCount;
  840. for (int ii = 0; ii < nCols; ii++) {
  841. Variant va = TvSche->DataController->Values[nCurIdx][ii];
  842. TvSche->DataController->Values[nCurIdx][ii] = TvSche->DataController->Values[nDnIdx][ii];
  843. TvSche->DataController->Values[nDnIdx][ii] = va;
  844. }
  845. TvSche->Controller->ClearSelection();
  846. TvSche->Controller->FocusedRowIndex = nDnIdx;
  847. TvSche->ViewData->Records[nDnIdx]->Focused = true;
  848. TvSche->ViewData->Records[nDnIdx]->Selected = true;
  849. CxSche->SetFocus();
  850. }
  851. catch(...) {
  852. }
  853. }
  854. __finally {
  855. TvSche->EndUpdate();
  856. }
  857. EditPreviewForm();
  858. }
  859. //---------------------------------------------------------------------------
  860. void __fastcall TFrmVmsMsgPubrMngr::TvScheFocusedRecordChanged(TcxCustomGridTableView *Sender, TcxCustomGridRecord *APrevFocusedRecord,
  861. TcxCustomGridRecord *AFocusedRecord, bool ANewItemRecordFocusingChanged)
  862. {
  863. if (!AFocusedRecord) return;
  864. int nSelIdx = CMM_GetRecordIndex(TvSche);
  865. if (nSelIdx < 0) return;
  866. String sVmsFormId = VarToStr(TvSche->DataController->Values[nSelIdx][Col00->Index]);
  867. LoadPreviewForm(sVmsFormId);
  868. }
  869. //---------------------------------------------------------------------------
  870. void __fastcall TFrmVmsMsgPubrMngr::TvFormFocusedRecordChanged(TcxCustomGridTableView *Sender, TcxCustomGridRecord *APrevFocusedRecord,
  871. TcxCustomGridRecord *AFocusedRecord, bool ANewItemRecordFocusingChanged)
  872. {
  873. if (!AFocusedRecord) return;
  874. int nSelIdx = CMM_GetRecordIndex(TvForm);
  875. if (nSelIdx < 0) return;
  876. String sVmsFormId = VarToStr(TvForm->DataController->Values[nSelIdx][ColFrm00->Index]);
  877. LoadPreviewForm(sVmsFormId);
  878. }
  879. //---------------------------------------------------------------------------
  880. void __fastcall TFrmVmsMsgPubrMngr::LoadPreviewForm(String AVmsFormId)
  881. {
  882. TFormImage *pImage = FFormLists.Find(AVmsFormId);
  883. LockWindowUpdate(GrpPreview->Handle);
  884. if (pImage != NULL && pImage->bitmap != NULL) {
  885. ImgPreview->Picture->Bitmap->Assign(pImage->bitmap);
  886. }
  887. else {
  888. APP_ImageClear(ImgPreview->Canvas, 0, 0, ImgPreview->Width, ImgPreview->Height, clBlack);
  889. }
  890. LockWindowUpdate(0);
  891. }
  892. //---------------------------------------------------------------------------
  893. void __fastcall TFrmVmsMsgPubrMngr::ChkAutoWidthPropertiesChange(TObject *Sender)
  894. {
  895. try
  896. {
  897. LockWindowUpdate(Handle);
  898. TvView->BeginUpdate();
  899. if (ChkAutoWidth->Checked) {
  900. //TvView->OptionsView->DataRowHeight = 58;
  901. TvView->OptionsView->CellAutoHeight = false;
  902. }
  903. else {
  904. TvView->OptionsView->DataRowHeight = 0;
  905. TvView->OptionsView->CellAutoHeight = true;
  906. }
  907. TvView->OptionsView->ColumnAutoWidth = ChkAutoWidth->Checked;
  908. }
  909. __finally
  910. {
  911. TvView->EndUpdate();
  912. LockWindowUpdate(0);
  913. //BtnBestFit->Visible = !ChkAutoWidth->Checked;
  914. }
  915. }
  916. //---------------------------------------------------------------------------
  917. void __fastcall TFrmVmsMsgPubrMngr::BtnBestFitClick(TObject *Sender)
  918. {
  919. try {
  920. LockWindowUpdate(Handle);
  921. TvView->BeginUpdate();
  922. TvView->ApplyBestFit(NULL, false, false);
  923. TvView->EndUpdate();
  924. }
  925. __finally {
  926. LockWindowUpdate(0);
  927. }
  928. }
  929. //---------------------------------------------------------------------------
  930. void __fastcall TFrmVmsMsgPubrMngr::Col05CustomDrawCell(TcxCustomGridTableView *Sender, TcxCanvas *ACanvas, TcxGridTableDataCellViewInfo *AViewInfo,
  931. bool &ADone)
  932. {
  933. int nRecordIdx = AViewInfo->GridRecord->RecordIndex;
  934. if (nRecordIdx < 0) {
  935. return;
  936. }
  937. try {
  938. if (VarIsNull(AViewInfo->GridRecord->DisplayTexts[ColUse->Index])) return;
  939. String sUseYn = AViewInfo->GridRecord->DisplayTexts[ColUse->Index];
  940. if (sUseYn == "N") {
  941. ACanvas->Canvas->Brush->Color = clRed;
  942. }
  943. }
  944. catch(Exception &e) {
  945. }
  946. }
  947. //---------------------------------------------------------------------------
  948. void __fastcall TFrmVmsMsgPubrMngr::TvScheCellDblClick(TcxCustomGridTableView *Sender, TcxGridTableDataCellViewInfo *ACellViewInfo,
  949. TMouseButton AButton, TShiftState AShift, bool &AHandled)
  950. {
  951. if (!ACellViewInfo) return;
  952. int nRow = Sender->DataController->FocusedRecordIndex;
  953. if( nRow <= -1 )
  954. return;
  955. TcxGridDataController *pGDC = (TcxGridDataController*)Sender->DataController;
  956. int nColIdx = ACellViewInfo->Item->Index;
  957. String sStrDate = VarToStr(pGDC->Values[nRow][Col04->Index]);
  958. String sEndDate = VarToStr(pGDC->Values[nRow][Col05->Index]);
  959. String sWeek = VarToStr(pGDC->Values[nRow][ColWeek1->Index]);
  960. if (nColIdx == Col04->Index || nColIdx == Col05->Index || nColIdx == ColWeek1->Index) {
  961. //표출기간설정
  962. TFrmVmsPubrSelTerm *pSelDate = new TFrmVmsPubrSelTerm(this);
  963. pSelDate->FStrTime = sStrDate;
  964. pSelDate->FEndTime = sEndDate;
  965. pSelDate->FWeek = sWeek;
  966. pSelDate->ShowModal();
  967. bool bSelected = pSelDate->FSelected;
  968. sStrDate = pSelDate->FStrTime;
  969. sEndDate = pSelDate->FEndTime;
  970. sWeek = pSelDate->FWeek;
  971. delete pSelDate;
  972. pSelDate = NULL;
  973. if (bSelected)
  974. {
  975. pGDC->Values[nRow][Col04->Index] = ITSUtil_FormatStr(sStrDate, STR_HHNN);
  976. pGDC->Values[nRow][Col05->Index] = ITSUtil_FormatStr(sEndDate, STR_HHNN);
  977. pGDC->Values[nRow][ColWeek1->Index] = sWeek;
  978. String sUse = "Y";
  979. String sNowDate = Now().FormatString("YYYYMMDDHHNNSS");
  980. if (sEndDate < sNowDate) {
  981. sUse = "N";
  982. }
  983. pGDC->Values[nRow][ColUse->Index] = sUse;
  984. EditPreviewForm();
  985. }
  986. return;
  987. }
  988. }
  989. //---------------------------------------------------------------------------
  990. void __fastcall TFrmVmsMsgPubrMngr::BtnAllEditClick(TObject *Sender)
  991. {
  992. TcxButton *pBtn = (TcxButton*)Sender;
  993. TcxGridTableView *pTvList = TvSche;
  994. TcxGridDataController *pGDC;
  995. String sMode = "E";
  996. if (pBtn->Tag == 1) {
  997. sMode = "A"; //추가
  998. pTvList = TvForm;
  999. }
  1000. if (!pTvList) return;
  1001. pGDC = pTvList->DataController;
  1002. int nFormIdx = CMM_GetRecordIndex(pTvList);
  1003. if (nFormIdx < 0)
  1004. {
  1005. Application->MessageBox(L"VMS 홍보 메시지 스케줄 일괄 관리\r\n등록되어 있는 스케줄 메시지을 목록에서 먼저 선택하세요.",
  1006. FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  1007. return;
  1008. }
  1009. String sFormId;
  1010. String sWeek;
  1011. if (sMode == "A") {
  1012. sFormId = VarToStr(pGDC->Values[nFormIdx][ColFrm00->Index]);
  1013. sWeek = "1111111";
  1014. }
  1015. else {
  1016. sFormId = VarToStr(pGDC->Values[nFormIdx][Col00->Index]);
  1017. sWeek = VarToStr(pGDC->Values[nFormIdx][ColWeek1->Index]);
  1018. }
  1019. TVmsSizeType *pVmsSizeType = APP_GetVmsSizeTypeObject(CbSizeType);
  1020. if (pVmsSizeType == NULL) {
  1021. Application->MessageBox(L"VMS 홍보 메시지 스케줄 일괄 관리\r\nVMS 모듈 유형을 알수 없습니다. VMS 모듈 유형을 먼저 선택하세요.",
  1022. FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  1023. return;
  1024. }
  1025. String sVmsTypeCd = pVmsSizeType->TypeCd;
  1026. TVMSEDT0M *pFrmEdt = new TVMSEDT0M(this);
  1027. pFrmEdt->FVmsTypeCd = sVmsTypeCd;
  1028. pFrmEdt->FScheType = SCHEDULE_PUBR;
  1029. pFrmEdt->FScheFormType = String(pBtn->Tag);
  1030. pFrmEdt->FFormId = sFormId;
  1031. pFrmEdt->FMode = sMode;
  1032. pFrmEdt->FVmsNmbr = "";
  1033. pFrmEdt->FSymbLibNmbr = "";
  1034. pFrmEdt->FStreamAddr = "";
  1035. pFrmEdt->FWeek = sWeek;
  1036. pFrmEdt->ShowModal();
  1037. bool bOk = pFrmEdt->FSelected;
  1038. delete pFrmEdt;
  1039. pFrmEdt = NULL;
  1040. if (bOk) {
  1041. DisplayInfo();
  1042. EditPreviewForm();
  1043. }
  1044. }
  1045. //---------------------------------------------------------------------------
  1046. void __fastcall TFrmVmsMsgPubrMngr::BtnMsgDispClick(TObject *Sender)
  1047. {
  1048. String sMsg = "VMS 메시지 표출\r\nVMS 메시지 표출 명령을 통신서버로 전송 하시겠습니까?";
  1049. if (Application->MessageBox(sMsg.c_str(), FTitle.c_str(), MB_YESNO|MB_ICONQUESTION|MB_APPLMODAL) != IDYES) return;
  1050. if (FCommCtrlTarget != NULL) {
  1051. FOR_STL(TCommInfo*, pCommInfo, FCommCtrlTarget->FLists) {
  1052. int sendResult = CComm_VmsNotiRegDsplMsg(pCommInfo->SRVR_IP, pCommInfo->CMNC_PORT);
  1053. if (VERR_NONE == sendResult) {
  1054. }
  1055. Sleep(200);
  1056. }
  1057. }
  1058. Application->MessageBox(L"VMS 메시지 표출\r\nVMS 메시지 표출 명령을 통신서버로 전송 하였습니다.",
  1059. FTitle.c_str(), MB_OK|MB_ICONINFORMATION|MB_APPLMODAL);
  1060. BtnMsgDisp->Enabled = false;
  1061. }
  1062. //---------------------------------------------------------------------------