FrmVmsMsgPubrMngrF.cpp 41 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224
  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 (FCommCtrlTarget != NULL) {
  456. FOR_STL(TCommInfo*, pCommInfo, FCommCtrlTarget->FLists) {
  457. int sendResult = CComm_VmsNotiRegDsplMsg(pCommInfo->SRVR_IP, pCommInfo->CMNC_PORT);
  458. if (VERR_NONE == sendResult) {
  459. }
  460. Sleep(200);
  461. }
  462. }
  463. Application->MessageBox(lblErr4->Caption.c_str(),//L"VMS 자동 스케줄 관리\r\nVMS 자동 스케줄 정보를 저장 하였습니다.",
  464. FTitle.c_str(), MB_OK|MB_ICONINFORMATION|MB_APPLMODAL);
  465. CMM_SetGridRow(FRAMEVmsSchList1->CxList, FRAMEVmsSchList1->TvList, sVmsCtlrId, FRAMEVmsSchList1->Column01->Index);
  466. //DisplayInfo();
  467. }
  468. //---------------------------------------------------------------------------
  469. bool __fastcall TFrmVmsMsgPubrMngr::SaveVmsScenario(String AVmsCtlrId)
  470. {
  471. String sQry;
  472. TADOQuery *pADO = NULL;
  473. TcxDataController *pGDC = TvSche->DataController;
  474. sQry = "INSERT INTO TB_VMS_PUBRL_FORM ( \r\n"
  475. " VMS_CTLR_ID, \r\n"
  476. " VMS_FORM_ID, \r\n"
  477. " DSPL_BGN_YMD, \r\n"
  478. " DSPL_FNSH_YMD, \r\n"
  479. " DSPL_WEEK, \r\n"
  480. " DSPL_BGN_HM, \r\n"
  481. " DSPL_FNSH_HM, \r\n"
  482. " RGSTR_ID, \r\n"
  483. " REG_DT ) \r\n"
  484. " VALUES ( \r\n"
  485. " :p01, \r\n"
  486. " :p02, \r\n"
  487. " :p03, \r\n"
  488. " :p04, \r\n"
  489. " :p05, \r\n"
  490. " :p06, \r\n"
  491. " :p07, \r\n"
  492. " :p08, \r\n"
  493. " SYSDATE ) \r\n";
  494. try {
  495. TvSche->BeginUpdate();
  496. int nRows = pGDC->RecordCount;
  497. try {
  498. pADO = new TADOQuery(NULL);
  499. pADO->Close();
  500. pADO->Connection = ITSDb_GetConnection();
  501. ITSDb_SQLText(pADO, sQry);
  502. for (int ii = 0; ii < nRows; ii++) {
  503. String VMS_CTLR_ID = AVmsCtlrId;
  504. //int SN = ii+1;
  505. String VMS_FORM_ID = VarToStr(pGDC->Values[ii][Col00->Index]);
  506. String sStrDateTime = VarToStr(pGDC->Values[ii][Col04->Index]);
  507. sStrDateTime = StringReplace(sStrDateTime, ":", "", TReplaceFlags() << rfReplaceAll);
  508. sStrDateTime = StringReplace(sStrDateTime, "-", "", TReplaceFlags() << rfReplaceAll);
  509. sStrDateTime = StringReplace(sStrDateTime, " ", "", TReplaceFlags() << rfReplaceAll);
  510. String DSPL_BGN_YMD = sStrDateTime.SubString(1, 8);
  511. String DSPL_BGN_HM = sStrDateTime.SubString(9, 4);
  512. String sEndDateTime = VarToStr(pGDC->Values[ii][Col05->Index]);
  513. sEndDateTime = StringReplace(sEndDateTime, ":", "", TReplaceFlags() << rfReplaceAll);
  514. sEndDateTime = StringReplace(sEndDateTime, "-", "", TReplaceFlags() << rfReplaceAll);
  515. sEndDateTime = StringReplace(sEndDateTime, " ", "", TReplaceFlags() << rfReplaceAll);
  516. String DSPL_FNSH_YMD = sEndDateTime.SubString(1, 8);
  517. String DSPL_FNSH_HM = sEndDateTime.SubString(9, 4);
  518. String DSPL_WEEK = VarToStr(pGDC->Values[ii][ColWeek1->Index]);
  519. String RGSTR_ID = g_AppCfg.OPER_ID;
  520. pADO->Parameters->ParamByName("p01")->Value = VMS_CTLR_ID;
  521. pADO->Parameters->ParamByName("p02")->Value = VMS_FORM_ID;
  522. pADO->Parameters->ParamByName("p03")->Value = DSPL_BGN_YMD;
  523. pADO->Parameters->ParamByName("p04")->Value = DSPL_FNSH_YMD;
  524. pADO->Parameters->ParamByName("p05")->Value = DSPL_WEEK;
  525. pADO->Parameters->ParamByName("p06")->Value = DSPL_BGN_HM;
  526. pADO->Parameters->ParamByName("p07")->Value = DSPL_FNSH_HM;
  527. pADO->Parameters->ParamByName("p08")->Value = RGSTR_ID;
  528. pADO->ExecSQL();
  529. }
  530. }
  531. catch(EDatabaseError &E) {
  532. DBERRORMSG("TFrmVmsMsgPubrMngr::SaveVmsScenario", String(E.ClassName()), E.Message, sQry);
  533. return false;
  534. }
  535. catch(Exception &e) {
  536. DBERRORMSG("TFrmVmsMsgPubrMngr::SaveVmsScenario", String(e.ClassName()), e.Message, sQry);
  537. return false;
  538. }
  539. }
  540. __finally {
  541. if (pADO) {
  542. pADO->Close();
  543. delete pADO;
  544. }
  545. TvSche->EndUpdate();
  546. }
  547. return true;
  548. }
  549. //---------------------------------------------------------------------------
  550. bool __fastcall TFrmVmsMsgPubrMngr::DeleteVmsScenario(String AVmsCtlrId)
  551. {
  552. String sQry;
  553. TADOQuery *pADO = NULL;
  554. sQry = "DELETE TB_VMS_PUBRL_FORM \r\n"
  555. " WHERE 1=1 \r\n"
  556. " AND VMS_CTLR_ID = :p01 \r\n";
  557. try {
  558. try {
  559. pADO = new TADOQuery(NULL);
  560. pADO->Close();
  561. pADO->Connection = ITSDb_GetConnection();
  562. ITSDb_SQLText(pADO, sQry);
  563. ITSDb_SQLBind(pADO, "p01", AVmsCtlrId);
  564. pADO->ExecSQL();
  565. }
  566. catch(EDatabaseError &E) {
  567. DBERRORMSG("TFrmVmsMsgPubrMngr::DeleteVmsScenario", String(E.ClassName()), E.Message, sQry);
  568. return false;
  569. }
  570. catch(Exception &e) {
  571. DBERRORMSG("TFrmVmsMsgPubrMngr::DeleteVmsScenario", String(e.ClassName()), e.Message, sQry);
  572. return false;
  573. }
  574. }
  575. __finally {
  576. if (pADO) {
  577. pADO->Close();
  578. delete pADO;
  579. }
  580. }
  581. return true;
  582. }
  583. //---------------------------------------------------------------------------
  584. bool __fastcall TFrmVmsMsgPubrMngr::LoadVmsScheduleInfo(String AVmsCtlrId)
  585. {
  586. String sQry;
  587. TADOQuery *pADO = NULL;
  588. CMM_ClearGridTableView(TvSche);
  589. CMM_ClearGridTableView(TvView);
  590. TcxDataController *pDcSch = TvSche->DataController;
  591. TcxDataController *pDcViw = TvView->DataController;
  592. sQry = "SELECT A.VMS_CTLR_ID, ROWNUM AS SN, \r\n"
  593. " A.VMS_FORM_ID, B.VMS_FORM_NM, \r\n"
  594. " B.VMS_FORM_TYPE, B.DSPL_HR, \r\n"
  595. " B.VMS_FORM_IMG, \r\n"
  596. " A.DSPL_BGN_YMD, A.DSPL_FNSH_YMD, \r\n"
  597. " A.DSPL_WEEK, \r\n"
  598. " A.DSPL_BGN_HM, \r\n"
  599. " A.DSPL_FNSH_HM \r\n"
  600. " FROM TB_VMS_PUBRL_FORM A, \r\n"
  601. " TB_VMS_FORM B \r\n"
  602. " WHERE 1=1 \r\n"
  603. " AND A.VMS_CTLR_ID = :p01 \r\n"
  604. " AND A.VMS_FORM_ID = B.VMS_FORM_ID \r\n"
  605. " ORDER BY A.VMS_CTLR_ID, A.VMS_FORM_ID \r\n";
  606. try {
  607. TvSche->BeginUpdate();
  608. TvView->BeginUpdate();
  609. int nRowS, nRowV;
  610. try {
  611. pADO = new TADOQuery(NULL);
  612. pADO->Close();
  613. pADO->Connection = ITSDb_GetConnection();
  614. ITSDb_SQLText(pADO, sQry);
  615. ITSDb_SQLBind(pADO, "p01", AVmsCtlrId);
  616. ITSDb_SQLOpen(pADO);
  617. for( ; !pADO->Eof; pADO->Next()) {
  618. nRowS = pDcSch->AppendRecord();
  619. pDcSch->Values[nRowS][Col00->Index] = pADO->FieldByName("VMS_FORM_ID")->AsString;
  620. pDcSch->Values[nRowS][Col02->Index] = pADO->FieldByName("VMS_FORM_NM")->AsString;
  621. pDcSch->Values[nRowS][Col03->Index] = pADO->FieldByName("DSPL_HR")->AsString;
  622. String sStrDate = pADO->FieldByName("DSPL_BGN_YMD")->AsString + pADO->FieldByName("DSPL_BGN_HM")->AsString;
  623. String sEndDate = pADO->FieldByName("DSPL_FNSH_YMD")->AsString + pADO->FieldByName("DSPL_FNSH_HM")->AsString;
  624. pDcSch->Values[nRowS][Col04->Index] = ITSUtil_FormatStr(sStrDate, STR_HHNN);
  625. pDcSch->Values[nRowS][Col05->Index] = ITSUtil_FormatStr(sEndDate, STR_HHNN);
  626. pDcSch->Values[nRowS][ColWeek1->Index] = pADO->FieldByName("DSPL_WEEK")->AsString;
  627. pDcSch->Values[nRowS][Col01->Index] = pADO->FieldByName("VMS_FORM_IMG")->AsVariant;
  628. String sUse = "Y";
  629. if (sEndDate < Now().FormatString("YYYYMMDDHHNN")) {
  630. sUse = "N";
  631. }
  632. pDcSch->Values[nRowS][ColUse->Index] = sUse;
  633. if (sUse == "N") {
  634. continue;
  635. }
  636. nRowV = pDcViw->AppendRecord();
  637. pDcViw->Values[nRowV][ColView00->Index] = pADO->FieldByName("VMS_FORM_ID")->AsString;
  638. pDcViw->Values[nRowV][ColView02->Index] = pADO->FieldByName("VMS_FORM_NM")->AsString;
  639. pDcViw->Values[nRowV][ColView03->Index] = pADO->FieldByName("DSPL_HR")->AsString;
  640. pDcViw->Values[nRowV][ColView01->Index] = pADO->FieldByName("VMS_FORM_IMG")->AsVariant;
  641. }
  642. }
  643. catch(EDatabaseError &E) {
  644. DBERRORMSG("TFrmVmsMsgPubrMngr::LoadVmsScheduleInfo", String(E.ClassName()), E.Message, sQry);
  645. return false;
  646. }
  647. catch(Exception &e) {
  648. DBERRORMSG("TFrmVmsMsgPubrMngr::LoadVmsScheduleInfo", String(e.ClassName()), e.Message, sQry);
  649. return false;
  650. }
  651. }
  652. __finally {
  653. if (pADO) {
  654. pADO->Close();
  655. delete pADO;
  656. }
  657. TvSche->EndUpdate();
  658. TvView->EndUpdate();
  659. }
  660. return true;
  661. }
  662. //---------------------------------------------------------------------------
  663. void __fastcall TFrmVmsMsgPubrMngr::EditPreviewForm()
  664. {
  665. CMM_ClearGridTableView(TvView);
  666. TcxDataController *pDcSch = TvSche->DataController;
  667. TcxDataController *pDcViw = TvView->DataController;
  668. try {
  669. TvSche->BeginUpdate();
  670. TvView->BeginUpdate();
  671. int nRowS, nRowV;
  672. try {
  673. for(nRowS = 0; nRowS < pDcSch->RecordCount; nRowS++) {
  674. String sUse = VarToStr(pDcSch->Values[nRowS][ColUse->Index]);
  675. if (sUse == "N") {
  676. continue;
  677. }
  678. nRowV = pDcViw->AppendRecord();
  679. pDcViw->Values[nRowV][ColView00->Index] = pDcSch->Values[nRowS][Col00->Index];
  680. pDcViw->Values[nRowV][ColView02->Index] = pDcSch->Values[nRowS][Col02->Index];
  681. pDcViw->Values[nRowV][ColView03->Index] = pDcSch->Values[nRowS][Col03->Index];
  682. pDcViw->Values[nRowV][ColView01->Index] = pDcSch->Values[nRowS][Col01->Index];
  683. }
  684. }
  685. catch(Exception &e) {
  686. }
  687. }
  688. __finally {
  689. TvSche->EndUpdate();
  690. TvView->EndUpdate();
  691. }
  692. }
  693. //---------------------------------------------------------------------------
  694. bool __fastcall TFrmVmsMsgPubrMngr::LoadVmsFormList(String AFormSizeCd)
  695. {
  696. ClearSymbloList();
  697. CMM_ClearGridTableView(TvForm);
  698. String sQry;
  699. TADOQuery *pADO = NULL;
  700. sQry = "SELECT A.VMS_FORM_ID, A.VMS_MODL_KIND, A.VMS_FORM_TYPE, A.VMS_FORM_NM, \r\n"
  701. " A.VMS_FORM_IMG, \r\n"
  702. " A.DSPL_EFF, NVL(A.DSPL_HR, 0) AS DSPL_HR, A.BACK_CLR, \r\n"
  703. " NVL(B.FORM_TYPE_NM, A.VMS_FORM_TYPE) AS FORM_TYPE_NM, \r\n"
  704. " NVL(C.FORM_TYPE_NM, A.DSPL_EFF) AS DSPL_EFF_NM, \r\n"
  705. " NVL(D.VMS_MODL_KIND_NM, A.VMS_MODL_KIND) AS VMS_MODL_KIND_NM \r\n"
  706. " FROM TB_VMS_FORM A, \r\n"
  707. " (SELECT CODE_NO, CD_NM AS FORM_TYPE_NM \r\n"
  708. " FROM TB_SYS_CD \r\n"
  709. " WHERE CLSS_CD = 'VMS_FORM_TYPE_CD') B, \r\n"
  710. " (SELECT CODE_NO, CD_NM AS FORM_TYPE_NM \r\n"
  711. " FROM TB_SYS_CD \r\n"
  712. " WHERE CLSS_CD = 'VMS_FORM_DSPL_EFF_CD') C, \r\n"
  713. " TB_VMS_MODL_KIND D \r\n"
  714. " WHERE 1=1 \r\n"
  715. " AND A.VMS_FORM_TYPE = 'P' \r\n"
  716. " AND A.VMS_FORM_TYPE = B.CODE_NO(+) \r\n"
  717. " AND A.DSPL_EFF = C.CODE_NO(+) \r\n"
  718. " AND A.VMS_MODL_KIND = D.VMS_MODL_KIND(+) \r\n"
  719. " AND A.VMS_MODL_KIND = :p01 \r\n"
  720. " ORDER BY A.VMS_MODL_KIND, A.VMS_FORM_ID \r\n";
  721. try {
  722. TvForm->BeginUpdate();
  723. TcxDataController *pGDC = TvForm->DataController;
  724. int nRow;
  725. try {
  726. pADO = new TADOQuery(NULL);
  727. pADO->Close();
  728. pADO->Connection = ITSDb_GetConnection();
  729. ITSDb_SQLText(pADO, sQry);
  730. ITSDb_SQLBind(pADO, "p01", AFormSizeCd);
  731. ITSDb_SQLOpen(pADO);
  732. for( ; !pADO->Eof; pADO->Next()) {
  733. nRow = pGDC->AppendRecord();
  734. String VMS_FORM_ID = pADO->FieldByName("VMS_FORM_ID")->AsString;
  735. pGDC->Values[nRow][ColFrm00->Index] = VMS_FORM_ID;
  736. pGDC->Values[nRow][ColFrm02->Index] = pADO->FieldByName("VMS_FORM_NM")->AsString;
  737. pGDC->Values[nRow][ColFrm03->Index] = pADO->FieldByName("DSPL_HR")->AsString;
  738. pGDC->Values[nRow][ColFrm09->Index] = pADO->FieldByName("FORM_TYPE_NM")->AsString;
  739. pGDC->Values[nRow][ColFrm01->Index] = pADO->FieldByName("VMS_FORM_IMG")->AsVariant;
  740. TFormImage *pImage = new TFormImage();
  741. pImage->formId = VMS_FORM_ID;
  742. pImage->bitmap = new Graphics::TBitmap;
  743. try {
  744. pImage->bitmap->LoadFromStream(pADO->CreateBlobStream(pADO->FieldByName("VMS_FORM_IMG"), bmRead));
  745. }
  746. catch(Exception &e) {
  747. delete pImage->bitmap;
  748. pImage->bitmap = NULL;
  749. }
  750. FFormLists.Push(pImage->formId, pImage);
  751. }
  752. }
  753. catch(EDatabaseError &E)
  754. {
  755. DBERRORMSG("TFrmVmsMsgPubrMngr::LoadVmsFormList", String(E.ClassName()), E.Message, sQry);
  756. return false;
  757. }
  758. catch(Exception &e)
  759. {
  760. DBERRORMSG("TFrmVmsMsgPubrMngr::LoadVmsFormList", String(e.ClassName()), e.Message, sQry);
  761. return false;
  762. }
  763. }
  764. __finally {
  765. if (pADO) {
  766. pADO->Close();
  767. delete pADO;
  768. }
  769. TvForm->EndUpdate();
  770. }
  771. return true;
  772. }
  773. //---------------------------------------------------------------------------
  774. void __fastcall TFrmVmsMsgPubrMngr::cxGridColumn172CustomDrawCell(TcxCustomGridTableView *Sender, TcxCanvas *ACanvas, TcxGridTableDataCellViewInfo *AViewInfo,
  775. bool &ADone)
  776. {
  777. int nRecordIdx = AViewInfo->GridRecord->RecordIndex;
  778. if (nRecordIdx < 0) {
  779. return;
  780. }
  781. try {
  782. int nItemIdx = AViewInfo->Item->Index;
  783. if (VarIsNull(AViewInfo->GridRecord->DisplayTexts[nItemIdx])) return;
  784. String sEndDt = AViewInfo->GridRecord->DisplayTexts[nItemIdx];
  785. if (sEndDt < Now().FormatString(STR_HHNN)) {
  786. ACanvas->Canvas->Brush->Color = clSilver;
  787. }
  788. }
  789. catch(Exception &e) {
  790. }
  791. }
  792. //---------------------------------------------------------------------------
  793. void __fastcall TFrmVmsMsgPubrMngr::BtnUpClick(TObject *Sender)
  794. {
  795. try {
  796. TvSche->BeginUpdate();
  797. int nCurIdx = TvSche->DataController->FocusedRowIndex;//FocusedRecordIndex;
  798. if (nCurIdx <= 0) {
  799. return;
  800. }
  801. int nUpIdx = nCurIdx-1;
  802. try {
  803. int nCols = TvSche->ColumnCount;
  804. for (int ii = 0; ii < nCols; ii++) {
  805. Variant va = TvSche->DataController->Values[nCurIdx][ii];
  806. TvSche->DataController->Values[nCurIdx][ii] = TvSche->DataController->Values[nUpIdx][ii];
  807. TvSche->DataController->Values[nUpIdx][ii] = va;
  808. }
  809. TvSche->Controller->ClearSelection();
  810. TvSche->Controller->FocusedRowIndex = nUpIdx;
  811. TvSche->ViewData->Records[nUpIdx]->Focused = true;
  812. TvSche->ViewData->Records[nUpIdx]->Selected = true;
  813. CxSche->SetFocus();
  814. }
  815. catch(...) {
  816. }
  817. }
  818. __finally {
  819. TvSche->EndUpdate();
  820. }
  821. EditPreviewForm();
  822. }
  823. //---------------------------------------------------------------------------
  824. void __fastcall TFrmVmsMsgPubrMngr::BtnDownClick(TObject *Sender)
  825. {
  826. try {
  827. TvSche->BeginUpdate();
  828. int nCurIdx = TvSche->DataController->FocusedRowIndex;//FocusedRecordIndex;
  829. if (nCurIdx < 0) {
  830. return;
  831. }
  832. if (nCurIdx == TvSche->DataController->RecordCount-1) {
  833. return;
  834. }
  835. int nDnIdx = nCurIdx+1;
  836. try {
  837. int nCols = TvSche->ColumnCount;
  838. for (int ii = 0; ii < nCols; ii++) {
  839. Variant va = TvSche->DataController->Values[nCurIdx][ii];
  840. TvSche->DataController->Values[nCurIdx][ii] = TvSche->DataController->Values[nDnIdx][ii];
  841. TvSche->DataController->Values[nDnIdx][ii] = va;
  842. }
  843. TvSche->Controller->ClearSelection();
  844. TvSche->Controller->FocusedRowIndex = nDnIdx;
  845. TvSche->ViewData->Records[nDnIdx]->Focused = true;
  846. TvSche->ViewData->Records[nDnIdx]->Selected = true;
  847. CxSche->SetFocus();
  848. }
  849. catch(...) {
  850. }
  851. }
  852. __finally {
  853. TvSche->EndUpdate();
  854. }
  855. EditPreviewForm();
  856. }
  857. //---------------------------------------------------------------------------
  858. void __fastcall TFrmVmsMsgPubrMngr::TvScheFocusedRecordChanged(TcxCustomGridTableView *Sender, TcxCustomGridRecord *APrevFocusedRecord,
  859. TcxCustomGridRecord *AFocusedRecord, bool ANewItemRecordFocusingChanged)
  860. {
  861. if (!AFocusedRecord) return;
  862. int nSelIdx = CMM_GetRecordIndex(TvSche);
  863. if (nSelIdx < 0) return;
  864. String sVmsFormId = VarToStr(TvSche->DataController->Values[nSelIdx][Col00->Index]);
  865. LoadPreviewForm(sVmsFormId);
  866. }
  867. //---------------------------------------------------------------------------
  868. void __fastcall TFrmVmsMsgPubrMngr::TvFormFocusedRecordChanged(TcxCustomGridTableView *Sender, TcxCustomGridRecord *APrevFocusedRecord,
  869. TcxCustomGridRecord *AFocusedRecord, bool ANewItemRecordFocusingChanged)
  870. {
  871. if (!AFocusedRecord) return;
  872. int nSelIdx = CMM_GetRecordIndex(TvForm);
  873. if (nSelIdx < 0) return;
  874. String sVmsFormId = VarToStr(TvForm->DataController->Values[nSelIdx][ColFrm00->Index]);
  875. LoadPreviewForm(sVmsFormId);
  876. }
  877. //---------------------------------------------------------------------------
  878. void __fastcall TFrmVmsMsgPubrMngr::LoadPreviewForm(String AVmsFormId)
  879. {
  880. TFormImage *pImage = FFormLists.Find(AVmsFormId);
  881. LockWindowUpdate(GrpPreview->Handle);
  882. if (pImage != NULL && pImage->bitmap != NULL) {
  883. ImgPreview->Picture->Bitmap->Assign(pImage->bitmap);
  884. }
  885. else {
  886. APP_ImageClear(ImgPreview->Canvas, 0, 0, ImgPreview->Width, ImgPreview->Height, clBlack);
  887. }
  888. LockWindowUpdate(0);
  889. }
  890. //---------------------------------------------------------------------------
  891. void __fastcall TFrmVmsMsgPubrMngr::ChkAutoWidthPropertiesChange(TObject *Sender)
  892. {
  893. try
  894. {
  895. LockWindowUpdate(Handle);
  896. TvView->BeginUpdate();
  897. if (ChkAutoWidth->Checked) {
  898. //TvView->OptionsView->DataRowHeight = 58;
  899. TvView->OptionsView->CellAutoHeight = false;
  900. }
  901. else {
  902. TvView->OptionsView->DataRowHeight = 0;
  903. TvView->OptionsView->CellAutoHeight = true;
  904. }
  905. TvView->OptionsView->ColumnAutoWidth = ChkAutoWidth->Checked;
  906. }
  907. __finally
  908. {
  909. TvView->EndUpdate();
  910. LockWindowUpdate(0);
  911. //BtnBestFit->Visible = !ChkAutoWidth->Checked;
  912. }
  913. }
  914. //---------------------------------------------------------------------------
  915. void __fastcall TFrmVmsMsgPubrMngr::BtnBestFitClick(TObject *Sender)
  916. {
  917. try {
  918. LockWindowUpdate(Handle);
  919. TvView->BeginUpdate();
  920. TvView->ApplyBestFit(NULL, false, false);
  921. TvView->EndUpdate();
  922. }
  923. __finally {
  924. LockWindowUpdate(0);
  925. }
  926. }
  927. //---------------------------------------------------------------------------
  928. void __fastcall TFrmVmsMsgPubrMngr::Col05CustomDrawCell(TcxCustomGridTableView *Sender, TcxCanvas *ACanvas, TcxGridTableDataCellViewInfo *AViewInfo,
  929. bool &ADone)
  930. {
  931. int nRecordIdx = AViewInfo->GridRecord->RecordIndex;
  932. if (nRecordIdx < 0) {
  933. return;
  934. }
  935. try {
  936. if (VarIsNull(AViewInfo->GridRecord->DisplayTexts[ColUse->Index])) return;
  937. String sUseYn = AViewInfo->GridRecord->DisplayTexts[ColUse->Index];
  938. if (sUseYn == "N") {
  939. ACanvas->Canvas->Brush->Color = clRed;
  940. }
  941. }
  942. catch(Exception &e) {
  943. }
  944. }
  945. //---------------------------------------------------------------------------
  946. void __fastcall TFrmVmsMsgPubrMngr::TvScheCellDblClick(TcxCustomGridTableView *Sender, TcxGridTableDataCellViewInfo *ACellViewInfo,
  947. TMouseButton AButton, TShiftState AShift, bool &AHandled)
  948. {
  949. if (!ACellViewInfo) return;
  950. int nRow = Sender->DataController->FocusedRecordIndex;
  951. if( nRow <= -1 )
  952. return;
  953. TcxGridDataController *pGDC = (TcxGridDataController*)Sender->DataController;
  954. int nColIdx = ACellViewInfo->Item->Index;
  955. String sStrDate = VarToStr(pGDC->Values[nRow][Col04->Index]);
  956. String sEndDate = VarToStr(pGDC->Values[nRow][Col05->Index]);
  957. String sWeek = VarToStr(pGDC->Values[nRow][ColWeek1->Index]);
  958. if (nColIdx == Col04->Index || nColIdx == Col05->Index || nColIdx == ColWeek1->Index) {
  959. //표출기간설정
  960. TFrmVmsPubrSelTerm *pSelDate = new TFrmVmsPubrSelTerm(this);
  961. pSelDate->FStrTime = sStrDate;
  962. pSelDate->FEndTime = sEndDate;
  963. pSelDate->FWeek = sWeek;
  964. pSelDate->ShowModal();
  965. bool bSelected = pSelDate->FSelected;
  966. sStrDate = pSelDate->FStrTime;
  967. sEndDate = pSelDate->FEndTime;
  968. sWeek = pSelDate->FWeek;
  969. delete pSelDate;
  970. pSelDate = NULL;
  971. if (bSelected)
  972. {
  973. pGDC->Values[nRow][Col04->Index] = ITSUtil_FormatStr(sStrDate, STR_HHNN);
  974. pGDC->Values[nRow][Col05->Index] = ITSUtil_FormatStr(sEndDate, STR_HHNN);
  975. pGDC->Values[nRow][ColWeek1->Index] = sWeek;
  976. String sUse = "Y";
  977. String sNowDate = Now().FormatString("YYYYMMDDHHNNSS");
  978. if (sEndDate < sNowDate) {
  979. sUse = "N";
  980. }
  981. pGDC->Values[nRow][ColUse->Index] = sUse;
  982. EditPreviewForm();
  983. }
  984. return;
  985. }
  986. }
  987. //---------------------------------------------------------------------------
  988. void __fastcall TFrmVmsMsgPubrMngr::BtnAllEditClick(TObject *Sender)
  989. {
  990. TcxButton *pBtn = (TcxButton*)Sender;
  991. TcxGridTableView *pTvList = TvSche;
  992. TcxGridDataController *pGDC;
  993. String sMode = "E";
  994. if (pBtn->Tag == 1) {
  995. sMode = "A"; //추가
  996. pTvList = TvForm;
  997. }
  998. if (!pTvList) return;
  999. pGDC = pTvList->DataController;
  1000. int nFormIdx = CMM_GetRecordIndex(pTvList);
  1001. if (nFormIdx < 0)
  1002. {
  1003. Application->MessageBox(L"VMS 홍보 메시지 스케줄 일괄 관리\r\n등록되어 있는 스케줄 메시지을 목록에서 먼저 선택하세요.",
  1004. FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  1005. return;
  1006. }
  1007. String sFormId;
  1008. String sWeek;
  1009. if (sMode == "A") {
  1010. sFormId = VarToStr(pGDC->Values[nFormIdx][ColFrm00->Index]);
  1011. sWeek = "1111111";
  1012. }
  1013. else {
  1014. sFormId = VarToStr(pGDC->Values[nFormIdx][Col00->Index]);
  1015. sWeek = VarToStr(pGDC->Values[nFormIdx][ColWeek1->Index]);
  1016. }
  1017. TVmsSizeType *pVmsSizeType = APP_GetVmsSizeTypeObject(CbSizeType);
  1018. if (pVmsSizeType == NULL) {
  1019. Application->MessageBox(L"VMS 홍보 메시지 스케줄 일괄 관리\r\nVMS 모듈 유형을 알수 없습니다. VMS 모듈 유형을 먼저 선택하세요.",
  1020. FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  1021. return;
  1022. }
  1023. String sVmsTypeCd = pVmsSizeType->TypeCd;
  1024. TVMSEDT0M *pFrmEdt = new TVMSEDT0M(this);
  1025. pFrmEdt->FVmsTypeCd = sVmsTypeCd;
  1026. pFrmEdt->FScheType = SCHEDULE_PUBR;
  1027. pFrmEdt->FScheFormType = String(pBtn->Tag);
  1028. pFrmEdt->FFormId = sFormId;
  1029. pFrmEdt->FMode = sMode;
  1030. pFrmEdt->FVmsNmbr = "";
  1031. pFrmEdt->FSymbLibNmbr = "";
  1032. pFrmEdt->FStreamAddr = "";
  1033. pFrmEdt->FWeek = sWeek;
  1034. pFrmEdt->ShowModal();
  1035. bool bOk = pFrmEdt->FSelected;
  1036. delete pFrmEdt;
  1037. pFrmEdt = NULL;
  1038. if (bOk) {
  1039. DisplayInfo();
  1040. EditPreviewForm();
  1041. }
  1042. }
  1043. //---------------------------------------------------------------------------