VMSM800MF_OLD.cpp 24 KB

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