FrmVmsMsgPubrMngrF.cpp 35 KB

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