VMSM610MF.cpp 41 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141
  1. //---------------------------------------------------------------------------
  2. #include <vcl.h>
  3. #include "ITSSkinF.h"
  4. #include "ITSUtilF.h"
  5. #include "AppGlobalF.h"
  6. #include "CDSVmsIfscF.h"
  7. #include "CDSFontF.h"
  8. #include "CDSVmsIfscF.h"
  9. #include "CDSVmsDsplCndtF.h"
  10. #pragma hdrstop
  11. #include "VMSM610MF.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 "VmsDesignerF"
  79. #pragma link "cxColorComboBox"
  80. #pragma link "cxCalc"
  81. #pragma resource "*.dfm"
  82. TVMSM610M *VMSM610M = NULL;
  83. //---------------------------------------------------------------------------
  84. __fastcall TVMSM610M::TVMSM610M(TComponent* Owner)
  85. : TForm(Owner)
  86. {
  87. ITSSkin_Load(this);
  88. ////CMM_LoadForm(g_sFormsDir, this);
  89. FSelected = false;
  90. FUpdate= false;
  91. FTitle = Caption;//"VMS 교통상황 폼 관리";
  92. }
  93. //---------------------------------------------------------------------------
  94. void __fastcall TVMSM610M::CommClose()
  95. {
  96. try {
  97. if (m_pEdtDesigner) {
  98. delete m_pEdtDesigner;
  99. m_pEdtDesigner = NULL;
  100. }
  101. ////CMM_SaveForm(g_sFormsDir, this);
  102. }
  103. catch(...) {
  104. }
  105. }
  106. //---------------------------------------------------------------------------
  107. void __fastcall TVMSM610M::FormCreate(TObject *Sender)
  108. {
  109. m_pEdtDesigner = new TVmsFormDesigner(PnlEditForm);
  110. //FOR_STL(TCDSFontColor*, pObj, CDSFontManager->FColors)
  111. {
  112. //TODO m_pEdtDesigner->InitFontColor(pObj->VMS_FONT_COLR_CD, (TColor)pObj->VMS_FONT_COLR_VAL);
  113. }
  114. }
  115. //---------------------------------------------------------------------------
  116. void __fastcall TVMSM610M::FormShow(TObject *Sender)
  117. {
  118. Refresh();
  119. FormInit();
  120. PnlEdtBack->Width = FVmsWidth+4;
  121. PnlEdtBack->Height= FVmsHeight+4;
  122. LoadVmsIfsc(FVmsCtlrId);
  123. TmrShow->Enabled = true;
  124. }
  125. //---------------------------------------------------------------------------
  126. void __fastcall TVMSM610M::FormInit()
  127. {
  128. TvObjList->OptionsView->NoDataToDisplayInfoText = "<설정 가능한 객체 정보가 없습니다>";
  129. LoadVmsDsplCndtInfo();
  130. m_pEdtDesigner->ApplicationHandle = (long)Handle;
  131. FNewDb = false;
  132. }
  133. //---------------------------------------------------------------------------
  134. void __fastcall TVMSM610M::LoadVmsDsplCndtInfo()
  135. {
  136. CbVmsDsplCndt->Properties->Items->Clear();
  137. FOR_STL(TVmsDsplCndt*, pCndt, VmsDsplCndtManager.FLists) {
  138. CbVms->Properties->Items->Add(" [" + pCndt->VMS_FORM_DSPL_CNDT_ID + "] " + pCndt->VMS_FORM_DSPL_CNDT_NM);
  139. }
  140. CbVmsDsplCndt->ItemIndex = -1;
  141. }
  142. //---------------------------------------------------------------------------
  143. void __fastcall TVMSM610M::LoadVmsIfsc(String AVmsCtlrId)
  144. {
  145. CMM_ClearGridTableView(TvAxis);
  146. try {
  147. int nRow;
  148. TcxDataController *pGDC = TvAxis->DataController;
  149. TvAxis->BeginUpdate();
  150. TVmsRltnSect *pRltnSect = VmsIfscManager->FRltnLists.Find(AVmsCtlrId);
  151. if (pRltnSect != NULL) {
  152. FOR_STL(TVmsSect*, pSect, pRltnSect->FLists) {
  153. nRow = pGDC->AppendRecord();
  154. pGDC->Values[nRow][Col00->Index] = pSect->VMS_CTLR_ID;
  155. pGDC->Values[nRow][Col01->Index] = pSect->VMS_SECT_ID;
  156. pGDC->Values[nRow][Col02->Index] = pSect->VMS_SECT_NM;
  157. pGDC->Values[nRow][Col03->Index] = pSect->VMS_DSPL_STRT_NM;
  158. pGDC->Values[nRow][Col04->Index] = pSect->VMS_DSPL_END_NM;
  159. pGDC->Values[nRow][Col05->Index] = pSect->VMS_DTUR_SECT_ID;
  160. }
  161. }
  162. }
  163. __finally {
  164. TvAxis->EndUpdate();
  165. CMM_ExpandCollapseChk(TvAxis, true);
  166. }
  167. #if 0
  168. String sQry;
  169. TADOQuery *pADO = NULL;
  170. sQry = "SELECT A.VMS_CTLR_ID, A.SN, A.VMS_SECT_ID, A.VMS_DTUR_SECT_ID, \r\n"
  171. " B.VMS_SECT_NM, B.VMS_DSPL_STRT_NM, B.VMS_DSPL_END_NM, \r\n"
  172. " B.VMS_DSPL_SECT_NM \r\n"
  173. " FROM TB_VMS_VMS_SECT A, \r\n"
  174. " TB_VMS_SECT B \r\n"
  175. " WHERE 1=1 \r\n"
  176. " AND A.VMS_CTLR_ID = :p01 \r\n"
  177. " AND A.VMS_SECT_ID = B.VMS_SECT_ID \r\n"
  178. " ORDER BY A.VMS_CTLR_ID, A.SN \r\n";
  179. try {
  180. int nRow;
  181. TcxDataController *pGDC = TvAxis->DataController;
  182. TvAxis->BeginUpdate();
  183. try {
  184. pADO = new TADOQuery(NULL);
  185. pADO->Close();
  186. pADO->Connection = ITSDb_GetConnection();
  187. ITSDb_SQLText(pADO, sQry);
  188. ITSDb_SQLBind(pADO, "p01", AVmsCtlrId);
  189. ITSDb_SQLOpen(pADO);
  190. for( ; !pADO->Eof; pADO->Next()) {
  191. nRow = pGDC->AppendRecord();
  192. pGDC->Values[nRow][Col00->Index] = pADO->FieldByName("VMS_CTLR_ID")->AsString;
  193. pGDC->Values[nRow][Col01->Index] = pADO->FieldByName("VMS_SECT_ID")->AsString;
  194. pGDC->Values[nRow][Col02->Index] = pADO->FieldByName("VMS_SECT_NM")->AsString;
  195. pGDC->Values[nRow][Col03->Index] = pADO->FieldByName("VMS_DSPL_STRT_NM")->AsString;
  196. pGDC->Values[nRow][Col04->Index] = pADO->FieldByName("VMS_DSPL_END_NM")->AsString;
  197. pGDC->Values[nRow][Col05->Index] = pADO->FieldByName("VMS_DTUR_SECT_ID")->AsString;
  198. }
  199. }
  200. catch(EDatabaseError &E) {
  201. DBERRORMSG("TVMSM610M::LoadVmsIfsc", String(E.ClassName()), E.Message, sQry);
  202. throw Exception(String(E.ClassName()) + E.Message);
  203. }
  204. catch(Exception &e) {
  205. DBERRORMSG("TVMSM610M::LoadVmsIfsc", String(e.ClassName()), e.Message, sQry);
  206. throw Exception(String(e.ClassName()) + e.Message);
  207. }
  208. }
  209. __finally {
  210. if (pADO) {
  211. pADO->Close();
  212. delete pADO;
  213. }
  214. TvAxis->EndUpdate();
  215. CMM_ExpandCollapseChk(TvAxis, true);
  216. }
  217. #endif
  218. }
  219. //---------------------------------------------------------------------------
  220. void __fastcall TVMSM610M::TmrShowTimer(TObject *Sender)
  221. {
  222. TmrShow->Enabled = false;
  223. BtnSearchClick(NULL);
  224. }
  225. //---------------------------------------------------------------------------
  226. void __fastcall TVMSM610M::BtnSearchClick(TObject *Sender)
  227. {
  228. RefreshData();
  229. EdFocus->SetFocus();
  230. }
  231. //---------------------------------------------------------------------------
  232. void __fastcall TVMSM610M::RefreshData()
  233. {
  234. // 검색조건에 의한 링크 데이터 조회
  235. FormClear();
  236. m_pEdtDesigner->Clear();
  237. m_pEdtDesigner->SizeType = FVmsTypeCd;
  238. m_pEdtDesigner->SetSize(FVmsWidth, FVmsHeight);
  239. m_pEdtDesigner->SetPos(0, 0);
  240. m_pEdtDesigner->BkColorCode = FFormColor;
  241. m_pEdtDesigner->EditMode = true;
  242. m_pEdtDesigner->Show();
  243. //InitObjectList();
  244. //LoadFormObjectInfo(FFormId, m_pEdtDesigner);
  245. //DispObjectListData();
  246. }
  247. //---------------------------------------------------------------------------
  248. void __fastcall TVMSM610M::AddTrafficTypeObject(int ARow, String AIfscId)
  249. {
  250. TVmsIfsc *pObj;
  251. TcxGridDataController *pGDC = TvObjList->DataController;
  252. pGDC->Values[ARow][ColIfscId->Index] = AIfscId;
  253. //pObj = VmsIfscManager->FLists.Find(FIfscId[0].ToIntDef(0));
  254. pObj = VmsIfscManager->FLists.Find(AIfscId.ToIntDef(0));
  255. if (!pObj) return;
  256. pGDC->Values[ARow][ColIfscNm->Index] = pObj->VMS_IFSC_NM;
  257. pGDC->Values[ARow][ColIfscStr->Index] = pObj->DSPL_STRT_NODE_NM;
  258. pGDC->Values[ARow][ColIfscEnd->Index] = pObj->DSPL_END_NODE_NM;
  259. }
  260. //---------------------------------------------------------------------------
  261. void __fastcall TVMSM610M::InitObjectList()
  262. {
  263. CMM_ClearGridTableView(TvObjList);
  264. TcxGridDataController *pGDC = TvObjList->DataController;
  265. ColObj03->Visible = false;
  266. ColObj04->Visible = false;
  267. try
  268. {
  269. TvObjList->BeginUpdate();
  270. pGDC->BeginUpdate();
  271. int nRow;
  272. switch(FFormType)
  273. {
  274. case 11:// ' 소통상황(1단)
  275. nRow = pGDC->AppendRecord();
  276. pGDC->Values[nRow][ColObj01->Index] = "11";
  277. pGDC->Values[nRow][ColObj02->Index] = FrmLang->lblForm11->Caption;//"1Row Traffic";//"1단 소통정보";
  278. pGDC->Values[nRow][ColObjType->Index] = "Form";
  279. AddTrafficTypeObject(nRow, FIfscId[0]);
  280. break;
  281. case 12:// ' 소통상황(2단)
  282. nRow = pGDC->AppendRecord();
  283. pGDC->Values[nRow][ColObj01->Index] = "11";
  284. pGDC->Values[nRow][ColObj02->Index] = FrmLang->lblForm11->Caption;//"1Row Traffic";//"1단 소통정보";
  285. pGDC->Values[nRow][ColObjType->Index] = "Form";
  286. AddTrafficTypeObject(nRow, FIfscId[0]);
  287. nRow = pGDC->AppendRecord();
  288. pGDC->Values[nRow][ColObj01->Index] = "12";
  289. pGDC->Values[nRow][ColObj02->Index] = FrmLang->lblForm12->Caption;//"2Row Traffic";//"2단 소통정보";
  290. pGDC->Values[nRow][ColObjType->Index] = "Form";
  291. AddTrafficTypeObject(nRow, FIfscId[1]);
  292. break;
  293. case 13:// ' 소통상황(3단)
  294. nRow = pGDC->AppendRecord();
  295. pGDC->Values[nRow][ColObj01->Index] = "11";
  296. pGDC->Values[nRow][ColObj02->Index] = FrmLang->lblForm11->Caption;//"1Row Traffic";//"1단 소통정보";
  297. pGDC->Values[nRow][ColObjType->Index] = "Form";
  298. AddTrafficTypeObject(nRow, FIfscId[0]);
  299. nRow = pGDC->AppendRecord();
  300. pGDC->Values[nRow][ColObj01->Index] = "12";
  301. pGDC->Values[nRow][ColObj02->Index] = FrmLang->lblForm12->Caption;//"2Row Traffic";//"2단 소통정보";
  302. pGDC->Values[nRow][ColObjType->Index] = "Form";
  303. AddTrafficTypeObject(nRow, FIfscId[1]);
  304. nRow = pGDC->AppendRecord();
  305. pGDC->Values[nRow][ColObj01->Index] = "13";
  306. pGDC->Values[nRow][ColObj02->Index] = FrmLang->lblForm13->Caption;//"3Row Traffic";//"3단 소통정보";
  307. pGDC->Values[nRow][ColObjType->Index] = "Form";
  308. AddTrafficTypeObject(nRow, FIfscId[2]);
  309. break;
  310. case 14:// ' 소통상황(4단)
  311. nRow = pGDC->AppendRecord();
  312. pGDC->Values[nRow][ColObj01->Index] = "11";
  313. pGDC->Values[nRow][ColObj02->Index] = FrmLang->lblForm11->Caption;//"1Row Traffic";//"1단 소통정보";
  314. pGDC->Values[nRow][ColObjType->Index] = "Form";
  315. AddTrafficTypeObject(nRow, FIfscId[0]);
  316. nRow = pGDC->AppendRecord();
  317. pGDC->Values[nRow][ColObj01->Index] = "12";
  318. pGDC->Values[nRow][ColObj02->Index] = FrmLang->lblForm12->Caption;//"2Row Traffic";//"2단 소통정보";
  319. pGDC->Values[nRow][ColObjType->Index] = "Form";
  320. AddTrafficTypeObject(nRow, FIfscId[1]);
  321. nRow = pGDC->AppendRecord();
  322. pGDC->Values[nRow][ColObj01->Index] = "13";
  323. pGDC->Values[nRow][ColObj02->Index] = FrmLang->lblForm13->Caption;//""3Row Traffic";//"3단 소통정보";
  324. pGDC->Values[nRow][ColObjType->Index] = "Form";
  325. AddTrafficTypeObject(nRow, FIfscId[2]);
  326. nRow = pGDC->AppendRecord();
  327. pGDC->Values[nRow][ColObj01->Index] = "14";
  328. pGDC->Values[nRow][ColObj02->Index] = FrmLang->lblForm14->Caption;//""4Row Traffic";//"4단 소통정보";
  329. pGDC->Values[nRow][ColObjType->Index] = "Form";
  330. AddTrafficTypeObject(nRow, FIfscId[2]);
  331. break;
  332. case 15:// ' 소통상황(도형식)
  333. ColObj03->Visible = true;
  334. break;
  335. default:
  336. break;
  337. }
  338. }
  339. __finally
  340. {
  341. pGDC->EndUpdate();
  342. TvObjList->EndUpdate();
  343. }
  344. }
  345. //---------------------------------------------------------------------------
  346. void __fastcall TVMSM610M::DispObjectListData()
  347. {
  348. TcxGridDataController *pGDC = TvObjList->DataController;
  349. int nRow;
  350. TVmsFormObject *pObj;
  351. int nObjCnt = m_pEdtDesigner->GetObjectCount();
  352. for(int ii = 0; ii < nObjCnt; ii++)
  353. {
  354. pObj = m_pEdtDesigner->GetObject(ii);
  355. if (pObj)
  356. {
  357. switch(pObj->ObjType.ToIntDef(0))
  358. {
  359. case 91: //@축통행시간(고정)
  360. nRow = pGDC->AppendRecord();
  361. pGDC->Values[nRow][ColObj01->Index] = "15";
  362. pGDC->Values[nRow][ColObj02->Index] = FrmLang->lblFill91->Caption;//"AxisTravelTime";//"축통행시간(고정)";
  363. pGDC->Values[nRow][ColObj03->Index] = String(pObj->ObjSeq);
  364. pGDC->Values[nRow][ColObjType->Index] = "x";
  365. AddTrafficTypeObject(nRow, pObj->Tag);
  366. break;
  367. case 92: //@축소통상황(고정)
  368. nRow = pGDC->AppendRecord();
  369. pGDC->Values[nRow][ColObj01->Index] = "15";
  370. pGDC->Values[nRow][ColObj02->Index] = FrmLang->lblFill92->Caption;//"Traffic(Fix)";//"소통상황(고정)";
  371. pGDC->Values[nRow][ColObj03->Index] = String(pObj->ObjSeq);
  372. pGDC->Values[nRow][ColObjType->Index] = "x";
  373. AddTrafficTypeObject(nRow, pObj->Tag);
  374. break;
  375. #if 0
  376. case 17: //@소통정보이미지1
  377. nRow = pGDC->AppendRecord();
  378. pGDC->Values[nRow][ColObj01->Index] = String(FFormType);//"17";
  379. pGDC->Values[nRow][ColObj02->Index] = FrmLang->lblFill17->Caption;//"TrafficImage";//"소통정보이미지";
  380. pGDC->Values[nRow][ColObj03->Index] = String(pObj->ObjSeq);
  381. pGDC->Values[nRow][ColObjType->Index] = "17";
  382. AddTrafficTypeObject(nRow, FIfscId[4]);
  383. break;
  384. case 27: //@소통정보이미지2
  385. nRow = pGDC->AppendRecord();
  386. pGDC->Values[nRow][ColObj01->Index] = String(FFormType);//"27";
  387. pGDC->Values[nRow][ColObj02->Index] = FrmLang->lblFill27->Caption;//"TrafficImage2";//"소통정보이미지2";
  388. pGDC->Values[nRow][ColObj03->Index] = String(pObj->ObjSeq);
  389. pGDC->Values[nRow][ColObjType->Index] = "27";
  390. AddTrafficTypeObject(nRow, FIfscId[5]);
  391. break;
  392. case 37: //@소통정보이미지3
  393. nRow = pGDC->AppendRecord();
  394. pGDC->Values[nRow][ColObj01->Index] = String(FFormType);//"37";
  395. pGDC->Values[nRow][ColObj02->Index] = FrmLang->lblFill37->Caption;//"TrafficImage3";//"소통정보이미지3";
  396. pGDC->Values[nRow][ColObj03->Index] = String(pObj->ObjSeq);
  397. pGDC->Values[nRow][ColObjType->Index] = "37";
  398. AddTrafficTypeObject(nRow, FIfscId[6]);
  399. break;
  400. case 47: //@소통정보이미지4
  401. nRow = pGDC->AppendRecord();
  402. pGDC->Values[nRow][ColObj01->Index] = String(FFormType);//"47";
  403. pGDC->Values[nRow][ColObj02->Index] = FrmLang->lblFill47->Caption;//"TrafficImage4";//"소통정보이미지4";
  404. pGDC->Values[nRow][ColObj03->Index] = String(pObj->ObjSeq);
  405. pGDC->Values[nRow][ColObjType->Index] = "47";
  406. AddTrafficTypeObject(nRow, FIfscId[7]);
  407. break;
  408. #endif
  409. }
  410. }
  411. }
  412. }
  413. //---------------------------------------------------------------------------
  414. void __fastcall TVMSM610M::BtnClosexClick(TObject *Sender)
  415. {
  416. FSelected = false;
  417. Close();
  418. }
  419. //---------------------------------------------------------------------------
  420. void __fastcall TVMSM610M::FormClose(TObject *Sender, TCloseAction &Action)
  421. {
  422. CommClose();
  423. VMSM610M = NULL;
  424. //Action = caFree;
  425. }
  426. //---------------------------------------------------------------------------
  427. void __fastcall TVMSM610M::LoadFormObjectInfo(String AFormId, TVmsFormDesigner *ADesigner)
  428. {
  429. ADesigner->Clear();
  430. String sQry;
  431. TADOQuery *pADO = NULL;
  432. sQry = "SELECT A.*, \r\n"
  433. " C.VMS_FONT_NAME_NM, \r\n"
  434. " B.IMAG_DATA AS SYMB_IMG, \r\n"
  435. " B.SYMB_EXPL AS SYMB_IMG_NM, \r\n"
  436. " D.VMS_FORM_TYPE_CD \r\n"
  437. " FROM TB_VMS_FORM_OBJECT A, \r\n"
  438. " TB_VMS_SYMB_LIB B, \r\n"
  439. " TB_VMS_FONT_NAME C, \r\n"
  440. " TB_VMS_FORM D \r\n"
  441. " WHERE D.VMS_FORM_ID = :p01 \r\n"
  442. " AND D.VMS_FORM_ID = A.VMS_FORM_ID \r\n"
  443. " AND A.SYMB_LIB_NMBR = B.SYMB_LIB_NMBR(+) \r\n"
  444. " AND A.VMS_FONT_NAME_CD = C.VMS_FONT_NAME_CD(+) \r\n"
  445. " ORDER BY A.VMS_FORM_OBJECT_ID ASC \r\n";
  446. int VMS_FORM_TYPE_CD = -1;
  447. try
  448. {
  449. try
  450. {
  451. pADO = new TADOQuery(NULL);
  452. pADO->Close();
  453. pADO->Connection = ITSDb_GetConnection();
  454. ITSDb_SQLText(pADO, sQry);
  455. ITSDb_SQLBind(pADO, "p01", AFormId);
  456. ITSDb_SQLOpen(pADO);
  457. int nDrawType;
  458. String sObjKind;
  459. for( ; !pADO->Eof; pADO->Next())
  460. {
  461. VMS_FORM_TYPE_CD = pADO->FieldByName("VMS_FORM_TYPE_CD")->AsInteger;
  462. int nFormId = pADO->FieldByName("VMS_FORM_ID")->AsInteger;
  463. int nObjId = pADO->FieldByName("VMS_FORM_OBJECT_ID")->AsInteger;
  464. int nObjType = pADO->FieldByName("VMS_FORM_OBJECT_TYPE_CD")->AsInteger;
  465. if (nObjType == 1 || //심볼
  466. nObjType == 2 || //이미지
  467. nObjType == 3 || //배경이미지
  468. nObjType == 17 || //@소통정보이미지 (1열)
  469. nObjType == 27 || //@소통정보이미지2(2열)
  470. nObjType == 37 || //@소통정보이미지3(3열)
  471. nObjType == 47 || //@소통정보이미지4(3열)
  472. nObjType == 200 || //동영상
  473. nObjType == 300 || //스트리밍영상
  474. nObjType == 406 || //@통합대기등급 이미지
  475. nObjType == 407 || //@미세먼지등급 이미지
  476. nObjType == 408 || //@초미세먼지등급 이미지
  477. nObjType == 413 //@오존등급이미지
  478. )
  479. {
  480. if (nObjType == 1) sObjKind = OBJKIND_IMAGEID; //Image Id
  481. else sObjKind = OBJKIND_IMAGE; //Image
  482. nDrawType = 1; //이미지그리기
  483. }
  484. else
  485. {
  486. sObjKind = OBJKIND_TEXT; //문자열
  487. nDrawType = 0; //문자열그리기
  488. }
  489. //실재 맵핑된 구간의 정보를 표출하도록 한다.
  490. int nBlinking = pADO->FieldByName("VMS_DSPL_BLINKING")->AsInteger;
  491. int nPosX = pADO->FieldByName("VMS_DSPL_XCRDN")->AsInteger;
  492. int nPosY = pADO->FieldByName("VMS_DSPL_YCRDN")->AsInteger;
  493. int nDsplW = pADO->FieldByName("VMS_DSPL_WIDTH")->AsInteger;
  494. int nDsplH = pADO->FieldByName("VMS_DSPL_HEIGHT")->AsInteger;
  495. TVmsFormObject *pObj = ADesigner->AddObject((VmsObjectDrawType)nDrawType);
  496. if (!pObj) continue;
  497. //11 , ' @구간명
  498. //12 , ' @시점명
  499. //13 , ' @종점명
  500. //14 , ' @소통상황
  501. //15 , ' @통행시간
  502. //16 , ' @통행속도
  503. //17 , ' @방향
  504. pObj->Text = pADO->FieldByName("VMS_DSPL_TXT")->AsString.Trim();
  505. pObj->RunText = pObj->Text;
  506. String sIfscId = "";
  507. if (nObjType >= 11 && nObjType < 17)
  508. sIfscId = FIfscId[0];
  509. else
  510. if (nObjType >= 21 && nObjType < 27)
  511. sIfscId = FIfscId[1];
  512. else
  513. if (nObjType >= 31 && nObjType < 37)
  514. sIfscId = FIfscId[2];
  515. else
  516. if (nObjType >= 41 && nObjType < 47)
  517. sIfscId = FIfscId[3];
  518. switch(nObjType)
  519. {
  520. case 17: sIfscId = FIfscId[4]; break;
  521. case 27: sIfscId = FIfscId[5]; break;
  522. case 37: sIfscId = FIfscId[6]; break;
  523. case 47: sIfscId = FIfscId[7]; break;
  524. }
  525. if (sIfscId != "")
  526. {
  527. TVmsIfsc *pIfscObj;
  528. pIfscObj = VmsIfscManager->FLists.Find(sIfscId.ToIntDef(0));
  529. if (pIfscObj)
  530. {
  531. switch(nObjType)
  532. {
  533. case 11: case 21: case 31: case 41:
  534. pObj->RunText = pIfscObj->VMS_IFSC_NM;
  535. break;
  536. case 12: case 22: case 32: case 42:
  537. pObj->RunText = pIfscObj->DSPL_STRT_NODE_NM;
  538. break;
  539. case 13: case 23: case 33: case 43:
  540. pObj->RunText = pIfscObj->DSPL_END_NODE_NM;
  541. break;
  542. }
  543. }
  544. }
  545. if (nObjType == 200 || nObjType == 300)
  546. {
  547. pObj->EditMode = false;
  548. }
  549. pObj->ObjSeq = nObjId;
  550. pObj->ObjId = nObjId;
  551. pObj->ObjKind = sObjKind;
  552. pObj->Tag = pADO->FieldByName("VMS_IFSC_ID")->AsString;
  553. pObj->ObjType = pADO->FieldByName("VMS_FORM_OBJECT_TYPE_CD")->AsString;
  554. pObj->ObjSize = pADO->FieldByName("VMS_DSPL_SIZE")->AsInteger;
  555. pObj->BkColorCode = pADO->FieldByName("VMS_DSPL_BKCOLOR")->AsString;
  556. pObj->Blink = nBlinking == 1 ? true : false;
  557. pObj->ImageId = pADO->FieldByName("SYMB_LIB_NMBR")->AsString;
  558. pObj->SetPos(nPosX, nPosY);
  559. if (pObj->ObjKind == OBJKIND_TEXT) // 문자열
  560. {
  561. int nFontBold = pADO->FieldByName("VMS_FONT_BOLD")->AsInteger;
  562. pObj->FontName = pADO->FieldByName("VMS_FONT_NAME_NM")->AsString;
  563. pObj->FontNameCode = pADO->FieldByName("VMS_FONT_NAME_CD")->AsString;
  564. pObj->FontColorCode = pADO->FieldByName("VMS_FONT_COLR_CD")->AsString;
  565. pObj->FontSize = pADO->FieldByName("VMS_FONT_SIZE")->AsInteger;
  566. pObj->FontBold = nFontBold == 1 ? true : false;
  567. pObj->TextAlign = pADO->FieldByName("VMS_FONT_ALIGN")->AsInteger;
  568. //pObj->SetSize(pADO->FieldByName("VMS_DSPL_WIDTH")->AsInteger, pADO->FieldByName("VMS_DSPL_HEIGHT")->AsInteger);
  569. //pObj->SetPos(nPosX, nPosY);
  570. pObj->SetRuntimeText(pObj->RunText);
  571. #if 0
  572. Label1->AutoSize = true;
  573. Label1->Font->Name = pObj->FontName;
  574. Label1->Font->Size = pObj->FontSize;
  575. Label1->Caption = pObj->RunText;
  576. if (pObj->FontBold)
  577. Label1->Font->Style = TFontStyles() << fsBold;
  578. else
  579. Label1->Font->Style = TFontStyles();
  580. //int nWidth = pADO->FieldByName("VMS_DSPL_WIDTH")->AsInteger;
  581. //nWidth = Lavel1->Width;
  582. #if 0
  583. switch(pObj->TextAlign)
  584. {
  585. case 0://text_align_left:
  586. //좌측정력인 경우 위치조정 필요 없음.
  587. break;
  588. case 1://text_align_right:
  589. //좌측에서 글자길이를 뺀다음 만약 음수이면 0으로 설정
  590. //pADO->FieldByName("VMS_DSPL_WIDTH")->AsInteger
  591. nPosX = (nPosX+pADO->FieldByName("VMS_DSPL_WIDTH")->AsInteger) - Label1->Width;
  592. break;
  593. case 2://text_align_center:
  594. //원래 글자의 중앙값을 얻은 다음에 조정된 글자의 1/2 크기를 뺀다음 음수이면 0으로 설정
  595. nPosX = (nPosX+(pADO->FieldByName("VMS_DSPL_WIDTH")->AsInteger/2)) - (Label1->Width/2);
  596. break;
  597. }
  598. if (nPosX < 0) nPosX = 0;
  599. //AVmsObj->TextWidth = pLabel->Width;
  600. #endif
  601. pObj->SetSize(Label1->Width, pADO->FieldByName("VMS_DSPL_HEIGHT")->AsInteger);
  602. #endif
  603. }
  604. else //if (sObjKind == "1" || sObjKind == "2") // 이미지(1), 이미지 ID(2)
  605. {
  606. if (pObj->ObjKind == OBJKIND_IMAGEID)
  607. {
  608. pObj->Text = pADO->FieldByName("SYMB_LIB_NMBR")->AsString;
  609. }
  610. TStream *pStream = NULL;
  611. pStream = pADO->CreateBlobStream(pADO->FieldByName("VMS_DSPL_FIGR"), bmRead);
  612. try
  613. {
  614. if (pStream && pStream->Size > 0)
  615. {
  616. Graphics::TBitmap *Bitmap = pObj->GetBitmap();
  617. pStream->Position = 0;
  618. Bitmap->LoadFromStream(pStream);
  619. pObj->GetImage()->AutoSize= false;
  620. pObj->GetImage()->Stretch = true;
  621. pObj->GetImage()->Width = nDsplW;
  622. pObj->GetImage()->Height = nDsplH;
  623. pObj->SetSize(nDsplW, nDsplH);
  624. pObj->SetPos(nPosX, nPosY);
  625. //pObj->SetSize(Bitmap->Width, Bitmap->Height);
  626. }
  627. }
  628. __finally
  629. {
  630. SAFE_DELETE(pStream);
  631. }
  632. }
  633. //pObj->SetPos(nPosX, nPosY);
  634. pObj->Show();
  635. pObj->BringToFront();
  636. }
  637. if (VMS_FORM_TYPE_CD == eFormTp_traf_1 && FVmsTypeCd == "VMP2")
  638. {
  639. TVmsFormObject *pArw = NULL;
  640. TVmsFormObject *pStr = NULL;
  641. TVmsFormObject *pEnd = NULL;
  642. int nObjCnt = ADesigner->GetObjectCount();
  643. for(int ii = 0; ii < nObjCnt; ii++)
  644. {
  645. TVmsFormObject *pObj = ADesigner->GetObject(ii);
  646. if (!pObj) continue;
  647. int nObjType = pObj->ObjType.ToIntDef(0);
  648. switch(nObjType)
  649. {
  650. case 12: // @시점명 Y
  651. pStr = pObj;
  652. break;
  653. case 13: // @종점명 Y
  654. pEnd = pObj;
  655. break;
  656. }
  657. }
  658. for(int ii = 0; ii < nObjCnt; ii++)
  659. {
  660. TVmsFormObject *pObj = ADesigner->GetObject(ii);
  661. if (!pObj) continue;
  662. int nObjType = pObj->ObjType.ToIntDef(0);
  663. switch(nObjType)
  664. {
  665. case 1: // @심볼 Y
  666. case 2: // @이미지 Y
  667. case 17: // @소통정보이미지 Y
  668. //if (pFormObj->TRFC_FILL_CD == "T")
  669. if (pStr && pObj->Top <= (pStr->Top+pStr->Height) )
  670. {
  671. pArw = pObj;
  672. }
  673. break;
  674. }
  675. }
  676. if (pArw && pStr && pEnd)
  677. {
  678. int nRange = pStr->Top + pStr->Height;
  679. if (pArw->Top <= nRange && pEnd->Top <= nRange)
  680. {
  681. int ARRAWGAP = 5;
  682. int nLeft = 0;
  683. int nTotW = pStr->Width + ARRAWGAP +
  684. pArw->Width + ARRAWGAP +
  685. pEnd->Width;
  686. if (nTotW < ADesigner->Width)
  687. {
  688. nLeft = (ADesigner->Width - nTotW) / 2;
  689. }
  690. nLeft = (ADesigner->Width - nTotW) / 2;
  691. pStr->Left = nLeft;
  692. pArw->Left = pStr->Left + pStr->Width + ARRAWGAP;
  693. pEnd->Left = pArw->Left + pArw->Width + ARRAWGAP;
  694. }
  695. }
  696. }
  697. }
  698. catch(EDatabaseError &E)
  699. {
  700. DBERRORMSG("TVMSM610M::LoadFormObjectInfo", String(E.ClassName()), E.Message, sQry);
  701. throw Exception(String(E.ClassName()) + E.Message);
  702. }
  703. catch(Exception &exception)
  704. {
  705. DBERRORMSG("TVMSM610M::LoadFormObjectInfo", String(exception.ClassName()), exception.Message, sQry);
  706. throw Exception(String(exception.ClassName()) + exception.Message);
  707. }
  708. }
  709. __finally
  710. {
  711. if (pADO)
  712. {
  713. pADO->Close();
  714. delete pADO;
  715. }
  716. }
  717. }
  718. //---------------------------------------------------------------------------
  719. void __fastcall TVMSM610M::FormClear()
  720. {
  721. FSelIdx = -1;
  722. EdFormId->Clear();
  723. EdObjId->Clear();
  724. FNewDb = false;
  725. }
  726. //---------------------------------------------------------------------------
  727. void __fastcall TVMSM610M::TvObjListFocusedRecordChanged(TcxCustomGridTableView *Sender,
  728. TcxCustomGridRecord *APrevFocusedRecord, TcxCustomGridRecord *AFocusedRecord,
  729. bool ANewItemRecordFocusingChanged)
  730. {
  731. if (TvObjList->ViewData->RecordCount <= 0) return;
  732. if (TvObjList->DataController->FocusedRowIndex < 0) return;
  733. m_pEdtDesigner->SelectedObjectAll(false);
  734. TcxDataController *pGDC = TvObjList->DataController;
  735. int nIndex = pGDC->FocusedRecordIndex;
  736. String sObjType = pGDC->Values[nIndex][ColObjType->Index];
  737. String sFormType = pGDC->Values[nIndex][ColObj01->Index];
  738. int nFormType = sFormType.ToIntDef(0);
  739. if (nFormType == 11 || nFormType == 12 || nFormType == 13 || nFormType == 14)
  740. {
  741. BtnListAdd->Enabled = true;
  742. BtnListDelete->Enabled = true;
  743. }
  744. else
  745. {
  746. BtnListAdd->Enabled = true;
  747. BtnListDelete->Enabled = true;
  748. }
  749. if (nFormType == 15) //도형식 배경소통정보 폼
  750. {
  751. int nObjSeq = VarToStr(pGDC->Values[nIndex][ColObj03->Index]).ToIntDef(0);
  752. m_pEdtDesigner->SelectObject(nObjSeq);
  753. return;
  754. }
  755. TVmsFormObject *pObj;
  756. int nObjCnt = m_pEdtDesigner->GetObjectCount();
  757. for(int ii = 0; ii < nObjCnt; ii++)
  758. {
  759. pObj = m_pEdtDesigner->GetObject(ii);
  760. if (!pObj) continue;
  761. int nObjType = pObj->ObjType.ToIntDef(0);
  762. /*
  763. switch(sObjType.ToIntDef(-1))
  764. {
  765. case 17:
  766. case 27:
  767. case 37:
  768. case 47:
  769. if (sObjType.ToIntDef(-1) == nObjType)
  770. {
  771. m_pEdtDesigner->SelectObject(pObj->ObjSeq, true);
  772. }
  773. break;
  774. default:
  775. */
  776. switch(nFormType)
  777. {
  778. case 11:// ' 소통상황(1단)
  779. //@구간명, @시점명, @종점명
  780. if (nObjType >= 11 && nObjType <= 17)
  781. {
  782. m_pEdtDesigner->SelectObject(pObj->ObjSeq, true);
  783. }
  784. break;
  785. case 12:// ' 소통상황(2단)
  786. if (nObjType >= 21 && nObjType <= 27)
  787. {
  788. m_pEdtDesigner->SelectObject(pObj->ObjSeq, true);
  789. }
  790. break;
  791. case 13:// ' 소통상황(3단)
  792. if (nObjType >= 31 && nObjType <= 37)
  793. {
  794. m_pEdtDesigner->SelectObject(pObj->ObjSeq, true);
  795. }
  796. break;
  797. case 14:// ' 소통상황(4단)
  798. if (nObjType >= 41 && nObjType <= 47)
  799. {
  800. m_pEdtDesigner->SelectObject(pObj->ObjSeq, true);
  801. }
  802. break;
  803. default:
  804. break;
  805. }
  806. /*
  807. }
  808. */
  809. }
  810. }
  811. //---------------------------------------------------------------------------
  812. void __fastcall TVMSM610M::BtnListAddClick(TObject *Sender)
  813. {
  814. int nCellIdx = CMM_GetRecordIndex(TvObjList);
  815. if (nCellIdx < 0) return;
  816. int nIfscIdx = CMM_GetRecordIndex(TvAxis);
  817. if (nIfscIdx < 0) return;
  818. TcxGridDataController *pDcCell = TvObjList->DataController;
  819. TcxGridDataController *pDcIfsc = TvAxis->DataController;
  820. pDcCell->Values[nCellIdx][ColIfscId->Index] = pDcIfsc->Values[nIfscIdx][Col01->Index];
  821. pDcCell->Values[nCellIdx][ColIfscNm->Index] = pDcIfsc->Values[nIfscIdx][Col02->Index];
  822. pDcCell->Values[nCellIdx][ColIfscStr->Index] = pDcIfsc->Values[nIfscIdx][Col03->Index];
  823. pDcCell->Values[nCellIdx][ColIfscEnd->Index] = pDcIfsc->Values[nIfscIdx][Col04->Index];
  824. TVmsFormObject *pObj;
  825. int nObjCnt = m_pEdtDesigner->GetObjectCount();
  826. for(int ii = 0; ii < nObjCnt; ii++)
  827. {
  828. pObj = m_pEdtDesigner->GetObject(ii);
  829. if (!pObj) continue;
  830. if (!pObj->Selected) continue;
  831. int nObjType = pObj->ObjType.ToIntDef(0);
  832. switch(nObjType)
  833. {
  834. case 11: case 21: case 31: case 41:
  835. pObj->RunText = VarToStr(pDcCell->Values[nCellIdx][ColIfscNm->Index]);
  836. pObj->SetRuntimeText(pObj->RunText);
  837. break;
  838. case 12: case 22: case 32: case 42:
  839. pObj->RunText = VarToStr(pDcCell->Values[nCellIdx][ColIfscStr->Index]);
  840. pObj->SetRuntimeText(pObj->RunText);
  841. break;
  842. case 13: case 23: case 33: case 43:
  843. pObj->RunText = VarToStr(pDcCell->Values[nCellIdx][ColIfscEnd->Index]);
  844. pObj->SetRuntimeText(pObj->RunText);
  845. break;
  846. }
  847. }
  848. if (FFormType == eFormTp_traf_1 && FVmsTypeCd == "VMP2")
  849. {
  850. TVmsFormObject *pArw = NULL;
  851. TVmsFormObject *pStr = NULL;
  852. TVmsFormObject *pEnd = NULL;
  853. int nObjCnt = m_pEdtDesigner->GetObjectCount();
  854. for(int ii = 0; ii < nObjCnt; ii++)
  855. {
  856. TVmsFormObject *pObj = m_pEdtDesigner->GetObject(ii);
  857. if (!pObj) continue;
  858. int nObjType = pObj->ObjType.ToIntDef(0);
  859. switch(nObjType)
  860. {
  861. case 12: // @시점명 Y
  862. pStr = pObj;
  863. break;
  864. case 13: // @종점명 Y
  865. pEnd = pObj;
  866. break;
  867. }
  868. }
  869. for(int ii = 0; ii < nObjCnt; ii++)
  870. {
  871. TVmsFormObject *pObj = m_pEdtDesigner->GetObject(ii);
  872. if (!pObj) continue;
  873. int nObjType = pObj->ObjType.ToIntDef(0);
  874. switch(nObjType)
  875. {
  876. case 1: // @심볼 Y
  877. case 2: // @이미지 Y
  878. case 17: // @소통정보이미지 Y
  879. //if (pFormObj->TRFC_FILL_CD == "T")
  880. if (pStr && pObj->Top <= (pStr->Top+pStr->Height) )
  881. {
  882. pArw = pObj;
  883. }
  884. break;
  885. }
  886. }
  887. if (pArw && pStr && pEnd)
  888. {
  889. int nRange = pStr->Top + pStr->Height;
  890. if (pArw->Top <= nRange && pEnd->Top <= nRange)
  891. {
  892. int ARRAWGAP = 5;
  893. int nLeft = 0;
  894. int nTotW = pStr->Width + ARRAWGAP +
  895. pArw->Width + ARRAWGAP +
  896. pEnd->Width;
  897. if (nTotW < m_pEdtDesigner->Width)
  898. {
  899. nLeft = (m_pEdtDesigner->Width - nTotW) / 2;
  900. }
  901. nLeft = (m_pEdtDesigner->Width - nTotW) / 2;
  902. pStr->Left = nLeft;
  903. pArw->Left = pStr->Left + pStr->Width + ARRAWGAP;
  904. pEnd->Left = pArw->Left + pArw->Width + ARRAWGAP;
  905. }
  906. }
  907. }
  908. }
  909. //---------------------------------------------------------------------------
  910. void __fastcall TVMSM610M::BtnListDeleteClick(TObject *Sender)
  911. {
  912. int nCellIdx = CMM_GetRecordIndex(TvObjList);
  913. if (nCellIdx < 0) return;
  914. TcxGridDataController *pDcCell = TvObjList->DataController;
  915. pDcCell->Values[nCellIdx][ColIfscId->Index] = "";
  916. pDcCell->Values[nCellIdx][ColIfscNm->Index] = "";
  917. pDcCell->Values[nCellIdx][ColIfscStr->Index] = "";
  918. pDcCell->Values[nCellIdx][ColIfscEnd->Index] = "";
  919. TVmsFormObject *pObj;
  920. int nObjCnt = m_pEdtDesigner->GetObjectCount();
  921. for(int ii = 0; ii < nObjCnt; ii++)
  922. {
  923. pObj = m_pEdtDesigner->GetObject(ii);
  924. if (!pObj) continue;
  925. if (!pObj->Selected) continue;
  926. int nObjType = pObj->ObjType.ToIntDef(0);
  927. switch(nObjType)
  928. {
  929. case 11: case 21: case 31: case 41:
  930. pObj->SetRuntimeText(pObj->Text);
  931. break;
  932. case 12: case 22: case 32: case 42:
  933. pObj->SetRuntimeText(pObj->Text);
  934. break;
  935. case 13: case 23: case 33: case 43:
  936. pObj->SetRuntimeText(pObj->Text);
  937. break;
  938. }
  939. }
  940. }
  941. //---------------------------------------------------------------------------
  942. void __fastcall TVMSM610M::BtnSaveClick(TObject *Sender)
  943. {
  944. TcxDataController *pGDC = TvObjList->DataController;
  945. try
  946. {
  947. TvObjList->BeginUpdate();
  948. pGDC->BeginUpdate();
  949. int nRows = pGDC->RecordCount;
  950. try
  951. {
  952. for (int ii = 0; ii < nRows; ii++)
  953. {
  954. int nObjType = VarToStr(pGDC->Values[ii][ColObjType->Index]).ToIntDef(-1);
  955. int nFormType = VarToStr(pGDC->Values[ii][ColObj01->Index]).ToIntDef(0);
  956. String sIfscId = VarToStr(pGDC->Values[ii][ColIfscId->Index]);
  957. /*
  958. switch(nObjType)
  959. {
  960. case 17: FIfscId[4] = sIfscId; break;
  961. case 27: FIfscId[5] = sIfscId; break;
  962. case 37: FIfscId[6] = sIfscId; break;
  963. case 47: FIfscId[7] = sIfscId; break;
  964. default:
  965. */
  966. switch(nFormType)
  967. {
  968. case 11: FIfscId[0] = sIfscId; break; // ' 소통상황(1단)
  969. case 12: FIfscId[1] = sIfscId; break; // ' 소통상황(2단)
  970. case 13: FIfscId[2] = sIfscId; break; // ' 소통상황(3단)
  971. case 14: FIfscId[3] = sIfscId; break; // ' 소통상황(4단)
  972. }
  973. //break;
  974. /*
  975. }
  976. */
  977. }
  978. }
  979. catch(Exception &e)
  980. {
  981. }
  982. }
  983. __finally
  984. {
  985. pGDC->EndUpdate();
  986. TvObjList->EndUpdate();
  987. }
  988. m_pEdtDesigner->GetVmsFormImage(ImgForm);
  989. FSelected = true;
  990. Close();
  991. }
  992. //---------------------------------------------------------------------------
  993. void __fastcall TVMSM610M::Col05CustomDrawCell(TcxCustomGridTableView *Sender, TcxCanvas *ACanvas, TcxGridTableDataCellViewInfo *AViewInfo,
  994. bool &ADone)
  995. {
  996. int nRecordIdx = AViewInfo->GridRecord->RecordIndex;
  997. if (nRecordIdx < 0)
  998. {
  999. return;
  1000. }
  1001. try
  1002. {
  1003. int nItemIdx = AViewInfo->Item->Index;
  1004. if (VarIsNull(AViewInfo->GridRecord->DisplayTexts[nItemIdx])) return;
  1005. String sData = AViewInfo->GridRecord->DisplayTexts[nItemIdx];
  1006. if (sData == "Y")
  1007. {
  1008. ACanvas->Canvas->Brush->Color = clLime;
  1009. }
  1010. }
  1011. catch(Exception &e)
  1012. {
  1013. }
  1014. }
  1015. //---------------------------------------------------------------------------