VMSM700MF.cpp 66 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933
  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. #include "CDSFontF.h"
  9. #include "CDSVmsFormF.h"
  10. #pragma hdrstop
  11. #include "VMSM700MF.h"
  12. #include "VMSM610MF.h"
  13. #include "VMSM620MF.h"
  14. #include "VMSM630MF.h"
  15. #include "VMSSEL0MF.h"
  16. #include "VMSEDT0MF.h"
  17. //---------------------------------------------------------------------------
  18. #pragma package(smart_init)
  19. #pragma link "cxButtons"
  20. #pragma link "cxCalendar"
  21. #pragma link "cxContainer"
  22. #pragma link "cxControls"
  23. #pragma link "cxDropDownEdit"
  24. #pragma link "cxEdit"
  25. #pragma link "cxGraphics"
  26. #pragma link "cxGroupBox"
  27. #pragma link "cxLabel"
  28. #pragma link "cxLookAndFeelPainters"
  29. #pragma link "cxLookAndFeels"
  30. #pragma link "cxMaskEdit"
  31. #pragma link "cxPC"
  32. #pragma link "cxPCdxBarPopupMenu"
  33. #pragma link "cxSpinEdit"
  34. #pragma link "cxSplitter"
  35. #pragma link "cxTextEdit"
  36. #pragma link "cxTimeEdit"
  37. #pragma link "dxSkinBlack"
  38. #pragma link "dxSkinBlue"
  39. #pragma link "dxSkinCaramel"
  40. #pragma link "dxSkinCoffee"
  41. #pragma link "dxSkinDarkRoom"
  42. #pragma link "dxSkinDarkSide"
  43. #pragma link "dxSkinFoggy"
  44. #pragma link "dxSkinGlassOceans"
  45. #pragma link "dxSkiniMaginary"
  46. #pragma link "dxSkinLilian"
  47. #pragma link "dxSkinLiquidSky"
  48. #pragma link "dxSkinLondonLiquidSky"
  49. #pragma link "dxSkinMcSkin"
  50. #pragma link "dxSkinMoneyTwins"
  51. #pragma link "dxSkinOffice2007Black"
  52. #pragma link "dxSkinOffice2007Blue"
  53. #pragma link "dxSkinOffice2007Green"
  54. #pragma link "dxSkinOffice2007Pink"
  55. #pragma link "dxSkinOffice2007Silver"
  56. #pragma link "dxSkinOffice2010Black"
  57. #pragma link "dxSkinOffice2010Blue"
  58. #pragma link "dxSkinOffice2010Silver"
  59. #pragma link "dxSkinsCore"
  60. #pragma link "dxSkinscxPCPainter"
  61. #pragma link "dxSkinSeven"
  62. #pragma link "dxSkinSharp"
  63. #pragma link "dxSkinSilver"
  64. #pragma link "dxSkinStardust"
  65. #pragma link "cxRadioGroup"
  66. #pragma link "cxClasses"
  67. #pragma link "cxCustomData"
  68. #pragma link "cxData"
  69. #pragma link "cxDataStorage"
  70. #pragma link "cxDBData"
  71. #pragma link "cxFilter"
  72. #pragma link "cxGrid"
  73. #pragma link "cxGridCustomTableView"
  74. #pragma link "cxGridCustomView"
  75. #pragma link "cxGridDBTableView"
  76. #pragma link "cxGridLevel"
  77. #pragma link "cxGridTableView"
  78. #pragma link "cxStyles"
  79. #pragma link "cxCheckBox"
  80. #pragma link "cxImage"
  81. #pragma link "cxButtonEdit"
  82. #pragma link "cxBlobEdit"
  83. #pragma link "cxColorComboBox"
  84. #pragma link "cxCalc"
  85. #pragma link "VmsDesignerF"
  86. #pragma link "FRAME_VmsSchListF"
  87. #pragma resource "*.dfm"
  88. TVMSM700M *VMSM700M = NULL;
  89. //---------------------------------------------------------------------------
  90. __fastcall TVMSM700M::TVMSM700M(TComponent* Owner)
  91. : TForm(Owner)
  92. {
  93. LangTrans->Translate(this, ITSDb_GetConnection());
  94. ITSSkin_Load(this);
  95. CMM_LoadForm(g_sFormsDir, this);
  96. FUpdate= false;
  97. FTitle = Caption;//"VMS 자동 스케줄 관리";
  98. FListSymb = new TList;
  99. EditMode = false;
  100. FVMS_SCH_TYPE = "F"; //고정스케쥴
  101. FEN_DSPL_SCH_TYPE = enScheduleFix;
  102. FRAMEVmsSchList1->PnlTop->Visible = false;
  103. FRAMEVmsSchList1->PnlBottom->Visible = false;
  104. FRAMEVmsSchList1->ColAuto->Visible = false;
  105. FRAMEVmsSchList1->ColFix->Visible = true;
  106. FRAMEVmsSchList1->ColBase->Visible = false;
  107. FRAMEVmsSchList1->FEN_DSPL_SCH_TYPE = FEN_DSPL_SCH_TYPE;
  108. FVmsHeight = 64;
  109. for (int ii = 0; ii < eSchTp_max; ii++)
  110. {
  111. FButtonAdd[ii] = (TcxButton*)FindComponent("BtnListAdd"+IntToStr(ii));
  112. FButtonDel[ii] = (TcxButton*)FindComponent("BtnListDelete"+IntToStr(ii));
  113. FTabSheet[ii] = (TcxTabSheet*)FindComponent("TabSheet"+IntToStr(ii));
  114. FListSch[ii] = (TcxGridTableView*)FindComponent("TvGrid"+IntToStr(ii));
  115. FListFrm[ii] = (TcxGridTableView*)FindComponent("TvForm"+IntToStr(ii));
  116. FLabel[ii] = (TcxLabel*)FrmLang->FindComponent("lblSch"+IntToStr(ii));
  117. }
  118. PgVmsSch->Properties->ActivePage = TabSheet3; //홍보
  119. // eSchTp_traffic
  120. if (FTabSheet[eSchTp_traffic])
  121. {
  122. FTabSheet[eSchTp_traffic]->TabVisible = false;
  123. FTabSheet[eSchTp_traffic]->Visible = false;
  124. }
  125. // eSchTp_incident
  126. if (FTabSheet[eSchTp_incident])
  127. {
  128. FTabSheet[eSchTp_incident]->TabVisible = false;
  129. FTabSheet[eSchTp_incident]->Visible = false;
  130. }
  131. // eSchTp_gongsa
  132. if (FTabSheet[eSchTp_gongsa])
  133. {
  134. FTabSheet[eSchTp_gongsa]->TabVisible = false;
  135. FTabSheet[eSchTp_gongsa]->Visible = false;
  136. }
  137. // eSchTp_deture
  138. if (FTabSheet[eSchTp_deture])
  139. {
  140. FTabSheet[eSchTp_deture]->TabVisible = false;
  141. FTabSheet[eSchTp_deture]->Visible = false;
  142. }
  143. // eSchTp_congest
  144. if (FTabSheet[eSchTp_congest])
  145. {
  146. FTabSheet[eSchTp_congest]->TabVisible = false;
  147. FTabSheet[eSchTp_congest]->Visible = false;
  148. }
  149. // eSchTp_safe
  150. if (FTabSheet[eSchTp_safe])
  151. {
  152. FTabSheet[eSchTp_safe]->TabVisible = false;
  153. FTabSheet[eSchTp_safe]->Visible = false;
  154. }
  155. #if 1
  156. // eSchTp_video
  157. if (FTabSheet[eSchTp_video])
  158. {
  159. FTabSheet[eSchTp_video]->TabVisible = false;
  160. FTabSheet[eSchTp_video]->Visible = false;
  161. }
  162. // eSchTp_stream
  163. if (FTabSheet[eSchTp_stream])
  164. {
  165. FTabSheet[eSchTp_stream]->TabVisible = false;
  166. FTabSheet[eSchTp_stream]->Visible = false;
  167. }
  168. #endif
  169. #if 0
  170. // eSchTp_atmp
  171. if (FTabSheet[eSchTp_atmp])
  172. {
  173. FTabSheet[eSchTp_atmp]->TabVisible = false;
  174. FTabSheet[eSchTp_atmp]->Visible = false;
  175. }
  176. #endif
  177. #if 0
  178. // eSchTp_evehicle
  179. if (FTabSheet[eSchTp_evehicle])
  180. {
  181. #ifdef USE_EVEHICLE
  182. FTabSheet[eSchTp_evehicle]->TabVisible = true;
  183. FTabSheet[eSchTp_evehicle]->Visible = true;
  184. #else
  185. FTabSheet[eSchTp_evehicle]->TabVisible = false;
  186. FTabSheet[eSchTp_evehicle]->Visible = false;
  187. #endif
  188. }
  189. #endif
  190. for (int ii = 0; ii < eSchTp_max; ii++)
  191. {
  192. if (FTabSheet[ii] && (FTabSheet[ii]->TabVisible == false))
  193. {
  194. FListSch[ii] = NULL;
  195. FListFrm[ii] = NULL;
  196. }
  197. if (FListSch[ii]) InitTcxList(FListSch[ii]);
  198. if (FListFrm[ii]) InitTcxList(FListFrm[ii]);
  199. }
  200. }
  201. //---------------------------------------------------------------------------
  202. void __fastcall TVMSM700M::InitTcxList(TcxGridTableView *AView)
  203. {
  204. AView->OptionsView->DataRowHeight = 0;
  205. AView->OptionsView->CellAutoHeight = true;
  206. AView->OptionsView->Indicator = false;
  207. AView->OptionsCustomize->ColumnMoving = false;
  208. AView->OptionsCustomize->ColumnSorting = false;
  209. AView->Columns[0]->Width = 40;
  210. AView->Columns[0]->Options->HorzSizing = false;
  211. AView->Columns[1]->Width = 330;
  212. }
  213. //---------------------------------------------------------------------------
  214. void __fastcall TVMSM700M::CommClose()
  215. {
  216. try
  217. {
  218. if (m_pEdtDesigner)
  219. {
  220. delete m_pEdtDesigner;
  221. m_pEdtDesigner = NULL;
  222. }
  223. APP_DelVmsSizeCombo(CbSizeType);
  224. ClearSymbloList();
  225. SAFE_DELETE(FListSymb);
  226. CMM_SaveForm(g_sFormsDir, this);
  227. }
  228. catch(...)
  229. {
  230. }
  231. }
  232. //---------------------------------------------------------------------------
  233. void __fastcall TVMSM700M::FormCreate(TObject *Sender)
  234. {
  235. m_pEdtDesigner = new TVmsFormDesigner(PnlEditForm);
  236. FOR_STL(TCDSFontColor*, pObj, CDSFontManager->FColors)
  237. {
  238. m_pEdtDesigner->InitFontColor(pObj->VMS_FONT_COLR_CD, (TColor)pObj->VMS_FONT_COLR_VAL);
  239. }
  240. }
  241. //---------------------------------------------------------------------------
  242. void __fastcall TVMSM700M::FormShow(TObject *Sender)
  243. {
  244. Refresh();
  245. FormInit();
  246. ChangeEditMode(1);
  247. TmrShow->Enabled = true;
  248. }
  249. //---------------------------------------------------------------------------
  250. void __fastcall TVMSM700M::FormInit()
  251. {
  252. for (int ii = 0; ii < eSchTp_max; ii++)
  253. {
  254. if (FListSch[ii]) FListSch[ii]->OptionsView->NoDataToDisplayInfoText = FrmLang->lblNoSchedule->Caption;//"<등록되어 있는 스케줄 정보가 없습니다>";
  255. if (FListFrm[ii]) FListFrm[ii]->OptionsView->NoDataToDisplayInfoText = FrmLang->lblNoForm->Caption;//"<등록되어 있는 폼 정보가 없습니다>";
  256. }
  257. //VMS사이즈
  258. APP_FillVmsSizeType(CbSizeType, false);
  259. VmsCtlrManager->LoadVmsFormUsage();
  260. FRAMEVmsSchList1->RefreshVmsFormUsage();
  261. FNewDb = false;
  262. }
  263. //---------------------------------------------------------------------------
  264. void __fastcall TVMSM700M::TmrShowTimer(TObject *Sender)
  265. {
  266. TmrShow->Enabled = false;
  267. }
  268. //---------------------------------------------------------------------------
  269. void __fastcall TVMSM700M::BtnCloseClick(TObject *Sender)
  270. {
  271. Close();
  272. }
  273. //---------------------------------------------------------------------------
  274. void __fastcall TVMSM700M::FormClose(TObject *Sender, TCloseAction &Action)
  275. {
  276. CommClose();
  277. VMSM700M = NULL;
  278. Action = caFree;
  279. }
  280. //---------------------------------------------------------------------------
  281. void __fastcall TVMSM700M::FormCloseQuery(TObject *Sender, bool &CanClose)
  282. {
  283. if (FUpdate)
  284. {
  285. POST_MSG(Application->MainForm->Handle, WM_DATABASE_REFRESH, WP_MSG_14, 0);
  286. }
  287. }
  288. //---------------------------------------------------------------------------
  289. void __fastcall TVMSM700M::ChangeEditMode(int AEdit)
  290. {
  291. }
  292. //---------------------------------------------------------------------------
  293. void __fastcall TVMSM700M::ClearSymbloList()
  294. {
  295. for(int ii = 0; ii < FListSymb->Count; ii++)
  296. {
  297. Graphics::TBitmap *bitmap = (Graphics::TBitmap *)FListSymb->Items[ii];
  298. delete bitmap;
  299. }
  300. FListSymb->Clear();
  301. }
  302. //---------------------------------------------------------------------------
  303. void __fastcall TVMSM700M::FRAMEVmsSchList1TvListCellDblClick(TcxCustomGridTableView *Sender,
  304. TcxGridTableDataCellViewInfo *ACellViewInfo, TMouseButton AButton,
  305. TShiftState AShift, bool &AHandled)
  306. {
  307. if (!ACellViewInfo) return;
  308. DisplayInfo();
  309. }
  310. //---------------------------------------------------------------------------
  311. void __fastcall TVMSM700M::FRAMEVmsSchList1TvListFocusedRecordChanged(TcxCustomGridTableView *Sender,
  312. TcxCustomGridRecord *APrevFocusedRecord, TcxCustomGridRecord *AFocusedRecord,
  313. bool ANewItemRecordFocusingChanged)
  314. {
  315. if (!AFocusedRecord) return;
  316. DisplayInfo();
  317. }
  318. //---------------------------------------------------------------------------
  319. void __fastcall TVMSM700M::CbSizeTypePropertiesChange(TObject *Sender)
  320. {
  321. BtnSearchClick(NULL);
  322. }
  323. //---------------------------------------------------------------------------
  324. void __fastcall TVMSM700M::BtnSearchClick(TObject *Sender)
  325. {
  326. RefreshData();
  327. EdFocus->SetFocus();
  328. ChangeEditMode(1);
  329. }
  330. //---------------------------------------------------------------------------
  331. void __fastcall TVMSM700M::RefreshData()
  332. {
  333. FormClear();
  334. TVmsSizeType *pVmsSizeType = APP_GetVmsSizeTypeObject(CbSizeType);
  335. if (pVmsSizeType == NULL) return;
  336. FVmsTypeCd = pVmsSizeType->TypeCd;
  337. FVmsWidth = pVmsSizeType->Width;
  338. FVmsHeight = pVmsSizeType->Height;
  339. PnlEdtBack->Width = FVmsWidth+4;
  340. PnlEdtBack->Height= FVmsHeight+4;
  341. m_pEdtDesigner->Clear();
  342. m_pEdtDesigner->SizeType = FVmsTypeCd;
  343. m_pEdtDesigner->SetSize(FVmsWidth, FVmsHeight);
  344. m_pEdtDesigner->SetPos(0, 0);
  345. m_pEdtDesigner->BkColorCode = "0";
  346. m_pEdtDesigner->EditMode = true;
  347. m_pEdtDesigner->Show();
  348. FRAMEVmsSchList1->UpdateList(FVmsTypeCd);
  349. LoadVmsFormList(FVmsTypeCd);
  350. }
  351. //---------------------------------------------------------------------------
  352. void __fastcall TVMSM700M::FormClear()
  353. {
  354. FSelIdx = -1;
  355. EdVmsNmbr->Clear();
  356. GrpSchedule->Caption = lblTitle->Caption;//"▶ 자동 스케줄 설정";
  357. for (int ii = 0; ii < eSchTp_max; ii++)
  358. {
  359. if (FListSch[ii]) CMM_ClearGridTableView(FListSch[ii]);
  360. if (FTabSheet[ii] && FLabel[ii]) FTabSheet[ii]->Caption = " " + FLabel[ii]->Caption + " ";
  361. }
  362. FNewDb = false;
  363. }
  364. //---------------------------------------------------------------------------
  365. void __fastcall TVMSM700M::DisplayInfo()
  366. {
  367. FormClear();
  368. FSelIdx = CMM_GetRecordIndex(FRAMEVmsSchList1->TvList);
  369. if (FSelIdx < 0) return;
  370. TcxDataController *pGDC = FRAMEVmsSchList1->TvList->DataController;
  371. String sVmsNmbr = VarToStr(pGDC->Values[FSelIdx][FRAMEVmsSchList1->Column01->Index]);
  372. EdVmsNmbr->Text = sVmsNmbr;
  373. GrpSchedule->Caption = lblTitle->Caption + " (" + VarToStr(pGDC->Values[FSelIdx][FRAMEVmsSchList1->Column02->Index]) + ": " + VarToStr(pGDC->Values[FSelIdx][FRAMEVmsSchList1->Column03->Index]) + ")";
  374. LoadVmsScheduleInfo(sVmsNmbr);
  375. //DrawTrafficScenarioForm();
  376. //DrawVideoStreamScenarioForm(eSchTp_video);
  377. //DrawVideoStreamScenarioForm(eSchTp_stream);
  378. TVmsCtlr *pObj = VmsCtlrManager->FLists.Find(sVmsNmbr);
  379. if (pObj)
  380. {
  381. PSCHEDULE_USAGE Use = &pObj->FormCnt[FEN_DSPL_SCH_TYPE];
  382. for (int ii = 0; ii < eSchTp_max; ii++)
  383. {
  384. if (FTabSheet[ii] && FLabel[ii])
  385. {
  386. FTabSheet[ii]->Caption = " " + FLabel[ii]->Caption + " - " + String(Use->Use[ii]) + "/" + String(Use->Total[ii]) + " ";
  387. }
  388. }
  389. }
  390. ChangeEditMode(3);
  391. }
  392. //---------------------------------------------------------------------------
  393. void __fastcall TVMSM700M::TvFormCellDblClick(TcxCustomGridTableView *Sender, TcxGridTableDataCellViewInfo *ACellViewInfo,
  394. TMouseButton AButton, TShiftState AShift,
  395. bool &AHandled)
  396. {
  397. if (!ACellViewInfo) return;
  398. int nRow = Sender->DataController->FocusedRecordIndex;
  399. if( nRow <= -1 )
  400. return;
  401. if (Sender->Tag >= 0 && Sender->Tag < eSchTp_max)
  402. {
  403. if (FButtonAdd[Sender->Tag])
  404. {
  405. BtnListAdd0Click((TObject*)FButtonAdd[Sender->Tag]);
  406. }
  407. }
  408. }
  409. //---------------------------------------------------------------------------
  410. void __fastcall TVMSM700M::BtnListAdd0Click(TObject *Sender)
  411. {
  412. String sUse = "N";
  413. String sTime= "4";
  414. TcxButton *pBtn = (TcxButton*)Sender;
  415. int nTag = pBtn->Tag;
  416. if (nTag < 0 || nTag >= eSchTp_max) return;
  417. int nSelIdx = CMM_GetRecordIndex(FRAMEVmsSchList1->TvList);
  418. if (nSelIdx < 0) return;
  419. if (!FListFrm[nTag] || !FListSch[nTag]) return;
  420. TcxGridDataController *pDcFrm = FListFrm[nTag]->DataController;
  421. TcxGridDataController *pDcSch = FListSch[nTag]->DataController;
  422. int nFormIdx = CMM_GetRecordIndex(FListFrm[nTag]);
  423. if (nFormIdx < 0) return;
  424. if (nTag == eSchTp_traffic || nTag == eSchTp_video || nTag == eSchTp_stream)
  425. {
  426. sUse = "N";
  427. }
  428. if (nTag == eSchTp_video)
  429. {
  430. sTime= "0";
  431. }
  432. String sStrDate = "";
  433. String sEndDate = "";
  434. bool bSelected= false;
  435. TVMSSEL0M *pSelDate = new TVMSSEL0M(this);
  436. pSelDate->FCurrDay = true;
  437. pSelDate->ShowModal();
  438. bSelected = pSelDate->FSelected;
  439. sStrDate = pSelDate->FStrTime;
  440. sEndDate = pSelDate->FEndTime;
  441. delete pSelDate;
  442. pSelDate = NULL;
  443. if (!bSelected) return;
  444. int nRow = pDcSch->AppendRecord();
  445. pDcSch->Values[nRow][ 0] = VarToStr(pDcFrm->Values[nFormIdx][0]);
  446. pDcSch->Values[nRow][ 1] = (pDcFrm->Values[nFormIdx][1]); //이미지데이터임
  447. pDcSch->Values[nRow][ 3] = sTime;
  448. pDcSch->Values[nRow][ 4] = ITSUtil_FormatStr(sStrDate, STR_HHNN);;
  449. pDcSch->Values[nRow][ 5] = ITSUtil_FormatStr(sEndDate, STR_HHNN);;
  450. pDcSch->Values[nRow][ 6] = sUse;
  451. pDcSch->Values[nRow][ 7] = sStrDate;
  452. pDcSch->Values[nRow][ 8] = sEndDate;
  453. pDcSch->Values[nRow][15] = VarToStr(pDcFrm->Values[nFormIdx][2]);
  454. pDcSch->Values[nRow][20] = VarToStr(pDcFrm->Values[nFormIdx][3]);
  455. pDcSch->Values[nRow][21] = VarToStr(pDcFrm->Values[nFormIdx][4]);
  456. }
  457. //---------------------------------------------------------------------------
  458. void __fastcall TVMSM700M::BtnListDelete0Click(TObject *Sender)
  459. {
  460. TcxButton *pBtn = (TcxButton*)Sender;
  461. int nTag = pBtn->Tag;
  462. if (nTag >= eSchTp_max) return;
  463. int nSelIdx = CMM_GetRecordIndex(FRAMEVmsSchList1->TvList);
  464. if (nSelIdx < 0) return;
  465. if (!FListSch[nTag]) return;
  466. TcxGridDataController *pDcSch = FListSch[nTag]->DataController;
  467. nSelIdx = CMM_GetRecordIndex(FListSch[nTag]);
  468. if (nSelIdx < 0) return;
  469. FListSch[nTag]->DataController->DeleteRecord(nSelIdx);
  470. }
  471. //---------------------------------------------------------------------------
  472. void __fastcall TVMSM700M::TvGridCellDblClick(TcxCustomGridTableView *Sender, TcxGridTableDataCellViewInfo *ACellViewInfo,
  473. TMouseButton AButton, TShiftState AShift,
  474. bool &AHandled)
  475. {
  476. if (!ACellViewInfo) return;
  477. int nRow = Sender->DataController->FocusedRecordIndex;
  478. if( nRow <= -1 )
  479. return;
  480. TcxGridDataController *pGDC = (TcxGridDataController*)Sender->DataController;
  481. int nColIdx = ACellViewInfo->Item->Index;
  482. //ShowMessage(String(Sender->Tag) + " " + String(nColIdx));
  483. String sFormId = VarToStr(pGDC->Values[nRow][0]);
  484. String sStrDate = VarToStr(pGDC->Values[nRow][7]);
  485. String sEndDate = VarToStr(pGDC->Values[nRow][8]);
  486. if (nColIdx == 4 || nColIdx == 5)
  487. {
  488. //표출기간설정
  489. TVMSSEL0M *pSelDate = new TVMSSEL0M(this);
  490. pSelDate->FStrTime = sStrDate;
  491. pSelDate->FEndTime = sEndDate;
  492. pSelDate->ShowModal();
  493. bool bSelected = pSelDate->FSelected;
  494. sStrDate = pSelDate->FStrTime;
  495. sEndDate = pSelDate->FEndTime;
  496. delete pSelDate;
  497. pSelDate = NULL;
  498. if (bSelected)
  499. {
  500. pGDC->Values[nRow][4] = ITSUtil_FormatStr(sStrDate, STR_HHNN);;
  501. pGDC->Values[nRow][5] = ITSUtil_FormatStr(sEndDate, STR_HHNN);;
  502. pGDC->Values[nRow][7] = sStrDate;
  503. pGDC->Values[nRow][8] = sEndDate;
  504. }
  505. return;
  506. }
  507. if (Sender->Tag == eSchTp_traffic)
  508. {
  509. if (VarToStr(pGDC->Values[nRow][15]).ToIntDef(0) == 15)
  510. {
  511. //도형식배경 소통정보 폼
  512. Application->MessageBox(FrmLang->lblSchErr1->Caption.c_str(),//L"VMS 교통정보 폼 구간 설정\r\n도형식 배경소통정보 폼은 폼관리 화면에서 설정 가능합니다.",
  513. FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  514. return;
  515. }
  516. // 소통정보 폼 정보구간 설정
  517. TVMSM610M *pIfscFrm = new TVMSM610M(this);
  518. pIfscFrm->FVmsNmbr = EdVmsNmbr->Text;
  519. pIfscFrm->FFormId = sFormId;
  520. pIfscFrm->FVmsTypeCd = FVmsTypeCd;
  521. pIfscFrm->FVmsWidth = FVmsWidth;
  522. pIfscFrm->FVmsHeight = FVmsHeight;
  523. pIfscFrm->FIfscId[0] = VarToStr(pGDC->Values[nRow][9]);
  524. pIfscFrm->FIfscId[1] = VarToStr(pGDC->Values[nRow][10]);
  525. pIfscFrm->FIfscId[2] = VarToStr(pGDC->Values[nRow][11]);
  526. pIfscFrm->FIfscId[3] = VarToStr(pGDC->Values[nRow][12]);
  527. pIfscFrm->FIfscId[4] = VarToStr(pGDC->Values[nRow][16]);
  528. pIfscFrm->FIfscId[5] = VarToStr(pGDC->Values[nRow][17]);
  529. pIfscFrm->FIfscId[6] = VarToStr(pGDC->Values[nRow][18]);
  530. pIfscFrm->FIfscId[7] = VarToStr(pGDC->Values[nRow][19]);
  531. //pIfscFrm->FVmsType = VarToStr(pGDC->Values[nRow][13]).ToIntDef(0);
  532. pIfscFrm->FFormColor = VarToStr(pGDC->Values[nRow][14]);
  533. pIfscFrm->FFormType = VarToStr(pGDC->Values[nRow][15]).ToIntDef(0);
  534. pIfscFrm->ShowModal();
  535. if (pIfscFrm->FSelected)
  536. {
  537. TStream *pImgStream = new TMemoryStream();
  538. try
  539. {
  540. void *p;
  541. Variant v;
  542. pIfscFrm->ImgForm->Picture->Bitmap->SaveToStream(pImgStream);
  543. int aBound[]={0, pImgStream->Size - 1};
  544. v = VarArrayCreate(aBound, 1, varByte);
  545. p = VarArrayLock(v);
  546. pImgStream->Position = 0;
  547. pImgStream->Read(p, pImgStream->Size);
  548. VarArrayUnlock(v);
  549. pGDC->Values[nRow][1] = v;
  550. }
  551. __finally
  552. {
  553. SAFE_DELETE(pImgStream);
  554. }
  555. pGDC->Values[nRow][ 9] = pIfscFrm->FIfscId[0];
  556. pGDC->Values[nRow][10] = pIfscFrm->FIfscId[1];
  557. pGDC->Values[nRow][11] = pIfscFrm->FIfscId[2];
  558. pGDC->Values[nRow][12] = pIfscFrm->FIfscId[3];
  559. pGDC->Values[nRow][16] = pIfscFrm->FIfscId[4];
  560. pGDC->Values[nRow][17] = pIfscFrm->FIfscId[5];
  561. pGDC->Values[nRow][18] = pIfscFrm->FIfscId[6];
  562. pGDC->Values[nRow][19] = pIfscFrm->FIfscId[7];
  563. }
  564. delete pIfscFrm;
  565. pIfscFrm = NULL;
  566. }
  567. if (Sender->Tag == eSchTp_video)
  568. {
  569. TVMSM620M *pVideoFrm = new TVMSM620M(this);
  570. pVideoFrm->FVmsNmbr = EdVmsNmbr->Text;
  571. pVideoFrm->FFormId = sFormId;
  572. pVideoFrm->FVmsTypeCd = FVmsTypeCd;
  573. pVideoFrm->FVmsWidth = FVmsWidth;
  574. pVideoFrm->FVmsHeight = FVmsHeight;
  575. pVideoFrm->FSymbLibNmbr = VarToStr(pGDC->Values[nRow][20]);
  576. pVideoFrm->FStreamAddr = VarToStr(pGDC->Values[nRow][21]);
  577. //pVideoFrm->FVmsType = VarToStr(pGDC->Values[nRow][13]).ToIntDef(0);
  578. pVideoFrm->FFormColor = VarToStr(pGDC->Values[nRow][14]);
  579. pVideoFrm->FFormType = VarToStr(pGDC->Values[nRow][15]).ToIntDef(0);
  580. pVideoFrm->ShowModal();
  581. if (pVideoFrm->FSelected)
  582. {
  583. TStream *pImgStream = new TMemoryStream();
  584. try
  585. {
  586. void *p;
  587. Variant v;
  588. pVideoFrm->ImgForm->Picture->Bitmap->SaveToStream(pImgStream);
  589. int aBound[]={0, pImgStream->Size - 1};
  590. v = VarArrayCreate(aBound, 1, varByte);
  591. p = VarArrayLock(v);
  592. pImgStream->Position = 0;
  593. pImgStream->Read(p, pImgStream->Size);
  594. VarArrayUnlock(v);
  595. pGDC->Values[nRow][1] = v;
  596. }
  597. __finally
  598. {
  599. SAFE_DELETE(pImgStream);
  600. }
  601. pGDC->Values[nRow][20] = pVideoFrm->FSymbLibNmbr;
  602. pGDC->Values[nRow][21] = pVideoFrm->FStreamAddr;
  603. }
  604. delete pVideoFrm;
  605. pVideoFrm = NULL;
  606. }
  607. if (Sender->Tag == eSchTp_stream)
  608. {
  609. TVMSM630M *pStreamFrm = new TVMSM630M(this);
  610. pStreamFrm->FVmsNmbr = EdVmsNmbr->Text;
  611. pStreamFrm->FFormId = sFormId;
  612. pStreamFrm->FVmsTypeCd = FVmsTypeCd;
  613. pStreamFrm->FVmsWidth = FVmsWidth;
  614. pStreamFrm->FVmsHeight = FVmsHeight;
  615. pStreamFrm->FSymbLibNmbr = VarToStr(pGDC->Values[nRow][20]);
  616. pStreamFrm->FStreamAddr = VarToStr(pGDC->Values[nRow][21]);
  617. //pStreamFrm->FVmsType = VarToStr(pGDC->Values[nRow][13]).ToIntDef(0);
  618. pStreamFrm->FFormColor = VarToStr(pGDC->Values[nRow][14]);
  619. pStreamFrm->FFormType = VarToStr(pGDC->Values[nRow][15]).ToIntDef(0);
  620. pStreamFrm->ShowModal();
  621. if (pStreamFrm->FSelected)
  622. {
  623. TStream *pImgStream = new TMemoryStream();
  624. try
  625. {
  626. void *p;
  627. Variant v;
  628. pStreamFrm->ImgForm->Picture->Bitmap->SaveToStream(pImgStream);
  629. int aBound[]={0, pImgStream->Size - 1};
  630. v = VarArrayCreate(aBound, 1, varByte);
  631. p = VarArrayLock(v);
  632. pImgStream->Position = 0;
  633. pImgStream->Read(p, pImgStream->Size);
  634. VarArrayUnlock(v);
  635. pGDC->Values[nRow][1] = v;
  636. }
  637. __finally
  638. {
  639. SAFE_DELETE(pImgStream);
  640. }
  641. pGDC->Values[nRow][20] = pStreamFrm->FSymbLibNmbr;
  642. pGDC->Values[nRow][21] = pStreamFrm->FStreamAddr;
  643. }
  644. delete pStreamFrm;
  645. pStreamFrm = NULL;
  646. }
  647. }
  648. //---------------------------------------------------------------------------
  649. void __fastcall TVMSM700M::BtnAllEditClick(TObject *Sender)
  650. {
  651. TcxButton *pBtn = (TcxButton*)Sender;
  652. //등록되어 있는 스케줄 폼을 전체 VMS에 편집하는 기능
  653. int nTag = PgVmsSch->Properties->ActivePage->Tag;
  654. if (nTag < 0 || nTag >= eSchTp_max)
  655. {
  656. Application->MessageBox(FrmLang->lblRegErr1->Caption.c_str(),//L"VMS 스케줄 일괄 관리\r\n알수 없는 스케줄 유형입니다.",
  657. FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  658. return;
  659. }
  660. if (!FListSch[nTag]) return;
  661. TcxGridTableView *pTvList = FListSch[nTag];
  662. TcxGridDataController *pGDC;
  663. String sMode = "E";
  664. if (pBtn->Tag == 1)
  665. {
  666. sMode = "A"; //추가
  667. pTvList = FListFrm[nTag];
  668. }
  669. if (!pTvList) return;
  670. pGDC = pTvList->DataController;
  671. int nFormIdx = CMM_GetRecordIndex(pTvList);
  672. if (nFormIdx < 0)
  673. {
  674. Application->MessageBox(FrmLang->lblRegErr1->Caption.c_str(),//L"VMS 스케줄 일괄 관리\r\n등록되어 있는 스케줄 폼을 목록에서 먼저 선택하세요.",
  675. FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  676. return;
  677. }
  678. String sSymbLibNmbr;
  679. String sStreamAddr;
  680. if (pBtn->Tag == 1)
  681. {
  682. sSymbLibNmbr = VarToStr(pGDC->Values[nFormIdx][3]);
  683. sStreamAddr = VarToStr(pGDC->Values[nFormIdx][4]);
  684. }
  685. else
  686. {
  687. sSymbLibNmbr = VarToStr(pGDC->Values[nFormIdx][20]);
  688. sStreamAddr = VarToStr(pGDC->Values[nFormIdx][21]);
  689. }
  690. String sFormId = VarToStr(pGDC->Values[nFormIdx][0]);
  691. TVmsSizeType *pVmsSizeType = APP_GetVmsSizeTypeObject(CbSizeType);
  692. if (pVmsSizeType == NULL)
  693. {
  694. Application->MessageBox(FrmLang->lblRegErr3->Caption.c_str(),//L"VMS 스케줄 일괄 관리\r\nVMS 유형을 알수 없습니다. VMS 크기 유형을 먼저 선택하세요.",
  695. FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  696. return;
  697. }
  698. String sVmsType = pVmsSizeType->TypeCd;
  699. TVMSEDT0M *pFrmEdt = new TVMSEDT0M(this);
  700. pFrmEdt->FVmsTypeCd = sVmsType;
  701. pFrmEdt->FScheType = FVMS_SCH_TYPE;
  702. pFrmEdt->FScheFormType = String(nTag);
  703. pFrmEdt->FFormId = sFormId;
  704. pFrmEdt->FMode = sMode;
  705. pFrmEdt->FVmsNmbr = "";
  706. pFrmEdt->FSymbLibNmbr = sSymbLibNmbr;
  707. pFrmEdt->FStreamAddr = sStreamAddr;
  708. pFrmEdt->ShowModal();
  709. bool bOk = pFrmEdt->FSelected;
  710. delete pFrmEdt;
  711. pFrmEdt = NULL;
  712. if (bOk)
  713. {
  714. DisplayInfo();
  715. }
  716. VmsCtlrManager->LoadVmsFormUsage();
  717. FRAMEVmsSchList1->RefreshVmsFormUsage();
  718. }
  719. //---------------------------------------------------------------------------
  720. void __fastcall TVMSM700M::BtnSaveClick(TObject *Sender)
  721. {
  722. //작업한 스케줄 정보를 저장한다.
  723. if (EdVmsNmbr->Text.Trim().IsEmpty())
  724. {
  725. Application->MessageBox(lblErr2->Caption.c_str(),//L"VMS 자동 스케줄 관리\r\nVMS 목록에서 VMS를 먼저 선택한 후 작업을 진행하세요.",
  726. FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  727. return;
  728. }
  729. bool bUpdate = true;
  730. String sVmsNmbr = EdVmsNmbr->Text.Trim();
  731. if (bUpdate)
  732. {
  733. String sMsg;
  734. sMsg = "VMS: " + sVmsNmbr;
  735. sMsg+= "\r\n" + lblErr3->Caption;//선택한 VMS의 자동 스케줄 정보를 저장하시겠습니까?";
  736. if (Application->MessageBox(sMsg.c_str(), FTitle.c_str(), MB_YESNO|MB_ICONQUESTION|MB_APPLMODAL) != IDYES) return;
  737. }
  738. try
  739. {
  740. ITSDb_GetConnection()->BeginTrans();
  741. DeleteVmsScenario(sVmsNmbr);
  742. for (int ii = 0; ii < eSchTp_max; ii++)
  743. {
  744. if (FListSch[ii])
  745. {
  746. //ShowMessage(String(ii) + " " + String(FListSch[ii]->Tag));
  747. SaveVmsScenario(sVmsNmbr, FListSch[ii]);
  748. }
  749. }
  750. }
  751. __finally
  752. {
  753. ITSDb_GetConnection()->CommitTrans();
  754. }
  755. Application->MessageBox(lblErr4->Caption.c_str(),//L"VMS 자동 스케줄 관리\r\nVMS 자동 스케줄 정보를 저장 하였습니다.",
  756. FTitle.c_str(), MB_OK|MB_ICONINFORMATION|MB_APPLMODAL);
  757. VmsCtlrManager->LoadVmsFormUsage();
  758. FRAMEVmsSchList1->RefreshVmsFormUsage();
  759. CMM_SetGridRow(FRAMEVmsSchList1->CxList, FRAMEVmsSchList1->TvList, sVmsNmbr, FRAMEVmsSchList1->Column01->Index);
  760. DisplayInfo();
  761. }
  762. //---------------------------------------------------------------------------
  763. bool __fastcall TVMSM700M::SaveVmsScenario(String AVmsNmbr, TcxGridTableView *AListSch)
  764. {
  765. bool bResult = false;
  766. String sQry;
  767. TADOQuery *pADO = NULL;
  768. TcxDataController *pGDC = AListSch->DataController;
  769. String sTypeCd = String(AListSch->Tag);
  770. sQry = "INSERT INTO TB_VMS_DSPL_SCH ( \r\n"
  771. " VMS_CTLR_NMBR, \r\n"
  772. " VMS_SCH_TYPE, \r\n"
  773. " VMS_SCH_FORM_TYPE, \r\n"
  774. " PHASE, \r\n"
  775. " VMS_FORM_ID, \r\n"
  776. " DSPL_STRT_HH, \r\n"
  777. " DSPL_END_HH, \r\n"
  778. " DSPL_HH, \r\n"
  779. " FRST_VMS_IFSC_ID, \r\n"
  780. " SECD_VMS_IFSC_ID, \r\n"
  781. " THIR_VMS_IFSC_ID, \r\n"
  782. " FOUR_VMS_IFSC_ID, \r\n"
  783. " FRST_IMG_IFSC_ID, \r\n"
  784. " SECD_IMG_IFSC_ID, \r\n"
  785. " THIR_IMG_IFSC_ID, \r\n"
  786. " FOUR_IMG_IFSC_ID, \r\n"
  787. " SYMB_LIB_NMBR, \r\n"
  788. " STRM_ADDR, \r\n"
  789. " USE_YN \r\n"
  790. " ) \r\n"
  791. " VALUES( \r\n"
  792. " :p01, :p02, :p03, \r\n"
  793. " :p04, :p05, :p06, \r\n"
  794. " :p07, :p08, :p09, \r\n"
  795. " :p10, :p11, :p12, \r\n"
  796. " :p13, :p14, :p15, \r\n"
  797. " :p16, :p17, :p18, \r\n"
  798. " :p19 \r\n"
  799. " ) \r\n";
  800. try
  801. {
  802. AListSch->BeginUpdate();
  803. pGDC->BeginUpdate();
  804. int nRows = pGDC->RecordCount;
  805. try
  806. {
  807. pADO = new TADOQuery(NULL);
  808. pADO->Close();
  809. pADO->Connection = ITSDb_GetConnection();
  810. ITSDb_SQLText(pADO, sQry);
  811. for (int ii = 0; ii < nRows; ii++)
  812. {
  813. String sFormId = VarToStr(pGDC->Values[ii][0]);
  814. String sDispHH = VarToStr(pGDC->Values[ii][3]);
  815. String sUseYn = VarToStr(pGDC->Values[ii][6]);
  816. String sStrTime = VarToStr(pGDC->Values[ii][7]);
  817. String sEndTime = VarToStr(pGDC->Values[ii][8]);
  818. String sIfscId1 = VarToStr(pGDC->Values[ii][ 9]);
  819. String sIfscId2 = VarToStr(pGDC->Values[ii][10]);
  820. String sIfscId3 = VarToStr(pGDC->Values[ii][11]);
  821. String sIfscId4 = VarToStr(pGDC->Values[ii][12]);
  822. String sImgIfscId1 = VarToStr(pGDC->Values[ii][16]);
  823. String sImgIfscId2 = VarToStr(pGDC->Values[ii][17]);
  824. String sImgIfscId3 = VarToStr(pGDC->Values[ii][18]);
  825. String sImgIfscId4 = VarToStr(pGDC->Values[ii][19]);
  826. String sSymbLibNmbr = VarToStr(pGDC->Values[ii][20]);
  827. String sStrmAddr = VarToStr(pGDC->Values[ii][21]);
  828. ITSDb_SQLBind(pADO, "p01", AVmsNmbr);
  829. ITSDb_SQLBind(pADO, "p02", FVMS_SCH_TYPE);
  830. ITSDb_SQLBind(pADO, "p03", sTypeCd);
  831. ITSDb_SQLBind(pADO, "p04", String(ii+1));
  832. ITSDb_SQLBind(pADO, "p05", sFormId);
  833. ITSDb_SQLBind(pADO, "p06", sStrTime);
  834. ITSDb_SQLBind(pADO, "p07", sEndTime);
  835. ITSDb_SQLBind(pADO, "p08", sDispHH);
  836. ITSDb_SQLBind(pADO, "p09", sIfscId1);
  837. ITSDb_SQLBind(pADO, "p10", sIfscId2);
  838. ITSDb_SQLBind(pADO, "p11", sIfscId3);
  839. ITSDb_SQLBind(pADO, "p12", sIfscId4);
  840. ITSDb_SQLBind(pADO, "p13", sImgIfscId1);
  841. ITSDb_SQLBind(pADO, "p14", sImgIfscId2);
  842. ITSDb_SQLBind(pADO, "p15", sImgIfscId3);
  843. ITSDb_SQLBind(pADO, "p16", sImgIfscId4);
  844. ITSDb_SQLBind(pADO, "p17", sSymbLibNmbr);
  845. ITSDb_SQLBind(pADO, "p18", sStrmAddr);
  846. ITSDb_SQLBind(pADO, "p19", sUseYn);
  847. pADO->ExecSQL();
  848. }
  849. bResult = true;
  850. }
  851. catch(EDatabaseError &E)
  852. {
  853. ITSDb_GetConnection()->RollbackTrans();
  854. DBERRORMSG("TVMSM700M::SaveVmsScenario", String(E.ClassName()), E.Message, sQry);
  855. throw Exception(String(E.ClassName()) + E.Message);
  856. }
  857. catch(Exception &e)
  858. {
  859. ITSDb_GetConnection()->RollbackTrans();
  860. DBERRORMSG("TVMSM700M::SaveVmsScenario", String(e.ClassName()), e.Message, sQry);
  861. throw Exception(String(e.ClassName()) + e.Message);
  862. }
  863. }
  864. __finally
  865. {
  866. if (pADO)
  867. {
  868. pADO->Close();
  869. delete pADO;
  870. }
  871. pGDC->EndUpdate();
  872. AListSch->EndUpdate();
  873. }
  874. return bResult;
  875. }
  876. //---------------------------------------------------------------------------
  877. bool __fastcall TVMSM700M::SaveVmsScenarioWeek(String AVmsNmbr, TcxGridTableView *AListSch)
  878. {
  879. bool bResult = false;
  880. #if 0
  881. String sQry;
  882. TADOQuery *pADO = NULL;
  883. TcxDataController *pGDC = AListSch->DataController;
  884. String sTypeCd = String(AListSch->Tag);
  885. sQry = "INSERT INTO TB_VMS_DSPL_SCH_WEEK ( \r\n"
  886. " VMS_CTLR_NMBR, \r\n"
  887. " VMS_SCH_TYPE, \r\n"
  888. " PHASE, \r\n"
  889. " WEEK_CD, \r\n"
  890. " SCH_HH \r\n"
  891. " ) \r\n"
  892. " VALUES( \r\n"
  893. " :p01, :p02, :p03, \r\n"
  894. " :p04, :p05 \r\n"
  895. " ) \r\n";
  896. try
  897. {
  898. AListSch->BeginUpdate();
  899. pGDC->BeginUpdate();
  900. int nRows = pGDC->RecordCount;
  901. try
  902. {
  903. pADO = new TADOQuery(NULL);
  904. pADO->Close();
  905. pADO->Connection = ITSDb_GetConnection();
  906. ITSDb_SQLText(pADO, sQry);
  907. for (int ii = 0; ii < nRows; ii++)
  908. {
  909. for (int jj = 1; jj <= 7; jj++)
  910. {
  911. ITSDb_SQLBind(pADO, "p01", AVmsNmbr);
  912. ITSDb_SQLBind(pADO, "p02", FVMS_SCH_TYPE);
  913. ITSDb_SQLBind(pADO, "p03", String(ii+1));
  914. ITSDb_SQLBind(pADO, "p04", String(jj));
  915. ITSDb_SQLBind(pADO, "p05", "111111111111111111111111");
  916. pADO->ExecSQL();
  917. }
  918. }
  919. bResult = true;
  920. }
  921. catch(EDatabaseError &E)
  922. {
  923. ITSDb_GetConnection()->RollbackTrans();
  924. DBERRORMSG("TVMSM700M::SaveVmsScenarioWeek", String(E.ClassName()), E.Message, sQry);
  925. throw Exception(String(E.ClassName()) + E.Message);
  926. }
  927. catch(Exception &e)
  928. {
  929. ITSDb_GetConnection()->RollbackTrans();
  930. DBERRORMSG("TVMSM700M::SaveVmsScenarioWeek", String(e.ClassName()), e.Message, sQry);
  931. throw Exception(String(e.ClassName()) + e.Message);
  932. }
  933. }
  934. __finally
  935. {
  936. if (pADO)
  937. {
  938. pADO->Close();
  939. delete pADO;
  940. }
  941. pGDC->EndUpdate();
  942. AListSch->EndUpdate();
  943. }
  944. #endif
  945. return bResult;
  946. }
  947. //---------------------------------------------------------------------------
  948. bool __fastcall TVMSM700M::DeleteVmsScenario(String AVmsNmbr)
  949. {
  950. bool bResult = false;
  951. String sQry;
  952. TADOQuery *pADO = NULL;
  953. sQry = "DELETE TB_VMS_DSPL_SCH \r\n"
  954. " WHERE VMS_SCH_TYPE = :p01 \r\n"
  955. " AND VMS_CTLR_NMBR = :p02 \r\n";
  956. try
  957. {
  958. try
  959. {
  960. pADO = new TADOQuery(NULL);
  961. pADO->Close();
  962. pADO->Connection = ITSDb_GetConnection();
  963. ITSDb_SQLText(pADO, sQry);
  964. ITSDb_SQLBind(pADO, "p01", FVMS_SCH_TYPE);
  965. ITSDb_SQLBind(pADO, "p02", AVmsNmbr);
  966. pADO->ExecSQL();
  967. bResult = true;
  968. }
  969. catch(EDatabaseError &E)
  970. {
  971. ITSDb_GetConnection()->RollbackTrans();
  972. DBERRORMSG("TVMSM700M::DeleteVmsScenario", String(E.ClassName()), E.Message, sQry);
  973. throw Exception(String(E.ClassName()) + E.Message);
  974. }
  975. catch(Exception &e)
  976. {
  977. ITSDb_GetConnection()->RollbackTrans();
  978. DBERRORMSG("TVMSM700M::DeleteVmsScenario", String(e.ClassName()), e.Message, sQry);
  979. throw Exception(String(e.ClassName()) + e.Message);
  980. }
  981. }
  982. __finally
  983. {
  984. if (pADO)
  985. {
  986. pADO->Close();
  987. delete pADO;
  988. }
  989. }
  990. return bResult;
  991. }
  992. //---------------------------------------------------------------------------
  993. void __fastcall TVMSM700M::DrawTrafficScenarioForm()
  994. {
  995. TcxGridTableView *pGrid = FListSch[eSchTp_traffic];
  996. if (!pGrid) return;
  997. TcxDataController *pGDC = pGrid->DataController;
  998. try
  999. {
  1000. pGrid->BeginUpdate();
  1001. pGDC->BeginUpdate();
  1002. int nRows = pGDC->RecordCount;
  1003. try
  1004. {
  1005. for (int ii = 0; ii < nRows; ii++)
  1006. {
  1007. String sFormId = VarToStr(pGDC->Values[ii][0]);
  1008. String sFormClr = VarToStr(pGDC->Values[ii][14]);
  1009. int nFormType = VarToStr(pGDC->Values[ii][15]).ToIntDef(0);
  1010. FIfscId[0] = VarToStr(pGDC->Values[ii][9]);
  1011. FIfscId[1] = VarToStr(pGDC->Values[ii][10]);
  1012. FIfscId[2] = VarToStr(pGDC->Values[ii][11]);
  1013. FIfscId[3] = VarToStr(pGDC->Values[ii][12]);
  1014. FIfscId[4] = VarToStr(pGDC->Values[ii][16]);
  1015. FIfscId[5] = VarToStr(pGDC->Values[ii][17]);
  1016. FIfscId[6] = VarToStr(pGDC->Values[ii][18]);
  1017. FIfscId[7] = VarToStr(pGDC->Values[ii][19]);
  1018. switch(nFormType)
  1019. {
  1020. case 11:// ' 소통상황(1단)
  1021. case 12:// ' 소통상황(2단)
  1022. case 13:// ' 소통상황(3단)
  1023. case 14:// ' 소통상황(4단)
  1024. if (LoadTrafficFormObjectInfo(sFormId, sFormClr, m_pEdtDesigner))
  1025. {
  1026. m_pEdtDesigner->GetVmsFormImage(ImgForm);
  1027. TStream *pImgStream = new TMemoryStream();
  1028. try
  1029. {
  1030. void *p;
  1031. Variant v;
  1032. ImgForm->Picture->Bitmap->SaveToStream(pImgStream);
  1033. int aBound[]={0, pImgStream->Size - 1};
  1034. v = VarArrayCreate(aBound, 1, varByte);
  1035. p = VarArrayLock(v);
  1036. pImgStream->Position = 0;
  1037. pImgStream->Read(p, pImgStream->Size);
  1038. VarArrayUnlock(v);
  1039. pGDC->Values[ii][1] = v;
  1040. }
  1041. __finally
  1042. {
  1043. SAFE_DELETE(pImgStream);
  1044. }
  1045. }
  1046. break;
  1047. }
  1048. }
  1049. }
  1050. catch(Exception &e)
  1051. {
  1052. }
  1053. }
  1054. __finally
  1055. {
  1056. pGDC->EndUpdate();
  1057. pGrid->EndUpdate();
  1058. }
  1059. }
  1060. //---------------------------------------------------------------------------
  1061. bool __fastcall TVMSM700M::LoadTrafficFormObjectInfo(String AFormId, String ABkColor, TVmsFormDesigner *ADesigner)
  1062. {
  1063. ADesigner->Clear();
  1064. m_pEdtDesigner->BkColorCode = ABkColor;
  1065. String sQry;
  1066. TADOQuery *pADO = NULL;
  1067. sQry = "SELECT A.*, \r\n"
  1068. " C.VMS_FONT_NAME_NM, \r\n"
  1069. " B.IMAG_DATA AS SYMB_IMG, \r\n"
  1070. " B.SYMB_EXPL AS SYMB_IMG_NM \r\n"
  1071. " FROM TB_VMS_FORM_OBJECT A, \r\n"
  1072. " TB_VMS_SYMB_LIB B, \r\n"
  1073. " TB_VMS_FONT_NAME C, \r\n"
  1074. " TB_VMS_FORM D \r\n"
  1075. " WHERE D.VMS_FORM_ID = :p01 \r\n"
  1076. " AND D.VMS_FORM_ID = A.VMS_FORM_ID \r\n"
  1077. " AND A.SYMB_LIB_NMBR = B.SYMB_LIB_NMBR(+) \r\n"
  1078. " AND A.VMS_FONT_NAME_CD = C.VMS_FONT_NAME_CD(+) \r\n"
  1079. " ORDER BY A.VMS_FORM_OBJECT_ID ASC \r\n";
  1080. try
  1081. {
  1082. try
  1083. {
  1084. pADO = new TADOQuery(NULL);
  1085. pADO->Close();
  1086. pADO->Connection = ITSDb_GetConnection();
  1087. ITSDb_SQLText(pADO, sQry);
  1088. ITSDb_SQLBind(pADO, "p01", AFormId);
  1089. ITSDb_SQLOpen(pADO);
  1090. int nDrawType;
  1091. String sObjKind;
  1092. for( ; !pADO->Eof; pADO->Next())
  1093. {
  1094. int nFormId = pADO->FieldByName("VMS_FORM_ID")->AsInteger;
  1095. int nObjId = pADO->FieldByName("VMS_FORM_OBJECT_ID")->AsInteger;
  1096. int nObjType = pADO->FieldByName("VMS_FORM_OBJECT_TYPE_CD")->AsInteger;
  1097. if (nObjType == 1 || //심볼
  1098. nObjType == 2 || //이미지
  1099. nObjType == 3 || //배경이미지
  1100. nObjType == 17 || //@소통정보이미지 (1열)
  1101. nObjType == 27 || //@소통정보이미지2(2열)
  1102. nObjType == 37 || //@소통정보이미지3(3열)
  1103. nObjType == 47 || //소통이미지4
  1104. nObjType == 200 || //동영상
  1105. nObjType == 300 || //스트리밍영상
  1106. nObjType == 406 || //@통합대기등급 이미지
  1107. nObjType == 407 || //@미세먼지등급 이미지
  1108. nObjType == 408 || //@초미세먼지등급 이미지
  1109. nObjType == 413 //@오존등급이미지
  1110. )
  1111. {
  1112. if (nObjType == 1) sObjKind = OBJKIND_IMAGEID; //Image Id
  1113. else sObjKind = OBJKIND_IMAGE; //Image
  1114. nDrawType = 1; //이미지그리기
  1115. }
  1116. else
  1117. {
  1118. sObjKind = OBJKIND_TEXT; //문자열
  1119. nDrawType = 0; //문자열그리기
  1120. }
  1121. //실재 맵핑된 구간의 정보를 표출하도록 한다.
  1122. int nBlinking = pADO->FieldByName("VMS_DSPL_BLINKING")->AsInteger;
  1123. int nPosX = pADO->FieldByName("VMS_DSPL_XCRDN")->AsInteger;
  1124. int nPosY = pADO->FieldByName("VMS_DSPL_YCRDN")->AsInteger;
  1125. TVmsFormObject *pObj = ADesigner->AddObject((VmsObjectDrawType)nDrawType);
  1126. if (!pObj) continue;
  1127. //11 , ' @구간명
  1128. //12 , ' @시점명
  1129. //13 , ' @종점명
  1130. //14 , ' @소통상황
  1131. //15 , ' @통행시간
  1132. //16 , ' @통행속도
  1133. //17 , ' @소통이미지
  1134. pObj->Text = pADO->FieldByName("VMS_DSPL_TXT")->AsString.Trim();
  1135. pObj->RunText = pObj->Text;
  1136. String sIfscId = "";
  1137. if (nObjType >= 11 && nObjType < 17)
  1138. sIfscId = FIfscId[0];
  1139. else
  1140. if (nObjType >= 21 && nObjType < 27)
  1141. sIfscId = FIfscId[1];
  1142. else
  1143. if (nObjType >= 31 && nObjType < 37)
  1144. sIfscId = FIfscId[2];
  1145. else
  1146. if (nObjType >= 41 && nObjType < 47)
  1147. sIfscId = FIfscId[3];
  1148. switch(nObjType)
  1149. {
  1150. case 17: sIfscId = FIfscId[4]; break;
  1151. case 27: sIfscId = FIfscId[5]; break;
  1152. case 37: sIfscId = FIfscId[6]; break;
  1153. case 47: sIfscId = FIfscId[7]; break;
  1154. }
  1155. if (sIfscId != "")
  1156. {
  1157. TVmsIfsc *pIfscObj;
  1158. pIfscObj = VmsIfscManager->FLists.Find(sIfscId.ToIntDef(0));
  1159. if (pIfscObj)
  1160. {
  1161. switch(nObjType)
  1162. {
  1163. case 11: case 21: case 31: case 41:
  1164. pObj->RunText = pIfscObj->VMS_IFSC_NM;
  1165. break;
  1166. case 12: case 22: case 32: case 42:
  1167. pObj->RunText = pIfscObj->DSPL_STRT_NODE_NM;
  1168. break;
  1169. case 13: case 23: case 33: case 43:
  1170. pObj->RunText = pIfscObj->DSPL_END_NODE_NM;
  1171. break;
  1172. }
  1173. }
  1174. }
  1175. else
  1176. {
  1177. if (nObjType == 201)
  1178. {
  1179. }
  1180. else
  1181. if (nObjType == 301)
  1182. {
  1183. }
  1184. }
  1185. if (nObjType == 200 || nObjType == 300)
  1186. {
  1187. pObj->EditMode = false;
  1188. }
  1189. pObj->ObjSeq = nObjId;
  1190. pObj->ObjId = nObjId;
  1191. pObj->ObjKind = sObjKind;
  1192. pObj->Tag = pADO->FieldByName("VMS_IFSC_ID")->AsString;
  1193. pObj->ObjType = pADO->FieldByName("VMS_FORM_OBJECT_TYPE_CD")->AsString;
  1194. pObj->ObjSize = pADO->FieldByName("VMS_DSPL_SIZE")->AsInteger;
  1195. pObj->BkColorCode = pADO->FieldByName("VMS_DSPL_BKCOLOR")->AsString;
  1196. pObj->Blink = nBlinking == 1 ? true : false;
  1197. pObj->ImageId = pADO->FieldByName("SYMB_LIB_NMBR")->AsString;
  1198. if (pObj->ObjKind == OBJKIND_TEXT) // 문자열
  1199. {
  1200. int nFontBold = pADO->FieldByName("VMS_FONT_BOLD")->AsInteger;
  1201. pObj->FontName = pADO->FieldByName("VMS_FONT_NAME_NM")->AsString;
  1202. pObj->FontNameCode = pADO->FieldByName("VMS_FONT_NAME_CD")->AsString;
  1203. pObj->FontColorCode = pADO->FieldByName("VMS_FONT_COLR_CD")->AsString;
  1204. pObj->FontSize = pADO->FieldByName("VMS_FONT_SIZE")->AsInteger;
  1205. pObj->FontBold = nFontBold == 1 ? true : false;
  1206. pObj->TextAlign = pADO->FieldByName("VMS_FONT_ALIGN")->AsInteger;
  1207. pObj->SetSize(pADO->FieldByName("VMS_DSPL_WIDTH")->AsInteger, pADO->FieldByName("VMS_DSPL_HEIGHT")->AsInteger);
  1208. pObj->SetRuntimeText(pObj->RunText);
  1209. }
  1210. else //if (sObjKind == "1" || sObjKind == "2") // 이미지(1), 이미지 ID(2)
  1211. {
  1212. if (pObj->ObjKind == OBJKIND_IMAGEID)
  1213. {
  1214. pObj->Text = pADO->FieldByName("SYMB_LIB_NMBR")->AsString;
  1215. }
  1216. TStream *pStream = NULL;
  1217. pStream = pADO->CreateBlobStream(pADO->FieldByName("VMS_DSPL_FIGR"), bmRead);
  1218. try
  1219. {
  1220. if (pStream && pStream->Size > 0)
  1221. {
  1222. Graphics::TBitmap *Bitmap = pObj->GetBitmap();
  1223. pStream->Position = 0;
  1224. Bitmap->LoadFromStream(pStream);
  1225. pObj->SetSize(Bitmap->Width, Bitmap->Height);
  1226. }
  1227. }
  1228. __finally
  1229. {
  1230. SAFE_DELETE(pStream);
  1231. }
  1232. }
  1233. pObj->SetPos(nPosX, nPosY);
  1234. pObj->Show();
  1235. pObj->BringToFront();
  1236. }
  1237. }
  1238. catch(EDatabaseError &E)
  1239. {
  1240. DBERRORMSG("TVMSM700M::LoadTrafficFormObjectInfo", String(E.ClassName()), E.Message, sQry);
  1241. throw Exception(String(E.ClassName()) + E.Message);
  1242. }
  1243. catch(Exception &exception)
  1244. {
  1245. DBERRORMSG("TVMSM700M::LoadTrafficFormObjectInfo", String(exception.ClassName()), exception.Message, sQry);
  1246. throw Exception(String(exception.ClassName()) + exception.Message);
  1247. }
  1248. }
  1249. __finally
  1250. {
  1251. if (pADO)
  1252. {
  1253. pADO->Close();
  1254. delete pADO;
  1255. }
  1256. }
  1257. return true;
  1258. }
  1259. //---------------------------------------------------------------------------
  1260. void __fastcall TVMSM700M::DrawVideoStreamScenarioForm(int AFormScheType)
  1261. {
  1262. TcxGridTableView *pGrid = FListSch[AFormScheType];
  1263. if (!pGrid) return;
  1264. TcxDataController *pGDC = pGrid->DataController;
  1265. try
  1266. {
  1267. pGrid->BeginUpdate();
  1268. pGDC->BeginUpdate();
  1269. int nRows = pGDC->RecordCount;
  1270. try
  1271. {
  1272. for (int ii = 0; ii < nRows; ii++)
  1273. {
  1274. String sFormId = VarToStr(pGDC->Values[ii][0]);
  1275. String sFormClr = VarToStr(pGDC->Values[ii][14]);
  1276. int nFormType = VarToStr(pGDC->Values[ii][15]).ToIntDef(0);
  1277. String sSymbLibNmbr = VarToStr(pGDC->Values[ii][20]);
  1278. String sStreamAddr = VarToStr(pGDC->Values[ii][21]);
  1279. switch(nFormType)
  1280. {
  1281. case 70:// ' 동영상 Y
  1282. case 80:// ' 스트리밍영상 Y
  1283. if (LoadVideoStreamFormObjectInfo(sFormId, sFormClr, m_pEdtDesigner, sSymbLibNmbr, sStreamAddr))
  1284. {
  1285. m_pEdtDesigner->GetVmsFormImage(ImgForm);
  1286. TStream *pImgStream = new TMemoryStream();
  1287. try
  1288. {
  1289. void *p;
  1290. Variant v;
  1291. ImgForm->Picture->Bitmap->SaveToStream(pImgStream);
  1292. int aBound[]={0, pImgStream->Size - 1};
  1293. v = VarArrayCreate(aBound, 1, varByte);
  1294. p = VarArrayLock(v);
  1295. pImgStream->Position = 0;
  1296. pImgStream->Read(p, pImgStream->Size);
  1297. VarArrayUnlock(v);
  1298. pGDC->Values[ii][1] = v;
  1299. }
  1300. __finally
  1301. {
  1302. SAFE_DELETE(pImgStream);
  1303. }
  1304. }
  1305. break;
  1306. }
  1307. }
  1308. }
  1309. catch(Exception &e)
  1310. {
  1311. }
  1312. }
  1313. __finally
  1314. {
  1315. pGDC->EndUpdate();
  1316. pGrid->EndUpdate();
  1317. }
  1318. }
  1319. //---------------------------------------------------------------------------
  1320. bool __fastcall TVMSM700M::LoadVideoStreamFormObjectInfo(String AFormId, String ABkColor, TVmsFormDesigner *ADesigner, String ASymbLibNmbr, String AStreamAddr)
  1321. {
  1322. ADesigner->Clear();
  1323. m_pEdtDesigner->BkColorCode = ABkColor;
  1324. String sQry;
  1325. TADOQuery *pADO = NULL;
  1326. sQry = "SELECT A.*, \r\n"
  1327. " C.VMS_FONT_NAME_NM, \r\n"
  1328. " B.IMAG_DATA AS SYMB_IMG, \r\n"
  1329. " B.SYMB_EXPL AS SYMB_IMG_NM, \r\n"
  1330. " B.SYMB_FILE_NM AS SYMB_FILE_NM \r\n"
  1331. " FROM TB_VMS_FORM_OBJECT A, \r\n"
  1332. " TB_VMS_SYMB_LIB B, \r\n"
  1333. " TB_VMS_FONT_NAME C, \r\n"
  1334. " TB_VMS_FORM D \r\n"
  1335. " WHERE D.VMS_FORM_ID = :p01 \r\n"
  1336. " AND D.VMS_FORM_ID = A.VMS_FORM_ID \r\n"
  1337. " AND B.SYMB_LIB_NMBR = :p02 \r\n"
  1338. " AND A.VMS_FONT_NAME_CD = C.VMS_FONT_NAME_CD(+) \r\n"
  1339. " ORDER BY A.VMS_FORM_OBJECT_ID ASC \r\n";
  1340. try
  1341. {
  1342. try
  1343. {
  1344. pADO = new TADOQuery(NULL);
  1345. pADO->Close();
  1346. pADO->Connection = ITSDb_GetConnection();
  1347. ITSDb_SQLText(pADO, sQry);
  1348. ITSDb_SQLBind(pADO, "p01", AFormId);
  1349. ITSDb_SQLBind(pADO, "p02", ASymbLibNmbr);
  1350. ITSDb_SQLOpen(pADO);
  1351. int nDrawType;
  1352. String sObjKind;
  1353. for( ; !pADO->Eof; pADO->Next())
  1354. {
  1355. int nFormId = pADO->FieldByName("VMS_FORM_ID")->AsInteger;
  1356. int nObjId = pADO->FieldByName("VMS_FORM_OBJECT_ID")->AsInteger;
  1357. int nObjType = pADO->FieldByName("VMS_FORM_OBJECT_TYPE_CD")->AsInteger;
  1358. if (nObjType == 1 || //심볼
  1359. nObjType == 2 || //이미지
  1360. nObjType == 3 || //배경이미지
  1361. nObjType == 17 || //@소통정보이미지 (1열)
  1362. nObjType == 27 || //@소통정보이미지2(2열)
  1363. nObjType == 37 || //@소통정보이미지3(3열)
  1364. nObjType == 47 || //소통이미지4
  1365. nObjType == 200 || //동영상
  1366. nObjType == 300 || //스트리밍영상
  1367. nObjType == 406 || //@통합대기등급 이미지
  1368. nObjType == 407 || //@미세먼지등급 이미지
  1369. nObjType == 408 || //@초미세먼지등급 이미지
  1370. nObjType == 413 //@오존등급이미지
  1371. )
  1372. {
  1373. sObjKind = OBJKIND_IMAGEID; //Image Id
  1374. nDrawType = 1; //이미지그리기
  1375. }
  1376. else
  1377. {
  1378. sObjKind = OBJKIND_TEXT; //문자열
  1379. nDrawType = 0; //문자열그리기
  1380. }
  1381. int nBlinking = pADO->FieldByName("VMS_DSPL_BLINKING")->AsInteger;
  1382. int nPosX = pADO->FieldByName("VMS_DSPL_XCRDN")->AsInteger;
  1383. int nPosY = pADO->FieldByName("VMS_DSPL_YCRDN")->AsInteger;
  1384. TVmsFormObject *pObj = ADesigner->AddObject((VmsObjectDrawType)nDrawType);
  1385. if (!pObj) continue;
  1386. pObj->Text = pADO->FieldByName("SYMB_IMG_NM")->AsString.Trim();
  1387. if (AStreamAddr == "") pObj->RunText = pObj->Text;
  1388. else pObj->RunText = AStreamAddr; //pObj->Text;
  1389. pObj->EditMode = false;
  1390. pObj->ObjSeq = nObjId;
  1391. pObj->ObjId = nObjId;
  1392. pObj->ObjKind = sObjKind;
  1393. pObj->Tag = pADO->FieldByName("VMS_IFSC_ID")->AsString;
  1394. pObj->ObjType = pADO->FieldByName("VMS_FORM_OBJECT_TYPE_CD")->AsString;
  1395. pObj->ObjSize = pADO->FieldByName("VMS_DSPL_SIZE")->AsInteger;
  1396. pObj->BkColorCode = pADO->FieldByName("VMS_DSPL_BKCOLOR")->AsString;
  1397. pObj->Blink = nBlinking == 1 ? true : false;
  1398. pObj->ImageId = ASymbLibNmbr; //pADO->FieldByName("SYMB_LIB_NMBR")->AsString;
  1399. pObj->SetPos(nPosX, nPosY);
  1400. if (pObj->ObjKind == OBJKIND_TEXT) // 문자열
  1401. {
  1402. int nFontBold = pADO->FieldByName("VMS_FONT_BOLD")->AsInteger;
  1403. pObj->FontName = pADO->FieldByName("VMS_FONT_NAME_NM")->AsString;
  1404. pObj->FontNameCode = pADO->FieldByName("VMS_FONT_NAME_CD")->AsString;
  1405. pObj->FontColorCode = pADO->FieldByName("VMS_FONT_COLR_CD")->AsString;
  1406. pObj->FontSize = pADO->FieldByName("VMS_FONT_SIZE")->AsInteger;
  1407. pObj->FontBold = nFontBold == 1 ? true : false;
  1408. pObj->TextAlign = pADO->FieldByName("VMS_FONT_ALIGN")->AsInteger;
  1409. pObj->SetSize(pADO->FieldByName("VMS_DSPL_WIDTH")->AsInteger, pADO->FieldByName("VMS_DSPL_HEIGHT")->AsInteger);
  1410. pObj->SetRuntimeText(pObj->RunText);
  1411. }
  1412. else //if (sObjKind == "1" || sObjKind == "2") // 이미지(1), 이미지 ID(2)
  1413. {
  1414. if (pObj->ObjKind == OBJKIND_IMAGEID)
  1415. {
  1416. pObj->Text = pADO->FieldByName("SYMB_LIB_NMBR")->AsString;
  1417. }
  1418. TStream *pStream = NULL;
  1419. //pStream = pADO->CreateBlobStream(pADO->FieldByName("VMS_DSPL_FIGR"), bmRead);
  1420. pStream = pADO->CreateBlobStream(pADO->FieldByName("SYMB_IMG"), bmRead);
  1421. try
  1422. {
  1423. if (pStream && pStream->Size > 0)
  1424. {
  1425. Graphics::TBitmap *Bitmap = pObj->GetBitmap();
  1426. pStream->Position = 0;
  1427. Bitmap->LoadFromStream(pStream);
  1428. pObj->SetSize(Bitmap->Width, Bitmap->Height);
  1429. if (ASymbLibNmbr != "200" && ASymbLibNmbr != "300")
  1430. pObj->SetPos(0, 0);
  1431. }
  1432. }
  1433. __finally
  1434. {
  1435. SAFE_DELETE(pStream);
  1436. }
  1437. }
  1438. #if 0
  1439. switch(nObjType)
  1440. {
  1441. case 200: pObj->Text = ASymbLibNmbr; break;
  1442. case 201: pObj->Text = AStreamAddr; break;
  1443. case 300: pObj->Text = ASymbLibNmbr; break;
  1444. case 301: pObj->Text = AStreamAddr; break;
  1445. }
  1446. #endif
  1447. pObj->Show();
  1448. pObj->BringToFront();
  1449. }
  1450. }
  1451. catch(EDatabaseError &E)
  1452. {
  1453. DBERRORMSG("TVMSM700M::LoadTrafficFormObjectInfo", String(E.ClassName()), E.Message, sQry);
  1454. throw Exception(String(E.ClassName()) + E.Message);
  1455. }
  1456. catch(Exception &exception)
  1457. {
  1458. DBERRORMSG("TVMSM700M::LoadTrafficFormObjectInfo", String(exception.ClassName()), exception.Message, sQry);
  1459. throw Exception(String(exception.ClassName()) + exception.Message);
  1460. }
  1461. }
  1462. __finally
  1463. {
  1464. if (pADO)
  1465. {
  1466. pADO->Close();
  1467. delete pADO;
  1468. }
  1469. }
  1470. return true;
  1471. }
  1472. //---------------------------------------------------------------------------
  1473. void __fastcall TVMSM700M::LoadVmsScheduleInfo(String AVmsNmbr)
  1474. {
  1475. int ii;
  1476. String sQry;
  1477. TADOQuery *pADO = NULL;
  1478. for (ii = 0; ii < eSchTp_max; ii++)
  1479. {
  1480. if (FListSch[ii]) CMM_ClearGridTableView(FListSch[ii]);
  1481. }
  1482. sQry = "SELECT A.*, \r\n"
  1483. " B.VMS_FORM_IMAG, \r\n"
  1484. " B.VMS_TYPE_CD, \r\n"
  1485. " B.VMS_FORM_NM, \r\n"
  1486. " B.VMS_FORM_COLR_CD, \r\n"
  1487. " B.VMS_FORM_TYPE_CD \r\n"
  1488. " FROM TB_VMS_DSPL_SCH A, \r\n"
  1489. " TB_VMS_FORM B \r\n"
  1490. " WHERE A.VMS_SCH_TYPE = :p01 \r\n"
  1491. " AND A.VMS_CTLR_NMBR = :p02 \r\n"
  1492. " AND A.VMS_FORM_ID = B.VMS_FORM_ID \r\n"
  1493. // " AND B.VALID_YN = 'Y' \r\n"
  1494. " ORDER BY A.PHASE \r\n";
  1495. try
  1496. {
  1497. for (ii = 0; ii < eSchTp_max; ii++)
  1498. {
  1499. if (FListSch[ii]) FListSch[ii]->BeginUpdate();
  1500. }
  1501. TcxDataController *pDcSch;
  1502. int nRow;
  1503. try
  1504. {
  1505. int nRow;
  1506. pADO = new TADOQuery(NULL);
  1507. pADO->Close();
  1508. pADO->Connection = ITSDb_GetConnection();
  1509. ITSDb_SQLText(pADO, sQry);
  1510. ITSDb_SQLBind(pADO, "p01", FVMS_SCH_TYPE);
  1511. ITSDb_SQLBind(pADO, "p02", AVmsNmbr);
  1512. ITSDb_SQLOpen(pADO);
  1513. int nFormType;
  1514. for( ; !pADO->Eof; pADO->Next())
  1515. {
  1516. nFormType = pADO->FieldByName("VMS_SCH_FORM_TYPE")->AsInteger;
  1517. if (nFormType < eSchTp_traffic && nFormType >= eSchTp_max) continue;
  1518. if (!FListSch[nFormType]) continue;
  1519. pDcSch = FListSch[nFormType]->DataController;
  1520. nRow = pDcSch->AppendRecord();
  1521. String sStrDate = pADO->FieldByName("DSPL_STRT_HH")->AsString;
  1522. String sEndDate = pADO->FieldByName("DSPL_END_HH")->AsString;
  1523. pDcSch->Values[nRow][ 0] = pADO->FieldByName("VMS_FORM_ID")->AsString;
  1524. pDcSch->Values[nRow][ 1] = pADO->FieldByName("VMS_FORM_IMAG")->AsVariant;
  1525. pDcSch->Values[nRow][ 2] = pADO->FieldByName("FRST_VMS_IFSC_ID")->AsString;
  1526. pDcSch->Values[nRow][ 3] = pADO->FieldByName("DSPL_HH")->AsString;
  1527. pDcSch->Values[nRow][ 4] = ITSUtil_FormatStr(sStrDate, STR_HHNN);;
  1528. pDcSch->Values[nRow][ 5] = ITSUtil_FormatStr(sEndDate, STR_HHNN);;
  1529. pDcSch->Values[nRow][ 6] = pADO->FieldByName("USE_YN")->AsString;
  1530. pDcSch->Values[nRow][ 7] = sStrDate;
  1531. pDcSch->Values[nRow][ 8] = sEndDate;
  1532. pDcSch->Values[nRow][ 9] = pADO->FieldByName("FRST_VMS_IFSC_ID")->AsString;
  1533. pDcSch->Values[nRow][10] = pADO->FieldByName("SECD_VMS_IFSC_ID")->AsString;
  1534. pDcSch->Values[nRow][11] = pADO->FieldByName("THIR_VMS_IFSC_ID")->AsString;
  1535. pDcSch->Values[nRow][12] = pADO->FieldByName("FOUR_VMS_IFSC_ID")->AsString;
  1536. pDcSch->Values[nRow][13] = pADO->FieldByName("VMS_TYPE_CD")->AsString;
  1537. pDcSch->Values[nRow][14] = pADO->FieldByName("VMS_FORM_COLR_CD")->AsString;
  1538. pDcSch->Values[nRow][15] = pADO->FieldByName("VMS_FORM_TYPE_CD")->AsString;
  1539. pDcSch->Values[nRow][16] = pADO->FieldByName("FRST_IMG_IFSC_ID")->AsString;
  1540. pDcSch->Values[nRow][17] = pADO->FieldByName("SECD_IMG_IFSC_ID")->AsString;
  1541. pDcSch->Values[nRow][18] = pADO->FieldByName("THIR_IMG_IFSC_ID")->AsString;
  1542. pDcSch->Values[nRow][19] = pADO->FieldByName("FOUR_IMG_IFSC_ID")->AsString;
  1543. pDcSch->Values[nRow][20] = pADO->FieldByName("SYMB_LIB_NMBR")->AsString;
  1544. pDcSch->Values[nRow][21] = pADO->FieldByName("STRM_ADDR")->AsString;
  1545. }
  1546. }
  1547. catch(EDatabaseError &E)
  1548. {
  1549. DBERRORMSG("TVMSM700M::LoadVmsScheduleInfo", String(E.ClassName()), E.Message, sQry);
  1550. throw Exception(String(E.ClassName()) + E.Message);
  1551. }
  1552. catch(Exception &e)
  1553. {
  1554. DBERRORMSG("TVMSM700M::LoadVmsScheduleInfo", String(e.ClassName()), e.Message, sQry);
  1555. throw Exception(String(e.ClassName()) + e.Message);
  1556. }
  1557. }
  1558. __finally
  1559. {
  1560. if (pADO)
  1561. {
  1562. pADO->Close();
  1563. delete pADO;
  1564. }
  1565. for (ii = 0; ii < eSchTp_max; ii++)
  1566. {
  1567. if (FListSch[ii]) FListSch[ii]->EndUpdate();
  1568. }
  1569. }
  1570. }
  1571. //---------------------------------------------------------------------------
  1572. bool __fastcall TVMSM700M::LoadVmsFormList(String AFormSizeCd)
  1573. {
  1574. int ii;
  1575. for (ii = 0; ii < eSchTp_max; ii++)
  1576. {
  1577. if (FListFrm[ii]) CMM_ClearGridTableView(FListFrm[ii]);
  1578. }
  1579. String sQry;
  1580. TADOQuery *pADO = NULL;
  1581. //스케쥴에 등록할 폼은 유효성이 Y 인 것만 목록에 표출한다.
  1582. sQry = "SELECT A.* \r\n"
  1583. " FROM TB_VMS_FORM A \r\n"
  1584. " WHERE A.VMS_TYPE_CD = :p01 \r\n"
  1585. " AND A.VALID_YN = 'Y' \r\n"
  1586. " ORDER BY A.VMS_FORM_ID \r\n";
  1587. try
  1588. {
  1589. for (ii = 0; ii < eSchTp_max; ii++)
  1590. {
  1591. if (FListFrm[ii]) FListFrm[ii]->BeginUpdate();
  1592. }
  1593. TcxDataController *pGDC;
  1594. int nRow;
  1595. try
  1596. {
  1597. pADO = new TADOQuery(NULL);
  1598. pADO->Close();
  1599. pADO->Connection = ITSDb_GetConnection();
  1600. ITSDb_SQLText(pADO, sQry);
  1601. ITSDb_SQLBind(pADO, "p01", AFormSizeCd);
  1602. ITSDb_SQLOpen(pADO);
  1603. int nFormTypeCd, nFormIdx;
  1604. for( ; !pADO->Eof; pADO->Next())
  1605. {
  1606. nFormTypeCd = pADO->FieldByName("VMS_FORM_TYPE_CD")->AsInteger;
  1607. nFormIdx = VmsGetFormTypeIdx(nFormTypeCd);
  1608. if (nFormIdx < 0) continue;
  1609. if (!FListFrm[nFormIdx]) continue;
  1610. pGDC = FListFrm[nFormIdx]->DataController;
  1611. nRow = pGDC->AppendRecord();
  1612. pGDC->Values[nRow][0] = pADO->FieldByName("VMS_FORM_ID")->AsString;
  1613. pGDC->Values[nRow][1] = pADO->FieldByName("VMS_FORM_IMAG")->AsVariant;
  1614. pGDC->Values[nRow][2] = String(nFormTypeCd);
  1615. pGDC->Values[nRow][9] = pADO->FieldByName("VMS_FORM_NM")->AsString;
  1616. if (nFormTypeCd == 70)
  1617. {
  1618. pGDC->Values[nRow][3] = "200"; //동영상기본이미지번호
  1619. }
  1620. else
  1621. if (nFormTypeCd == 80)
  1622. {
  1623. pGDC->Values[nRow][3] = "300"; //스트리밍기본이미지번호
  1624. }
  1625. else
  1626. {
  1627. pGDC->Values[nRow][3] = "";
  1628. }
  1629. pGDC->Values[nRow][4] = "";
  1630. }
  1631. }
  1632. catch(EDatabaseError &E)
  1633. {
  1634. DBERRORMSG("TVMSM700M::LoadVmsFormList", String(E.ClassName()), E.Message, sQry);
  1635. throw Exception(String(E.ClassName()) + E.Message);
  1636. }
  1637. catch(Exception &e)
  1638. {
  1639. DBERRORMSG("TVMSM700M::LoadVmsFormList", String(e.ClassName()), e.Message, sQry);
  1640. throw Exception(String(e.ClassName()) + e.Message);
  1641. }
  1642. }
  1643. __finally
  1644. {
  1645. if (pADO)
  1646. {
  1647. pADO->Close();
  1648. delete pADO;
  1649. }
  1650. for (ii = 0; ii < eSchTp_max; ii++)
  1651. {
  1652. if (FListFrm[ii]) FListFrm[ii]->EndUpdate();
  1653. }
  1654. }
  1655. return true;
  1656. }
  1657. //---------------------------------------------------------------------------
  1658. void __fastcall TVMSM700M::cxGridColumn172CustomDrawCell(TcxCustomGridTableView *Sender, TcxCanvas *ACanvas, TcxGridTableDataCellViewInfo *AViewInfo,
  1659. bool &ADone)
  1660. {
  1661. int nRecordIdx = AViewInfo->GridRecord->RecordIndex;
  1662. if (nRecordIdx < 0)
  1663. {
  1664. return;
  1665. }
  1666. try
  1667. {
  1668. int nItemIdx = AViewInfo->Item->Index;
  1669. if (VarIsNull(AViewInfo->GridRecord->DisplayTexts[nItemIdx])) return;
  1670. String sEndDt = AViewInfo->GridRecord->DisplayTexts[nItemIdx];
  1671. if (sEndDt < Now().FormatString(STR_HHNN))
  1672. {
  1673. ACanvas->Canvas->Brush->Color = clSilver;
  1674. }
  1675. }
  1676. catch(Exception &e)
  1677. {
  1678. }
  1679. }
  1680. //---------------------------------------------------------------------------