VMSM610MF.cpp 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793
  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. #include "FrmVmsMsgScheMngrF.h"
  13. //---------------------------------------------------------------------------
  14. #pragma package(smart_init)
  15. #pragma link "cxButtons"
  16. #pragma link "cxCalendar"
  17. #pragma link "cxContainer"
  18. #pragma link "cxControls"
  19. #pragma link "cxDropDownEdit"
  20. #pragma link "cxEdit"
  21. #pragma link "cxGraphics"
  22. #pragma link "cxGroupBox"
  23. #pragma link "cxLabel"
  24. #pragma link "cxLookAndFeelPainters"
  25. #pragma link "cxLookAndFeels"
  26. #pragma link "cxMaskEdit"
  27. #pragma link "cxPC"
  28. #pragma link "cxPCdxBarPopupMenu"
  29. #pragma link "cxSpinEdit"
  30. #pragma link "cxSplitter"
  31. #pragma link "cxTextEdit"
  32. #pragma link "cxTimeEdit"
  33. #pragma link "dxSkinBlack"
  34. #pragma link "dxSkinBlue"
  35. #pragma link "dxSkinCaramel"
  36. #pragma link "dxSkinCoffee"
  37. #pragma link "dxSkinDarkRoom"
  38. #pragma link "dxSkinDarkSide"
  39. #pragma link "dxSkinFoggy"
  40. #pragma link "dxSkinGlassOceans"
  41. #pragma link "dxSkiniMaginary"
  42. #pragma link "dxSkinLilian"
  43. #pragma link "dxSkinLiquidSky"
  44. #pragma link "dxSkinLondonLiquidSky"
  45. #pragma link "dxSkinMcSkin"
  46. #pragma link "dxSkinMoneyTwins"
  47. #pragma link "dxSkinOffice2007Black"
  48. #pragma link "dxSkinOffice2007Blue"
  49. #pragma link "dxSkinOffice2007Green"
  50. #pragma link "dxSkinOffice2007Pink"
  51. #pragma link "dxSkinOffice2007Silver"
  52. #pragma link "dxSkinOffice2010Black"
  53. #pragma link "dxSkinOffice2010Blue"
  54. #pragma link "dxSkinOffice2010Silver"
  55. #pragma link "dxSkinsCore"
  56. #pragma link "dxSkinscxPCPainter"
  57. #pragma link "dxSkinSeven"
  58. #pragma link "dxSkinSharp"
  59. #pragma link "dxSkinSilver"
  60. #pragma link "dxSkinStardust"
  61. #pragma link "cxRadioGroup"
  62. #pragma link "cxClasses"
  63. #pragma link "cxCustomData"
  64. #pragma link "cxData"
  65. #pragma link "cxDataStorage"
  66. #pragma link "cxDBData"
  67. #pragma link "cxFilter"
  68. #pragma link "cxGrid"
  69. #pragma link "cxGridCustomTableView"
  70. #pragma link "cxGridCustomView"
  71. #pragma link "cxGridDBTableView"
  72. #pragma link "cxGridLevel"
  73. #pragma link "cxGridTableView"
  74. #pragma link "cxStyles"
  75. #pragma link "cxCheckBox"
  76. #pragma link "cxImage"
  77. #pragma link "cxButtonEdit"
  78. #pragma link "cxBlobEdit"
  79. #pragma link "VmsDesignerF"
  80. #pragma link "cxColorComboBox"
  81. #pragma link "cxCalc"
  82. #pragma resource "*.dfm"
  83. TVMSM610M *VMSM610M = NULL;
  84. //---------------------------------------------------------------------------
  85. __fastcall TVMSM610M::TVMSM610M(TComponent* Owner)
  86. : TForm(Owner)
  87. {
  88. ITSSkin_Load(this);
  89. ////CMM_LoadForm(g_sFormsDir, this);
  90. FSelected = false;
  91. FUpdate= false;
  92. FIsExistFigure = false;
  93. FTitle = Caption;
  94. }
  95. //---------------------------------------------------------------------------
  96. void __fastcall TVMSM610M::CommClose()
  97. {
  98. try {
  99. if (m_pEdtDesigner) {
  100. delete m_pEdtDesigner;
  101. m_pEdtDesigner = NULL;
  102. }
  103. ////CMM_SaveForm(g_sFormsDir, this);
  104. }
  105. catch(...) {
  106. }
  107. }
  108. //---------------------------------------------------------------------------
  109. void __fastcall TVMSM610M::FormCreate(TObject *Sender)
  110. {
  111. m_pEdtDesigner = new TVmsFormDesigner(PnlEditForm);
  112. FOR_STL(TCDSFontColor*, pObj, CDSFontManager->FFontColors)
  113. {
  114. m_pEdtDesigner->InitFontColor(pObj->VMS_FONT_COLR_CD, (TColor)pObj->VMS_FONT_COLR_VAL);
  115. }
  116. FOR_STL(TCDSBackColor*, pObj, CDSFontManager->FBackColors)
  117. {
  118. m_pEdtDesigner->InitBackColor(pObj->VMS_BACK_COLR_CD, (TColor)pObj->VMS_BACK_COLR_VAL);
  119. }
  120. FOR_STL(TCDSFontName*, pObj, CDSFontManager->FFontNames)
  121. {
  122. m_pEdtDesigner->InitFontName(pObj->VMS_FONT_NAME_CD, pObj->VMS_FONT_NAME_NM);
  123. }
  124. }
  125. //---------------------------------------------------------------------------
  126. void __fastcall TVMSM610M::FormShow(TObject *Sender)
  127. {
  128. Refresh();
  129. BtnSave->Enabled = FEditMode;
  130. PnlJob->Enabled = FEditMode;
  131. PnlTitle->Enabled = FEditMode;
  132. LoadVmsDsplCndtInfo();
  133. LoadVmsIfsc(FVmsCtlrId);
  134. FormInit();
  135. PnlEdtBack->ParentColor = false;
  136. PnlEdtBack->Color = clBlack;
  137. PnlEditForm->ParentColor = false;
  138. PnlEditForm->Color = clBlack;
  139. PnlEdtBack->Width = FVmsWidth+4;
  140. PnlEdtBack->Height= FVmsHeight+4;
  141. TmrShow->Enabled = true;
  142. }
  143. //---------------------------------------------------------------------------
  144. void __fastcall TVMSM610M::FormInit()
  145. {
  146. TvObjList->OptionsView->NoDataToDisplayInfoText = "<설정 가능한 객체 정보가 없습니다>";
  147. EdCtlrId->Text = FVmsCtlrId;
  148. EdScnrId->Text = FScnrId;
  149. EdFormId->Text = FFormId;
  150. SeFormSn->Value = FFormSn;
  151. SeDsplHh->Value = FDsplHh;
  152. APP_SetCode(CbVmsDsplCndt, FDsplCndtId);
  153. m_pEdtDesigner->ApplicationHandle = (long)Handle;
  154. ImgTemp->Width = FVmsWidth;
  155. ImgTemp->Height= FVmsHeight;
  156. ImgForm->Width = FVmsWidth;
  157. ImgForm->Height= FVmsHeight;
  158. m_pEdtDesigner->Clear();
  159. m_pEdtDesigner->SizeType = FVmsTypeCd;
  160. m_pEdtDesigner->SetSize(FVmsWidth, FVmsHeight);
  161. m_pEdtDesigner->SetPos(0, 0);
  162. m_pEdtDesigner->BkColorCode = "00";
  163. m_pEdtDesigner->EditMode = true;
  164. m_pEdtDesigner->Show();
  165. TFormImage *pBackImage = FrmVmsMsgScheMngr->FFormBackLists.Find(FFormId);
  166. if (pBackImage != NULL) {
  167. ImgTemp->Picture->Bitmap->Assign(pBackImage->bitmap);
  168. }
  169. FFormScnr = FrmVmsMsgScheMngr->FVmsScnrLists.Find(FFormSn);
  170. FVmsForm = FrmVmsMsgScheMngr->FVmsFormLists.Find(FFormId);
  171. DrawObjects();
  172. FNewDb = false;
  173. }
  174. //---------------------------------------------------------------------------
  175. void __fastcall TVMSM610M::DrawObjects()
  176. {
  177. String sVmsFormId = FFormId;
  178. int nFormSn = FFormSn;
  179. if (FVmsForm == NULL) {
  180. return;
  181. }
  182. m_pEdtDesigner->Clear();
  183. m_pEdtDesigner->BkColorCode = FVmsForm->BACK_CLR;
  184. TFormImage *pBackImage = FrmVmsMsgScheMngr->FFormBackLists.Find(sVmsFormId);
  185. if (pBackImage == NULL) {
  186. return;
  187. }
  188. TVmsFormObject *pObj = m_pEdtDesigner->AddObject((VmsObjectDrawType)1);
  189. if (!pObj) {
  190. return;
  191. }
  192. pObj->ObjId = "BASE";
  193. pObj->ObjSeq = 0;
  194. pObj->SetBitmap(pBackImage->bitmap);
  195. pObj->SetPos(0, 0);
  196. pObj->Show();
  197. pObj->BringToFront();
  198. int nObjSeq = 1;
  199. FOR_STL(TFormObj*, pFormObj, FVmsForm->FLists) {
  200. if (pFormObj->VMS_FORM_OBJ_KIND == FORM_OBJ_KIND_FIGURE) {
  201. FIsExistFigure = true;
  202. continue;
  203. }
  204. FrmVmsMsgScheMngr->DrawFormObject(m_pEdtDesigner, pFormObj, FFormScnr, nObjSeq++);
  205. #if 0
  206. bool isDisplay = false;
  207. if (pFormObj->VMS_TXT_ITEM_ID == "C1001" || // 도로명
  208. pFormObj->VMS_TXT_ITEM_ID == "C1002" || // 시점명
  209. pFormObj->VMS_TXT_ITEM_ID == "C1003" || // 종점명
  210. pFormObj->VMS_TXT_ITEM_ID == "C2001" || // 소통상황
  211. pFormObj->VMS_TXT_ITEM_ID == "C2002" || // 시간
  212. pFormObj->VMS_TXT_ITEM_ID == "C2003" || // 속도
  213. pFormObj->VMS_TXT_ITEM_ID == "C3001" || // 우회-도로명
  214. pFormObj->VMS_TXT_ITEM_ID == "C3002" || // 우회-시점명
  215. pFormObj->VMS_TXT_ITEM_ID == "C3003" || // 우회-종점명
  216. pFormObj->VMS_TXT_ITEM_ID == "C4001" || // 우회-소통상황
  217. pFormObj->VMS_TXT_ITEM_ID == "C4002" || // 우회-시간
  218. pFormObj->VMS_TXT_ITEM_ID == "C4003" ) // 우회-속도
  219. {
  220. isDisplay = true;
  221. }
  222. else
  223. if (pFormObj->VMS_TXT_ITEM_ID == "C0001" && // 단순문자열
  224. pFormObj->FONT_CLR == "99" ) // 자동색상
  225. {
  226. isDisplay = true;
  227. }
  228. if (!isDisplay) {
  229. continue;
  230. }
  231. String sDsplText = pFormObj->DSPL_TXT;
  232. if (pFormObj->VMS_TXT_ITEM_ID == "C1001" || // 도로명
  233. pFormObj->VMS_TXT_ITEM_ID == "C1002" || // 시점명
  234. pFormObj->VMS_TXT_ITEM_ID == "C1003" ) // 종점명
  235. {
  236. if (FFormScnr != NULL) {
  237. TVmsFormScnrObj *pScnrObj = FFormScnr->FLists.Find(pFormObj->VMS_FORM_OBJ_ID);
  238. if (pScnrObj != NULL) {
  239. TVmsIfsc *pIfsc = VmsIfscManager->FLists.Find(pScnrObj->FIGR_FORM_APLY_VMS_SECT_ID);
  240. if (pIfsc != NULL) {
  241. if (pFormObj->VMS_TXT_ITEM_ID == "C1001") sDsplText = pIfsc->VMS_DSPL_SECT_NM;
  242. else if (pFormObj->VMS_TXT_ITEM_ID == "C1002") sDsplText = pIfsc->VMS_DSPL_STRT_NM;
  243. else if (pFormObj->VMS_TXT_ITEM_ID == "C1003") sDsplText = pIfsc->VMS_DSPL_END_NM;
  244. }
  245. }
  246. }
  247. }
  248. else
  249. if (pFormObj->VMS_TXT_ITEM_ID == "C3001" || // 우회-도로명
  250. pFormObj->VMS_TXT_ITEM_ID == "C3002" || // 우회-시점명
  251. pFormObj->VMS_TXT_ITEM_ID == "C3003" ) // 우회-종점명
  252. {
  253. }
  254. TVmsFormObject *pObj = m_pEdtDesigner->AddObject((VmsObjectDrawType)0);
  255. if (!pObj) {
  256. continue;
  257. }
  258. pObj->ObjId = pFormObj->VMS_FORM_OBJ_ID;
  259. pObj->Text = sDsplText;
  260. pObj->RunText = pObj->Text;
  261. int nPosX = pFormObj->FORM_OBJ_PSTN_X;
  262. int nPosY = pFormObj->FORM_OBJ_PSTN_Y;
  263. int nDsplWdth = pFormObj->FORM_OBJ_DSPL_WDTH;
  264. int nTextAlign = 0;
  265. if (pFormObj->TXT_ALGN_MTHD == "R") nTextAlign = 1;
  266. if (pFormObj->TXT_ALGN_MTHD == "C") nTextAlign = 2;
  267. pObj->FillIn = pFormObj->VMS_TXT_ITEM_ID;
  268. pObj->FontNameCode = pFormObj->FONT_TYPE;
  269. TCDSFontName *pFontName = CDSFontManager->FFontNames.Find(pObj->FontNameCode);
  270. if (pFontName != NULL) {
  271. pObj->FontName = pFontName->VMS_FONT_NAME_NM;
  272. }
  273. else {
  274. pObj->FontName = "명조체";
  275. pObj->FontNameCode = "00";
  276. }
  277. pObj->FontColorCode = pFormObj->FONT_CLR;
  278. pObj->FontSize = pFormObj->FONT_SZ;
  279. pObj->FontBold = pFormObj->FONT_THCK;
  280. pObj->TextAlign = nTextAlign;
  281. LblTemp->AutoSize = false;
  282. LblTemp->Font->Name = pObj->FontName;
  283. LblTemp->Font->Size = pObj->FontSize;
  284. if (pObj->FontBold)
  285. LblTemp->Font->Style = TFontStyles() << fsBold;
  286. else
  287. LblTemp->Font->Style = TFontStyles();
  288. LblTemp->Caption = sDsplText;
  289. LblTemp->AutoSize = true;
  290. if (pObj->TextAlign == 1) {
  291. // 우측정렬: 좌측에서 글자길이를 뺀다음 만약 음수이면 0으로 설정
  292. nPosX = (nPosX+pFormObj->FORM_OBJ_DSPL_WDTH) - LblTemp->Width;
  293. }
  294. else if (pObj->TextAlign == 2) {
  295. // 가운데정렬: 원래 글자의 중앙값을 얻은 다음에 조정된 글자의 1/2 크기를 뺀다음 음수이면 0으로 설정
  296. nPosX = (nPosX+(pFormObj->FORM_OBJ_DSPL_WDTH/2)) - (LblTemp->Width/2);
  297. }
  298. pObj->SetPos(nPosX, nPosY);
  299. pObj->Show();
  300. pObj->BringToFront();
  301. #endif
  302. }
  303. }
  304. //---------------------------------------------------------------------------
  305. void __fastcall TVMSM610M::LoadVmsDsplCndtInfo()
  306. {
  307. CbVmsDsplCndt->Properties->Items->Clear();
  308. FOR_STL(TVmsDsplCndt*, pCndt, VmsDsplCndtManager->FLists) {
  309. CbVmsDsplCndt->Properties->Items->Add(" [" + pCndt->VMS_FORM_DSPL_CNDT_ID + "] " + pCndt->VMS_FORM_DSPL_CNDT_NM);
  310. }
  311. CbVmsDsplCndt->ItemIndex = -1;
  312. }
  313. //---------------------------------------------------------------------------
  314. void __fastcall TVMSM610M::LoadVmsIfsc(String AVmsCtlrId)
  315. {
  316. CMM_ClearGridTableView(TvAxis);
  317. try {
  318. int nRow;
  319. TcxDataController *pGDC = TvAxis->DataController;
  320. TvAxis->BeginUpdate();
  321. TVmsRltnSect *pRltnSect = VmsIfscManager->FRltnLists.Find(AVmsCtlrId);
  322. if (pRltnSect != NULL) {
  323. FOR_STL(TVmsSect*, pSect, pRltnSect->FLists) {
  324. TVmsIfsc *pIfsc = VmsIfscManager->FLists.Find(pSect->VMS_SECT_ID);
  325. if (pIfsc == NULL) continue;
  326. nRow = pGDC->AppendRecord();
  327. pGDC->Values[nRow][Col00->Index] = pSect->VMS_CTLR_ID;
  328. pGDC->Values[nRow][Col01->Index] = pIfsc->VMS_SECT_ID;
  329. pGDC->Values[nRow][Col02->Index] = pIfsc->VMS_DSPL_SECT_NM;
  330. pGDC->Values[nRow][Col03->Index] = pIfsc->VMS_DSPL_STRT_NM;
  331. pGDC->Values[nRow][Col04->Index] = pIfsc->VMS_DSPL_END_NM;
  332. pGDC->Values[nRow][Col05->Index] = pSect->VMS_DTUR_SECT_ID;
  333. }
  334. }
  335. }
  336. __finally {
  337. TvAxis->EndUpdate();
  338. CMM_ExpandCollapseChk(TvAxis, true);
  339. }
  340. #if 0
  341. String sQry;
  342. TADOQuery *pADO = NULL;
  343. sQry = "SELECT A.VMS_CTLR_ID, A.SN, A.VMS_SECT_ID, A.VMS_DTUR_SECT_ID, \r\n"
  344. " B.VMS_SECT_NM, B.VMS_DSPL_STRT_NM, B.VMS_DSPL_END_NM, \r\n"
  345. " B.VMS_DSPL_SECT_NM \r\n"
  346. " FROM TB_VMS_VMS_SECT A, \r\n"
  347. " TB_VMS_SECT B \r\n"
  348. " WHERE 1=1 \r\n"
  349. " AND A.VMS_CTLR_ID = :p01 \r\n"
  350. " AND A.VMS_SECT_ID = B.VMS_SECT_ID \r\n"
  351. " ORDER BY A.VMS_CTLR_ID, A.SN \r\n";
  352. try {
  353. int nRow;
  354. TcxDataController *pGDC = TvAxis->DataController;
  355. TvAxis->BeginUpdate();
  356. try {
  357. pADO = new TADOQuery(NULL);
  358. pADO->Close();
  359. pADO->Connection = ITSDb_GetConnection();
  360. ITSDb_SQLText(pADO, sQry);
  361. ITSDb_SQLBind(pADO, "p01", AVmsCtlrId);
  362. ITSDb_SQLOpen(pADO);
  363. for( ; !pADO->Eof; pADO->Next()) {
  364. nRow = pGDC->AppendRecord();
  365. pGDC->Values[nRow][Col00->Index] = pADO->FieldByName("VMS_CTLR_ID")->AsString;
  366. pGDC->Values[nRow][Col01->Index] = pADO->FieldByName("VMS_SECT_ID")->AsString;
  367. pGDC->Values[nRow][Col02->Index] = pADO->FieldByName("VMS_SECT_NM")->AsString;
  368. pGDC->Values[nRow][Col03->Index] = pADO->FieldByName("VMS_DSPL_STRT_NM")->AsString;
  369. pGDC->Values[nRow][Col04->Index] = pADO->FieldByName("VMS_DSPL_END_NM")->AsString;
  370. pGDC->Values[nRow][Col05->Index] = pADO->FieldByName("VMS_DTUR_SECT_ID")->AsString;
  371. }
  372. }
  373. catch(EDatabaseError &E) {
  374. DBERRORMSG("TVMSM610M::LoadVmsIfsc", String(E.ClassName()), E.Message, sQry);
  375. throw Exception(String(E.ClassName()) + E.Message);
  376. }
  377. catch(Exception &e) {
  378. DBERRORMSG("TVMSM610M::LoadVmsIfsc", String(e.ClassName()), e.Message, sQry);
  379. throw Exception(String(e.ClassName()) + e.Message);
  380. }
  381. }
  382. __finally {
  383. if (pADO) {
  384. pADO->Close();
  385. delete pADO;
  386. }
  387. TvAxis->EndUpdate();
  388. CMM_ExpandCollapseChk(TvAxis, true);
  389. }
  390. #endif
  391. }
  392. //---------------------------------------------------------------------------
  393. void __fastcall TVMSM610M::TmrShowTimer(TObject *Sender)
  394. {
  395. TmrShow->Enabled = false;
  396. BtnSearchClick(NULL);
  397. }
  398. //---------------------------------------------------------------------------
  399. void __fastcall TVMSM610M::BtnSearchClick(TObject *Sender)
  400. {
  401. RefreshData();
  402. EdFocus->SetFocus();
  403. }
  404. //---------------------------------------------------------------------------
  405. void __fastcall TVMSM610M::RefreshData()
  406. {
  407. // 검색조건에 의한 링크 데이터 조회
  408. FormClear();
  409. InitObjectList();
  410. }
  411. //---------------------------------------------------------------------------
  412. void __fastcall TVMSM610M::InitObjectList()
  413. {
  414. CMM_ClearGridTableView(TvObjList);
  415. if (FFormScnr == NULL) {
  416. return;
  417. }
  418. TcxGridDataController *pGDC = TvObjList->DataController;
  419. try {
  420. TvObjList->BeginUpdate();
  421. pGDC->BeginUpdate();
  422. int nRow;
  423. FOR_STL(TVmsFormScnrObj*, pScnrObj, FFormScnr->FLists) {
  424. nRow = pGDC->AppendRecord();
  425. pGDC->Values[nRow][ColObj01->Index] = pScnrObj->VMS_FORM_OBJ_ID;
  426. pGDC->Values[nRow][ColObjKind->Index] = pScnrObj->VMS_FORM_OBJ_KIND;
  427. pGDC->Values[nRow][ColObjX->Index] = pScnrObj->FORM_OBJ_PSTN_X;
  428. pGDC->Values[nRow][ColObjY->Index] = pScnrObj->FORM_OBJ_PSTN_Y;
  429. pGDC->Values[nRow][ColObjFillIn->Index] = pScnrObj->VMS_TXT_ITEM_ID;
  430. String objKindNm = "-";
  431. if (pScnrObj->VMS_FORM_OBJ_KIND == FORM_OBJ_KIND_FIGURE) {
  432. objKindNm = "배경셀";
  433. }
  434. else
  435. if (pScnrObj->VMS_TXT_ITEM_ID == "C0001") // 단순문자열 자동색상
  436. {
  437. objKindNm = "자동색상";
  438. }
  439. else {
  440. TVmsTextItem *pItemObj = VmsTextItemManager->FLists.Find(pScnrObj->VMS_TXT_ITEM_ID);
  441. if (pItemObj != NULL) {
  442. objKindNm = pItemObj->TXT_ITEM_FILLIN;
  443. }
  444. }
  445. pGDC->Values[nRow][ColObj02->Index] = objKindNm;
  446. pGDC->Values[nRow][ColIfscId->Index] = pScnrObj->FIGR_FORM_APLY_VMS_SECT_ID;
  447. String sSectNm = "";
  448. String sStrNm = "";
  449. String sEndNm = "";
  450. TVmsIfsc *pIfsc = VmsIfscManager->FLists.Find(pScnrObj->FIGR_FORM_APLY_VMS_SECT_ID);
  451. if (pIfsc != NULL) {
  452. sSectNm = pIfsc->VMS_DSPL_SECT_NM;
  453. sStrNm = pIfsc->VMS_DSPL_STRT_NM;
  454. sEndNm = pIfsc->VMS_DSPL_END_NM;
  455. }
  456. pGDC->Values[nRow][ColIfscNm->Index] = sSectNm;
  457. pGDC->Values[nRow][ColIfscStr->Index] = sStrNm;
  458. pGDC->Values[nRow][ColIfscEnd->Index] = sEndNm;
  459. }
  460. }
  461. __finally {
  462. pGDC->EndUpdate();
  463. TvObjList->EndUpdate();
  464. }
  465. }
  466. //---------------------------------------------------------------------------
  467. void __fastcall TVMSM610M::BtnCloseClick(TObject *Sender)
  468. {
  469. FSelected = false;
  470. Close();
  471. }
  472. //---------------------------------------------------------------------------
  473. void __fastcall TVMSM610M::FormClose(TObject *Sender, TCloseAction &Action)
  474. {
  475. CommClose();
  476. VMSM610M = NULL;
  477. //Action = caFree;
  478. }
  479. //---------------------------------------------------------------------------
  480. void __fastcall TVMSM610M::FormClear()
  481. {
  482. FSelIdx = -1;
  483. FNewDb = false;
  484. }
  485. //---------------------------------------------------------------------------
  486. void __fastcall TVMSM610M::BtnListAddClick(TObject *Sender)
  487. {
  488. int nIfscIdx = CMM_GetRecordIndex(TvAxis);
  489. if (nIfscIdx < 0) return;
  490. int nSelRows = TvObjList->Controller->SelectedRowCount;
  491. if (nSelRows <= 0) {
  492. return;
  493. }
  494. TcxGridDataController *pDcCell = TvObjList->DataController;
  495. TcxGridDataController *pDcIfsc = TvAxis->DataController;
  496. try {
  497. String sIfscId = VarToStr(pDcIfsc->Values[nIfscIdx][Col01->Index]);
  498. String sIfscNm = VarToStr(pDcIfsc->Values[nIfscIdx][Col02->Index]);
  499. String sStrNm = VarToStr(pDcIfsc->Values[nIfscIdx][Col03->Index]);
  500. String sEndNm = VarToStr(pDcIfsc->Values[nIfscIdx][Col04->Index]);
  501. for (int ii = 0; ii < nSelRows; ii++) {
  502. int nCellIdx = TvObjList->Controller->SelectedRows[ii]->RecordIndex;
  503. pDcCell->Values[nCellIdx][ColIfscId->Index] = sIfscId;
  504. pDcCell->Values[nCellIdx][ColIfscNm->Index] = sIfscNm;
  505. pDcCell->Values[nCellIdx][ColIfscStr->Index] = sStrNm;
  506. pDcCell->Values[nCellIdx][ColIfscEnd->Index] = sEndNm;
  507. String VMS_FORM_OBJ_ID = VarToStr(pDcCell->Values[nCellIdx][ColObj01->Index]);
  508. TVmsFormScnrObj *pScnrObj = FFormScnr->FLists.Find(VMS_FORM_OBJ_ID);
  509. if (pScnrObj != NULL) {
  510. pScnrObj->FIGR_FORM_APLY_VMS_SECT_ID = sIfscId;
  511. }
  512. #if 0
  513. String VMS_FORM_OBJ_KIND = VarToStr(pDcCell->Values[nCellIdx][ColObjKind->Index]);
  514. if (VMS_FORM_OBJ_KIND == FORM_OBJ_KIND_FIGURE) {
  515. continue;
  516. }
  517. String VMS_FORM_OBJ_ID = VarToStr(pDcCell->Values[nCellIdx][ColObj01->Index]);
  518. TVmsFormObject *pObj;
  519. int nObjCnt = m_pEdtDesigner->GetObjectCount();
  520. for(int ii = 0; ii < nObjCnt; ii++){
  521. }
  522. #endif
  523. }
  524. }
  525. catch(...) {
  526. }
  527. DrawObjects();
  528. }
  529. //---------------------------------------------------------------------------
  530. void __fastcall TVMSM610M::BtnListDeleteClick(TObject *Sender)
  531. {
  532. int nSelRows = TvObjList->Controller->SelectedRowCount;
  533. if (nSelRows <= 0) {
  534. return;
  535. }
  536. TcxGridDataController *pDcCell = TvObjList->DataController;
  537. try {
  538. for (int ii = 0; ii < nSelRows; ii++) {
  539. int nCellIdx = TvObjList->Controller->SelectedRows[ii]->RecordIndex;
  540. pDcCell->Values[nCellIdx][ColIfscId->Index] = "";
  541. pDcCell->Values[nCellIdx][ColIfscNm->Index] = "";
  542. pDcCell->Values[nCellIdx][ColIfscStr->Index] = "";
  543. pDcCell->Values[nCellIdx][ColIfscEnd->Index] = "";
  544. String VMS_FORM_OBJ_ID = VarToStr(pDcCell->Values[nCellIdx][ColObj01->Index]);
  545. TVmsFormScnrObj *pScnrObj = FFormScnr->FLists.Find(VMS_FORM_OBJ_ID);
  546. if (pScnrObj != NULL) {
  547. pScnrObj->FIGR_FORM_APLY_VMS_SECT_ID = "";
  548. }
  549. }
  550. }
  551. catch(...) {
  552. }
  553. DrawObjects();
  554. }
  555. //---------------------------------------------------------------------------
  556. void __fastcall TVMSM610M::BtnSaveClick(TObject *Sender)
  557. {
  558. if (CbVmsDsplCndt->ItemIndex < 0) {
  559. Application->MessageBox(L"VMS 메시지 폼 구간 설정\r\n메시지 표출 조건은 필수 입력 사항입니다.\r\n메시지 표출조건을 입력하세요.",
  560. FTitle.c_str(),
  561. MB_OK|MB_ICONERROR|MB_APPLMODAL);
  562. ActiveControl = CbVmsDsplCndt;
  563. return;
  564. }
  565. if (FFormScnr != NULL) {
  566. TcxDataController *pGDC = TvObjList->DataController;
  567. try {
  568. TvObjList->BeginUpdate();
  569. pGDC->BeginUpdate();
  570. int nRows = pGDC->RecordCount;
  571. try {
  572. for (int ii = 0; ii < nRows; ii++) {
  573. String formObjId = VarToStr(pGDC->Values[ii][ColObj01->Index]);
  574. String vmsSectId = VarToStr(pGDC->Values[ii][ColIfscId->Index]);
  575. TVmsFormScnrObj *pScnrObj = FFormScnr->FLists.Find(formObjId);
  576. if (pScnrObj != NULL) {
  577. pScnrObj->FIGR_FORM_APLY_VMS_SECT_ID = vmsSectId;
  578. }
  579. }
  580. }
  581. catch(Exception &e)
  582. {
  583. }
  584. }
  585. __finally {
  586. pGDC->EndUpdate();
  587. TvObjList->EndUpdate();
  588. }
  589. }
  590. m_pEdtDesigner->GetVmsFormImage(ImgForm);
  591. FDsplHh = SeDsplHh->Value;
  592. FDsplCndtId = APP_GetCode(CbVmsDsplCndt);
  593. TVmsDsplCndt *pCndt = VmsDsplCndtManager->FLists.Find(FDsplCndtId);
  594. if (pCndt != NULL) {
  595. FDsplCndtNm = pCndt->VMS_FORM_DSPL_CNDT_NM;
  596. }
  597. FSelected = true;
  598. Close();
  599. }
  600. //---------------------------------------------------------------------------
  601. void __fastcall TVMSM610M::Col05CustomDrawCell(TcxCustomGridTableView *Sender, TcxCanvas *ACanvas, TcxGridTableDataCellViewInfo *AViewInfo,
  602. bool &ADone)
  603. {
  604. int nRecordIdx = AViewInfo->GridRecord->RecordIndex;
  605. if (nRecordIdx < 0) {
  606. return;
  607. }
  608. try {
  609. int nItemIdx = AViewInfo->Item->Index;
  610. if (VarIsNull(AViewInfo->GridRecord->DisplayTexts[nItemIdx])) return;
  611. String sData = AViewInfo->GridRecord->DisplayTexts[nItemIdx];
  612. if (sData == "Y")
  613. {
  614. ACanvas->Canvas->Brush->Color = clLime;
  615. }
  616. }
  617. catch(Exception &e)
  618. {
  619. }
  620. }
  621. //---------------------------------------------------------------------------
  622. void __fastcall TVMSM610M::SeDsplHrPropertiesEditValueChanged(TObject *Sender)
  623. {
  624. if (((TcxSpinEdit*)Sender)->Value < ((TcxSpinEdit*)Sender)->Properties->MinValue)
  625. ((TcxSpinEdit*)Sender)->Value = ((TcxSpinEdit*)Sender)->Properties->MinValue;
  626. else if(((TcxSpinEdit*)Sender)->Value > ((TcxSpinEdit*)Sender)->Properties->MaxValue &&
  627. ((TcxSpinEdit*)Sender)->Properties->MaxValue)
  628. ((TcxSpinEdit*)Sender)->Value = ((TcxSpinEdit*)Sender)->Properties->MaxValue;
  629. }
  630. //---------------------------------------------------------------------------
  631. void __fastcall TVMSM610M::TvObjListCellClick(TcxCustomGridTableView *Sender, TcxGridTableDataCellViewInfo *ACellViewInfo,
  632. TMouseButton AButton, TShiftState AShift, bool &AHandled)
  633. {
  634. if (TvObjList->ViewData->RecordCount <= 0) return;
  635. if (TvObjList->DataController->FocusedRowIndex < 0) return;
  636. int nSelRows = TvObjList->Controller->SelectedRowCount;
  637. if (nSelRows <= 0) {
  638. return;
  639. }
  640. TImage *pBaseImage = NULL;
  641. TVmsFormObject *pObj = m_pEdtDesigner->GetObject(0);
  642. if (pObj) {
  643. pBaseImage = pObj->GetImage();
  644. }
  645. if (FIsExistFigure) {
  646. if (pBaseImage) {
  647. pBaseImage->Picture->Bitmap->FreeImage();
  648. pBaseImage->Picture->Bitmap = NULL;
  649. pBaseImage->Picture->Bitmap->Assign(ImgTemp->Picture->Bitmap);
  650. //pBaseImage->Width = pBaseImage->Picture->Bitmap->Width;
  651. //pBaseImage->Height = pBaseImage->Picture->Bitmap->Height;
  652. }
  653. }
  654. TcxGridDataController *pDcCell = TvObjList->DataController;
  655. m_pEdtDesigner->SelectedObjectAll(false);
  656. try {
  657. for (int ii = 0; ii < nSelRows; ii++) {
  658. int nCellIdx = TvObjList->Controller->SelectedRows[ii]->RecordIndex;
  659. String VMS_FORM_OBJ_ID = VarToStr(pDcCell->Values[nCellIdx][ColObj01->Index]);
  660. String VMS_FORM_OBJ_KIND = VarToStr(pDcCell->Values[nCellIdx][ColObjKind->Index]);
  661. if (VMS_FORM_OBJ_KIND == FORM_OBJ_KIND_FIGURE) {
  662. if (pBaseImage) {
  663. int X = pDcCell->Values[nCellIdx][ColObjX->Index];
  664. int Y = pDcCell->Values[nCellIdx][ColObjY->Index];
  665. TColor FOldColor = pBaseImage->Picture->Bitmap->Canvas->Pixels[X][Y];
  666. pBaseImage->Picture->Bitmap->Canvas->Brush->Style = bsSolid;
  667. pBaseImage->Picture->Bitmap->Canvas->Brush->Color = APP_GetDisplayColor(ii);
  668. pBaseImage->Picture->Bitmap->Canvas->FloodFill(X, Y, FOldColor, fsSurface);
  669. }
  670. }
  671. else {
  672. int nObjCnt = m_pEdtDesigner->GetObjectCount();
  673. for(int jj = 0; jj < nObjCnt; jj++) {
  674. TVmsFormObject *pObj = m_pEdtDesigner->GetObject(jj);
  675. if (!pObj) continue;
  676. if (pObj->ObjId == VMS_FORM_OBJ_ID) {
  677. m_pEdtDesigner->SelectObject(pObj->ObjSeq, true);
  678. }
  679. }
  680. }
  681. }
  682. }
  683. catch(...) {
  684. }
  685. }
  686. //---------------------------------------------------------------------------