VMSM700MF_OLD.cpp 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843
  1. /****************************************************************************
  2. * @source :
  3. * @description :
  4. ****************************************************************************
  5. * DATE AUTHOR DESCRIPTION
  6. * --------------------------------------------------------------------------
  7. * 2016/07/10 shjung 최초작성
  8. *
  9. ****************************************************************************/
  10. //---------------------------------------------------------------------------
  11. #include <vcl.h>
  12. #include "ITSSkinF.h"
  13. #include "ITSUtilF.h"
  14. #include "AppGlobalF.h"
  15. #include "CDSVmsIfscF.h"
  16. #include "ITSLangTransF.h"
  17. #pragma hdrstop
  18. #include "VMSM700MF_OLD.h"
  19. #include "VMSM610MF.h"
  20. #include "VMSSEL0MF.h"
  21. #include "VMSEDT0MF.h"
  22. //---------------------------------------------------------------------------
  23. #pragma package(smart_init)
  24. #pragma link "cxButtons"
  25. #pragma link "cxCalendar"
  26. #pragma link "cxContainer"
  27. #pragma link "cxControls"
  28. #pragma link "cxDropDownEdit"
  29. #pragma link "cxEdit"
  30. #pragma link "cxGraphics"
  31. #pragma link "cxGroupBox"
  32. #pragma link "cxLabel"
  33. #pragma link "cxLookAndFeelPainters"
  34. #pragma link "cxLookAndFeels"
  35. #pragma link "cxMaskEdit"
  36. #pragma link "cxPC"
  37. #pragma link "cxPCdxBarPopupMenu"
  38. #pragma link "cxSpinEdit"
  39. #pragma link "cxSplitter"
  40. #pragma link "cxTextEdit"
  41. #pragma link "cxTimeEdit"
  42. #pragma link "dxSkinBlack"
  43. #pragma link "dxSkinBlue"
  44. #pragma link "dxSkinCaramel"
  45. #pragma link "dxSkinCoffee"
  46. #pragma link "dxSkinDarkRoom"
  47. #pragma link "dxSkinDarkSide"
  48. #pragma link "dxSkinFoggy"
  49. #pragma link "dxSkinGlassOceans"
  50. #pragma link "dxSkiniMaginary"
  51. #pragma link "dxSkinLilian"
  52. #pragma link "dxSkinLiquidSky"
  53. #pragma link "dxSkinLondonLiquidSky"
  54. #pragma link "dxSkinMcSkin"
  55. #pragma link "dxSkinMoneyTwins"
  56. #pragma link "dxSkinOffice2007Black"
  57. #pragma link "dxSkinOffice2007Blue"
  58. #pragma link "dxSkinOffice2007Green"
  59. #pragma link "dxSkinOffice2007Pink"
  60. #pragma link "dxSkinOffice2007Silver"
  61. #pragma link "dxSkinOffice2010Black"
  62. #pragma link "dxSkinOffice2010Blue"
  63. #pragma link "dxSkinOffice2010Silver"
  64. #pragma link "dxSkinsCore"
  65. #pragma link "dxSkinscxPCPainter"
  66. #pragma link "dxSkinSeven"
  67. #pragma link "dxSkinSharp"
  68. #pragma link "dxSkinSilver"
  69. #pragma link "dxSkinStardust"
  70. #pragma link "cxRadioGroup"
  71. #pragma link "cxClasses"
  72. #pragma link "cxCustomData"
  73. #pragma link "cxData"
  74. #pragma link "cxDataStorage"
  75. #pragma link "cxDBData"
  76. #pragma link "cxFilter"
  77. #pragma link "cxGrid"
  78. #pragma link "cxGridCustomTableView"
  79. #pragma link "cxGridCustomView"
  80. #pragma link "cxGridDBTableView"
  81. #pragma link "cxGridLevel"
  82. #pragma link "cxGridTableView"
  83. #pragma link "cxStyles"
  84. #pragma link "cxCheckBox"
  85. #pragma link "cxImage"
  86. #pragma link "cxButtonEdit"
  87. #pragma link "cxBlobEdit"
  88. #pragma link "cxColorComboBox"
  89. #pragma link "cxCalc"
  90. #pragma link "VmsDesignerF"
  91. #pragma link "FRAME_VmsSchListF"
  92. #pragma resource "*.dfm"
  93. TVMSM700M_OLD *VMSM700M_OLD = NULL;
  94. //---------------------------------------------------------------------------
  95. __fastcall TVMSM700M_OLD::TVMSM700M_OLD(TComponent* Owner)
  96. : TForm(Owner)
  97. {
  98. LangTrans->Translate(this, ITSDb_GetConnection());
  99. ITSSkin_Load(this);
  100. CMM_LoadForm(g_sFormsDir, this);
  101. FUpdate= false;
  102. FTitle = Caption;//"VMS 고정 스케줄 관리";
  103. FListSymb = new TList;
  104. EditMode = false;
  105. APP_InitDisplayColor();
  106. PgVmsSch->Properties->ActivePage = TabFixed;
  107. PgVmsSch->Properties->HideTabs = true;
  108. LblInfo->Height = 25;
  109. FRAMEVmsSchList1->PnlTop->Visible = false;
  110. FRAMEVmsSchList1->PnlBottom->Visible = false;
  111. FRAMEVmsSchList1->ColAuto->Visible = false;
  112. FRAMEVmsSchList1->ColFix->Visible = true;
  113. FRAMEVmsSchList1->ColBase->Visible = false;
  114. FVmsHeight = 64;
  115. #if 0
  116. FListSch[ 0] = TvGrid0;
  117. FListSch[ 1] = TvGrid1;
  118. FListSch[ 2] = TvGrid2;
  119. FListSch[ 3] = TvGrid3;
  120. FListSch[ 4] = TvGrid4;
  121. FListSch[ 5] = NULL;
  122. FListSch[ 6] = NULL;
  123. FListSch[ 7] = TvGrid7;
  124. FListSch[ 8] = TvGrid8
  125. FListSch[ 9] = TvGrid9
  126. FListSch[10] = TvGrid10;
  127. FListFrm[ 0] = TvForm0;
  128. FListFrm[ 1] = TvForm1;
  129. FListFrm[ 2] = TvForm2;
  130. FListFrm[ 3] = TvForm3;
  131. FListFrm[ 4] = TvForm4;
  132. FListFrm[ 5] = NULL;
  133. FListFrm[ 6] = NULL;
  134. FListFrm[ 7] = TvForm7;
  135. FListFrm[ 8] = TvForm8;
  136. FListFrm[ 9] = TvForm9;
  137. FListFrm[10] = TvForm10;
  138. #endif
  139. FListSch[0] = NULL;
  140. FListSch[1] = NULL;
  141. FListSch[2] = NULL;
  142. FListSch[3] = NULL;
  143. FListSch[4] = NULL;
  144. FListSch[5] = TvGrid6;
  145. FListSch[6] = NULL;
  146. FListSch[7] = NULL;
  147. FListFrm[0] = NULL;
  148. FListFrm[1] = NULL;
  149. FListFrm[2] = NULL;
  150. FListFrm[3] = NULL;
  151. FListFrm[4] = NULL;
  152. FListFrm[5] = TvForm6;
  153. FListFrm[6] = NULL;
  154. FListFrm[7] = NULL;
  155. for (int ii = 0; ii < MAX_FORM_SCHED; ii++)
  156. {
  157. if (FListSch[ii]) InitTcxList(FListSch[ii]);
  158. if (FListFrm[ii]) InitTcxList(FListFrm[ii]);
  159. }
  160. //BtnSave->Caption = "Save Schedule";
  161. //BtnSave->Hint = "Save scheduled tasks for the currently selected VMS";
  162. }
  163. //---------------------------------------------------------------------------
  164. void __fastcall TVMSM700M_OLD::InitTcxList(TcxGridTableView *AView)
  165. {
  166. AView->OptionsView->DataRowHeight = 0;
  167. AView->OptionsView->CellAutoHeight = true;
  168. AView->OptionsView->Indicator = false;
  169. AView->OptionsCustomize->ColumnMoving = false;
  170. AView->OptionsCustomize->ColumnSorting = false;
  171. AView->Columns[0]->Width = 40;
  172. AView->Columns[0]->Options->HorzSizing = false;
  173. AView->Columns[1]->Width = 330;
  174. }
  175. //---------------------------------------------------------------------------
  176. /*
  177. * 닫기버튼 이나 x버튼 클릭시 공통으로 처리하는 로직이들어간다..
  178. * Form과 DataModule class를 delete시킨다.
  179. * arguments
  180. *
  181. * return
  182. * void
  183. */
  184. void __fastcall TVMSM700M_OLD::CommClose()
  185. {
  186. try
  187. {
  188. APP_DelVmsSizeCombo(CbSizeType);
  189. ClearSymbloList();
  190. SAFE_DELETE(FListSymb);
  191. CMM_SaveForm(g_sFormsDir, this);
  192. }
  193. catch(...)
  194. {
  195. }
  196. }
  197. //---------------------------------------------------------------------------
  198. void __fastcall TVMSM700M_OLD::FormCreate(TObject *Sender)
  199. {
  200. //
  201. }
  202. //---------------------------------------------------------------------------
  203. /*
  204. * Form을 보여줄때 호출되는 event 메서드이다.
  205. * arguments
  206. * Sender : event handler 객체
  207. * return
  208. * void
  209. */
  210. void __fastcall TVMSM700M_OLD::FormShow(TObject *Sender)
  211. {
  212. Refresh();
  213. FormInit();
  214. ChangeEditMode(1);
  215. TmrShow->Enabled = true;
  216. }
  217. //---------------------------------------------------------------------------
  218. /*
  219. * form 초기화
  220. *
  221. * arguments
  222. *
  223. * return
  224. * void
  225. */
  226. void __fastcall TVMSM700M_OLD::FormInit()
  227. {
  228. for (int ii = 0; ii < MAX_FORM_SCHED; ii++)
  229. {
  230. if (FListSch[ii]) FListSch[ii]->OptionsView->NoDataToDisplayInfoText = FrmLang->lblNoSchedule->Caption;//"<등록되어 있는 스케줄 정보가 없습니다>";
  231. if (FListFrm[ii]) FListFrm[ii]->OptionsView->NoDataToDisplayInfoText = FrmLang->lblNoForm->Caption;//"<등록되어 있는 폼 정보가 없습니다>";
  232. }
  233. //VMS사이즈
  234. APP_FillVmsSizeType(CbSizeType, false);
  235. VmsManager->LoadVmsFormUsage();
  236. FRAMEVmsSchList1->RefreshVmsFormUsage();
  237. FNewDb = false;
  238. }
  239. //---------------------------------------------------------------------------
  240. /*
  241. * Form이 Show되고 난 후 최초 1회 수행되는 타이머 이벤트
  242. * arguments
  243. * Sender : event handler 객체
  244. * return
  245. * void
  246. */
  247. void __fastcall TVMSM700M_OLD::TmrShowTimer(TObject *Sender)
  248. {
  249. TmrShow->Enabled = false;
  250. }
  251. //---------------------------------------------------------------------------
  252. /*
  253. * Close 버튼 클릭 이벤트 핸들러
  254. * arguments
  255. * Sender : event handler 객체
  256. * return
  257. * void
  258. */
  259. void __fastcall TVMSM700M_OLD::BtnCloseClick(TObject *Sender)
  260. {
  261. Close();
  262. }
  263. //---------------------------------------------------------------------------
  264. void __fastcall TVMSM700M_OLD::FormClose(TObject *Sender, TCloseAction &Action)
  265. {
  266. CommClose();
  267. VMSM700M = NULL;
  268. Action = caFree;
  269. }
  270. //---------------------------------------------------------------------------
  271. void __fastcall TVMSM700M_OLD::FormCloseQuery(TObject *Sender, bool &CanClose)
  272. {
  273. if (FUpdate)
  274. {
  275. POST_MSG(Application->MainForm->Handle, WM_DATABASE_REFRESH, WP_MSG_14, 0);
  276. }
  277. }
  278. //---------------------------------------------------------------------------
  279. void __fastcall TVMSM700M_OLD::ChangeEditMode(int AEdit)
  280. {
  281. }
  282. //---------------------------------------------------------------------------
  283. void __fastcall TVMSM700M_OLD::ClearSymbloList()
  284. {
  285. for(int ii = 0; ii < FListSymb->Count; ii++)
  286. {
  287. Graphics::TBitmap *bitmap = (Graphics::TBitmap *)FListSymb->Items[ii];
  288. delete bitmap;
  289. }
  290. FListSymb->Clear();
  291. }
  292. //---------------------------------------------------------------------------
  293. void __fastcall TVMSM700M_OLD::FRAMEVmsSchList1TvListCellDblClick(TcxCustomGridTableView *Sender,
  294. TcxGridTableDataCellViewInfo *ACellViewInfo, TMouseButton AButton,
  295. TShiftState AShift, bool &AHandled)
  296. {
  297. if (!ACellViewInfo) return;
  298. DisplayInfo();
  299. }
  300. //---------------------------------------------------------------------------
  301. void __fastcall TVMSM700M_OLD::FRAMEVmsSchList1TvListFocusedRecordChanged(TcxCustomGridTableView *Sender,
  302. TcxCustomGridRecord *APrevFocusedRecord, TcxCustomGridRecord *AFocusedRecord,
  303. bool ANewItemRecordFocusingChanged)
  304. {
  305. if (!AFocusedRecord) return;
  306. DisplayInfo();
  307. }
  308. //---------------------------------------------------------------------------
  309. void __fastcall TVMSM700M_OLD::CbSizeTypePropertiesChange(TObject *Sender)
  310. {
  311. BtnSearchClick(NULL);
  312. }
  313. //---------------------------------------------------------------------------
  314. void __fastcall TVMSM700M_OLD::BtnSearchClick(TObject *Sender)
  315. {
  316. RefreshData();
  317. EdFocus->SetFocus();
  318. ChangeEditMode(1);
  319. }
  320. //---------------------------------------------------------------------------
  321. void __fastcall TVMSM700M_OLD::RefreshData()
  322. {
  323. FormClear();
  324. TVmsSizeType *pVmsSizeType = APP_GetVmsSizeTypeObject(CbSizeType);
  325. if (pVmsSizeType == NULL) return;
  326. FVmsTypeCd = pVmsSizeType->TypeCd;
  327. FVmsWidth = pVmsSizeType->Width;
  328. FVmsHeight = pVmsSizeType->Height;
  329. FRAMEVmsSchList1->UpdateList(FVmsTypeCd);
  330. LoadVmsFormList(FVmsTypeCd);
  331. }
  332. //---------------------------------------------------------------------------
  333. void __fastcall TVMSM700M_OLD::FormClear()
  334. {
  335. FSelIdx = -1;
  336. EdVmsNmbr->Clear();
  337. for (int ii = 0; ii < MAX_FORM_SCHED; ii++)
  338. {
  339. if (FListSch[ii]) CMM_ClearGridTableView(FListSch[ii]);
  340. }
  341. GrpSchedule->Caption = lblTitle->Caption;//"▶ 고정 스케줄 설정";
  342. FNewDb = false;
  343. }
  344. //---------------------------------------------------------------------------
  345. void __fastcall TVMSM700M_OLD::DisplayInfo()
  346. {
  347. FormClear();
  348. FSelIdx = CMM_GetRecordIndex(FRAMEVmsSchList1->TvList);
  349. if (FSelIdx < 0) return;
  350. TcxDataController *pGDC = FRAMEVmsSchList1->TvList->DataController;
  351. String sVmsNmbr = VarToStr(pGDC->Values[FSelIdx][FRAMEVmsSchList1->Column01->Index]);
  352. EdVmsNmbr->Text = sVmsNmbr;
  353. GrpSchedule->Caption = lblTitle->Caption + " (" + VarToStr(pGDC->Values[FSelIdx][FRAMEVmsSchList1->Column02->Index]) + ": " + VarToStr(pGDC->Values[FSelIdx][FRAMEVmsSchList1->Column03->Index]) + ")";
  354. LoadVmsScheduleInfo(sVmsNmbr);
  355. ChangeEditMode(3);
  356. }
  357. //---------------------------------------------------------------------------
  358. void __fastcall TVMSM700M_OLD::TvFormCellDblClick(TcxCustomGridTableView *Sender, TcxGridTableDataCellViewInfo *ACellViewInfo,
  359. TMouseButton AButton, TShiftState AShift,
  360. bool &AHandled)
  361. {
  362. if (!ACellViewInfo) return;
  363. int nRow = Sender->DataController->FocusedRecordIndex;
  364. if( nRow <= -1 )
  365. return;
  366. TcxButton *pBtn = NULL;
  367. switch(Sender->Tag)
  368. {
  369. //case enFormFixed: pBtn = BtnListAdd6; break;
  370. default: return;
  371. }
  372. BtnListAddClick((TObject*)pBtn);
  373. }
  374. //---------------------------------------------------------------------------
  375. void __fastcall TVMSM700M_OLD::BtnListAddClick(TObject *Sender)
  376. {
  377. String sUse = "N";
  378. String sTime= "4";
  379. TcxButton *pBtn = (TcxButton*)Sender;
  380. int nTag = pBtn->Tag;
  381. if (nTag < 0 || nTag >= MAX_FORM_SCHED) return;
  382. int nSelIdx = CMM_GetRecordIndex(FRAMEVmsSchList1->TvList);
  383. if (nSelIdx < 0) return;
  384. if (!FListFrm[nTag] || !FListSch[nTag]) return;
  385. TcxGridDataController *pDcFrm = FListFrm[nTag]->DataController;
  386. TcxGridDataController *pDcSch = FListSch[nTag]->DataController;
  387. int nFormIdx = CMM_GetRecordIndex(FListFrm[nTag]);
  388. if (nFormIdx < 0) return;
  389. if (nTag == enFormTraffic)
  390. {
  391. sUse = "N";
  392. }
  393. String sStrDate = "";
  394. String sEndDate = "";
  395. bool bSelected= false;
  396. TVMSSEL0M *pSelDate = new TVMSSEL0M(this);
  397. pSelDate->ShowModal();
  398. bSelected = pSelDate->FSelected;
  399. sStrDate = pSelDate->FStrTime;
  400. sEndDate = pSelDate->FEndTime;
  401. delete pSelDate;
  402. pSelDate = NULL;
  403. if (!bSelected) return;
  404. int nRow = pDcSch->AppendRecord();
  405. pDcSch->Values[nRow][0] = pDcFrm->Values[nFormIdx][0];
  406. pDcSch->Values[nRow][1] = pDcFrm->Values[nFormIdx][1];
  407. pDcSch->Values[nRow][3] = sTime;
  408. pDcSch->Values[nRow][4] = ITSUtil_FormatStr(sStrDate, STR_HHNN);;
  409. pDcSch->Values[nRow][5] = ITSUtil_FormatStr(sEndDate, STR_HHNN);;
  410. pDcSch->Values[nRow][6] = sUse;
  411. pDcSch->Values[nRow][7] = sStrDate;
  412. pDcSch->Values[nRow][8] = sEndDate;
  413. pDcSch->Values[nRow][15] = pDcFrm->Values[nFormIdx][2];
  414. }
  415. //---------------------------------------------------------------------------
  416. void __fastcall TVMSM700M_OLD::BtnListDeleteClick(TObject *Sender)
  417. {
  418. TcxButton *pBtn = (TcxButton*)Sender;
  419. int nTag = pBtn->Tag;
  420. if (nTag >= MAX_FORM_SCHED) return;
  421. int nSelIdx = CMM_GetRecordIndex(FRAMEVmsSchList1->TvList);
  422. if (nSelIdx < 0) return;
  423. if (!FListSch[nTag]) return;
  424. TcxGridDataController *pDcSch = FListSch[nTag]->DataController;
  425. nSelIdx = CMM_GetRecordIndex(FListSch[nTag]);
  426. if (nSelIdx < 0) return;
  427. FListSch[nTag]->DataController->DeleteRecord(nSelIdx);
  428. }
  429. //---------------------------------------------------------------------------
  430. void __fastcall TVMSM700M_OLD::TvGridCellDblClick(TcxCustomGridTableView *Sender, TcxGridTableDataCellViewInfo *ACellViewInfo,
  431. TMouseButton AButton, TShiftState AShift,
  432. bool &AHandled)
  433. {
  434. if (!ACellViewInfo) return;
  435. int nRow = Sender->DataController->FocusedRecordIndex;
  436. if( nRow <= -1 )
  437. return;
  438. TcxGridDataController *pGDC = (TcxGridDataController*)Sender->DataController;
  439. int nColIdx = ACellViewInfo->Item->Index;
  440. //ShowMessage(String(Sender->Tag) + " " + String(nColIdx));
  441. String sFormId = VarToStr(pGDC->Values[nRow][0]);
  442. String sStrDate = VarToStr(pGDC->Values[nRow][7]);
  443. String sEndDate = VarToStr(pGDC->Values[nRow][8]);
  444. if (nColIdx == 4 || nColIdx == 5)
  445. {
  446. //표출기간설정
  447. TVMSSEL0M *pSelDate = new TVMSSEL0M(this);
  448. pSelDate->FStrTime = sStrDate;
  449. pSelDate->FEndTime = sEndDate;
  450. pSelDate->ShowModal();
  451. bool bSelected = pSelDate->FSelected;
  452. sStrDate = pSelDate->FStrTime;
  453. sEndDate = pSelDate->FEndTime;
  454. delete pSelDate;
  455. pSelDate = NULL;
  456. if (bSelected)
  457. {
  458. pGDC->Values[nRow][4] = ITSUtil_FormatStr(sStrDate, STR_HHNN);;
  459. pGDC->Values[nRow][5] = ITSUtil_FormatStr(sEndDate, STR_HHNN);;
  460. pGDC->Values[nRow][7] = sStrDate;
  461. pGDC->Values[nRow][8] = sEndDate;
  462. }
  463. return;
  464. }
  465. if (Sender->Tag != enFormTraffic) return;
  466. if (VarToStr(pGDC->Values[nRow][15]).ToIntDef(0) == 15)
  467. {
  468. //도형식배경 소통정보 폼
  469. Application->MessageBox(FrmLang->lblSchErr1->Caption.c_str(),//L"VMS 교통정보 폼 구간 설정\r\n도형식 배경소통정보 폼은 폼관리 화면에서 설정 가능합니다.",
  470. FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  471. return;
  472. }
  473. }
  474. //---------------------------------------------------------------------------
  475. void __fastcall TVMSM700M_OLD::BtnAllEditClick(TObject *Sender)
  476. {
  477. TcxButton *pBtn = (TcxButton*)Sender;
  478. //등록되어 있는 스케줄 폼을 전체 VMS에 편집하는 기능
  479. int nTag = PgVmsSch->Properties->ActivePage->Tag;
  480. if (nTag < 0 || nTag >= MAX_FORM_SCHED)
  481. {
  482. Application->MessageBox(FrmLang->lblRegErr1->Caption.c_str(),//L"VMS 스케줄 일괄 관리\r\n알수 없는 스케줄 유형입니다.",
  483. FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  484. return;
  485. }
  486. if (!FListSch[nTag]) return;
  487. TcxGridTableView *pTvList = FListSch[nTag];
  488. TcxGridDataController *pGDC;
  489. String sMode = "E";
  490. if (pBtn->Tag == 1)
  491. {
  492. sMode = "A"; //추가
  493. pTvList = FListFrm[nTag];
  494. }
  495. if (!pTvList) return;
  496. pGDC = pTvList->DataController;
  497. int nFormIdx = CMM_GetRecordIndex(pTvList);
  498. if (nFormIdx < 0)
  499. {
  500. Application->MessageBox(FrmLang->lblRegErr2->Caption.c_str(),//L"VMS 스케줄 일괄 관리\r\n등록되어 있는 스케줄 폼을 목록에서 먼저 선택하세요.",
  501. FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  502. return;
  503. }
  504. String sFormId = pGDC->Values[nFormIdx][0];
  505. TVmsSizeType *pVmsSizeType = APP_GetVmsSizeTypeObject(CbSizeType);
  506. if (pVmsSizeType == NULL)
  507. {
  508. Application->MessageBox(FrmLang->lblRegErr3->Caption.c_str(),//L"VMS 스케줄 일괄 관리\r\nVMS 유형을 알수 없습니다. VMS 크기 유형을 먼저 선택하세요.",
  509. FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  510. return;
  511. }
  512. String sVmsType = pVmsSizeType->TypeCd;
  513. TVMSEDT0M *pFrmEdt = new TVMSEDT0M(this);
  514. pFrmEdt->FVmsTypeCd = sVmsType;
  515. pFrmEdt->FScheType = String(nTag);
  516. pFrmEdt->FFormId = sFormId;
  517. pFrmEdt->FMode = sMode;
  518. pFrmEdt->FVmsNmbr = "";
  519. pFrmEdt->ShowModal();
  520. bool bOk = pFrmEdt->FSelected;
  521. delete pFrmEdt;
  522. pFrmEdt = NULL;
  523. if (bOk)
  524. {
  525. DisplayInfo();
  526. }
  527. VmsManager->LoadVmsFormUsage();
  528. FRAMEVmsSchList1->RefreshVmsFormUsage();
  529. }
  530. //---------------------------------------------------------------------------
  531. void __fastcall TVMSM700M_OLD::BtnSaveClick(TObject *Sender)
  532. {
  533. //작업한 스케줄 정보를 저장한다.
  534. if (EdVmsNmbr->Text.Trim().IsEmpty())
  535. {
  536. Application->MessageBox(lblErr2->Caption.c_str(),//L"VMS 고정 스케줄 관리\r\nVMS 목록에서 VMS를 먼저 선택한 후 작업을 진행하세요.",
  537. FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  538. return;
  539. }
  540. bool bUpdate = true;
  541. String sVmsNmbr = EdVmsNmbr->Text.Trim();
  542. if (bUpdate)
  543. {
  544. String sMsg;
  545. sMsg = "VMS: " + sVmsNmbr;
  546. sMsg+= "\r\n" + lblErr3->Caption;//선택한 VMS의 고정 스케줄 정보를 저장하시겠습니까?";
  547. if (Application->MessageBox(sMsg.c_str(), FTitle.c_str(), MB_YESNO|MB_ICONQUESTION|MB_APPLMODAL) != IDYES) return;
  548. }
  549. try
  550. {
  551. ITSDb_GetConnection()->BeginTrans();
  552. DeleteVmsFixedScenario(sVmsNmbr);
  553. for (int ii = 0; ii < MAX_FORM_SCHED; ii++)
  554. {
  555. if (FListSch[ii]) SaveVmsFixedScenario(sVmsNmbr, FListSch[ii]);
  556. }
  557. }
  558. __finally
  559. {
  560. ITSDb_GetConnection()->CommitTrans();
  561. }
  562. Application->MessageBox(lblErr4->Caption.c_str(),//L"VMS 고정 스케줄 관리\r\nVMS 고정 스케줄 정보를 저장 하였습니다.",
  563. FTitle.c_str(), MB_OK|MB_ICONINFORMATION|MB_APPLMODAL);
  564. VmsManager->LoadVmsFormUsage();
  565. FRAMEVmsSchList1->RefreshVmsFormUsage();
  566. CMM_SetGridRow(FRAMEVmsSchList1->CxList, FRAMEVmsSchList1->TvList, sVmsNmbr, FRAMEVmsSchList1->Column01->Index);
  567. DisplayInfo();
  568. }
  569. //---------------------------------------------------------------------------
  570. bool __fastcall TVMSM700M_OLD::SaveVmsFixedScenario(String AVmsNmbr, TcxGridTableView *AListSch)
  571. {
  572. bool bResult = false;
  573. String sQry;
  574. TADOQuery *pADO = NULL;
  575. TcxDataController *pGDC = AListSch->DataController;
  576. String sTypeCd = String(AListSch->Tag);
  577. sQry = "INSERT INTO TB_VMS_DSPL_SCH ( \r\n"
  578. " VMS_CTLR_NMBR, \r\n"
  579. " TRFC_SITU_TYPE_CD, \r\n"
  580. " PHASE, \r\n"
  581. " VMS_FORM_ID, \r\n"
  582. " VMS_FORM_PRRT_CD, \r\n"
  583. " DSPL_HH, \r\n"
  584. " DSPL_STRT_HH, \r\n"
  585. " DSPL_END_HH, \r\n"
  586. " FRST_VMS_IFSC_ID, \r\n"
  587. " SECD_VMS_IFSC_ID, \r\n"
  588. " THIR_VMS_IFSC_ID, \r\n"
  589. " FOUR_VMS_IFSC_ID, \r\n"
  590. " USE_YN \r\n"
  591. " ) \r\n"
  592. " VALUES( \r\n"
  593. " :p01, :p02, :p03, \r\n"
  594. " :p04, :p05, :p06, \r\n"
  595. " :p07, :p08, :p09, \r\n"
  596. " :p10, :p11, :p12, \r\n"
  597. " :p13 \r\n"
  598. " ) \r\n";
  599. try
  600. {
  601. AListSch->BeginUpdate();
  602. pGDC->BeginUpdate();
  603. int nRows = pGDC->RecordCount;
  604. try
  605. {
  606. pADO = new TADOQuery(NULL);
  607. pADO->Close();
  608. pADO->Connection = ITSDb_GetConnection();
  609. ITSDb_SQLText(pADO, sQry);
  610. for (int ii = 0; ii < nRows; ii++)
  611. {
  612. String sFormId = VarToStr(pGDC->Values[ii][0]);
  613. String sDispHH = VarToStr(pGDC->Values[ii][3]);
  614. String sUseYn = VarToStr(pGDC->Values[ii][6]);
  615. String sStrTime = VarToStr(pGDC->Values[ii][7]);
  616. String sEndTime = VarToStr(pGDC->Values[ii][8]);
  617. String sIfscId1 = VarToStr(pGDC->Values[ii][ 9]);
  618. String sIfscId2 = VarToStr(pGDC->Values[ii][10]);
  619. String sIfscId3 = VarToStr(pGDC->Values[ii][11]);
  620. String sIfscId4 = VarToStr(pGDC->Values[ii][12]);
  621. String sPrrtCd = "";
  622. ITSDb_SQLBind(pADO, "p01", AVmsNmbr);
  623. ITSDb_SQLBind(pADO, "p02", sTypeCd);
  624. ITSDb_SQLBind(pADO, "p03", String(ii+1));
  625. ITSDb_SQLBind(pADO, "p04", sFormId);
  626. ITSDb_SQLBind(pADO, "p05", sPrrtCd);
  627. ITSDb_SQLBind(pADO, "p06", sDispHH);
  628. ITSDb_SQLBind(pADO, "p07", sStrTime);
  629. ITSDb_SQLBind(pADO, "p08", sEndTime);
  630. ITSDb_SQLBind(pADO, "p09", sIfscId1);
  631. ITSDb_SQLBind(pADO, "p10", sIfscId2);
  632. ITSDb_SQLBind(pADO, "p11", sIfscId3);
  633. ITSDb_SQLBind(pADO, "p12", sIfscId4);
  634. ITSDb_SQLBind(pADO, "p13", sUseYn);
  635. pADO->ExecSQL();
  636. }
  637. bResult = true;
  638. }
  639. catch(EDatabaseError &E)
  640. {
  641. ITSDb_GetConnection()->RollbackTrans();
  642. DBERRORMSG("VMS Fixed Schedule Save", String(E.ClassName()), E.Message, sQry);
  643. throw Exception(String(E.ClassName()) + E.Message);
  644. }
  645. catch(Exception &e)
  646. {
  647. ITSDb_GetConnection()->RollbackTrans();
  648. DBERRORMSG("VMS Fixed Schedule Save", String(e.ClassName()), e.Message, sQry);
  649. throw Exception(String(e.ClassName()) + e.Message);
  650. }
  651. }
  652. __finally
  653. {
  654. if (pADO)
  655. {
  656. pADO->Close();
  657. delete pADO;
  658. }
  659. pGDC->EndUpdate();
  660. AListSch->EndUpdate();
  661. }
  662. return bResult;
  663. }
  664. //---------------------------------------------------------------------------
  665. bool __fastcall TVMSM700M_OLD::DeleteVmsFixedScenario(String AVmsNmbr)
  666. {
  667. bool bResult = false;
  668. String sQry;
  669. TADOQuery *pADO = NULL;
  670. sQry = "DELETE TB_VMS_DSPL_SCH \r\n"
  671. " WHERE VMS_CTLR_NMBR = :p01 \r\n"
  672. " AND TRFC_SITU_TYPE_CD IN ('5') \r\n";
  673. try
  674. {
  675. try
  676. {
  677. pADO = new TADOQuery(NULL);
  678. pADO->Close();
  679. pADO->Connection = ITSDb_GetConnection();
  680. ITSDb_SQLText(pADO, sQry);
  681. ITSDb_SQLBind(pADO, "p01", AVmsNmbr);
  682. pADO->ExecSQL();
  683. bResult = true;
  684. }
  685. catch(EDatabaseError &E)
  686. {
  687. ITSDb_GetConnection()->RollbackTrans();
  688. DBERRORMSG("VMS Fixed Schedule Delete", String(E.ClassName()), E.Message, sQry);
  689. throw Exception(String(E.ClassName()) + E.Message);
  690. }
  691. catch(Exception &e)
  692. {
  693. ITSDb_GetConnection()->RollbackTrans();
  694. DBERRORMSG("VMS Fixed Schedule Delete", String(e.ClassName()), e.Message, sQry);
  695. throw Exception(String(e.ClassName()) + e.Message);
  696. }
  697. }
  698. __finally
  699. {
  700. if (pADO)
  701. {
  702. pADO->Close();
  703. delete pADO;
  704. }
  705. }
  706. return bResult;
  707. }
  708. //---------------------------------------------------------------------------