//--------------------------------------------------------------------------- #pragma hdrstop #include "FrmMainCommF.h" #include "AppGlobalF.h" #include "FrmMainF.h" #include "CDSProcessF.h" #include "CDSCtlrF.h" #include "CDSFormF.h" #include "CDSIfscF.h" #include "CDSImageF.h" #include "CDSAtmpF.h" #include "CDSParkF.h" #include "VmsUtilsF.h" #include "PacketHandllingF.h" //--------------------------------------------------------------------------- #pragma package(smart_init) int __fastcall TFrmMain::ChangePosition(TVmsFormObj *AVmsObj) { TLabel *pLabel = NULL; if (AVmsObj->TextData == "") return VERR_NONE; try { pLabel = new TLabel(NULL); if (pLabel == NULL) return VERR_OTHER; try { pLabel->AutoSize = true; pLabel->Font->Name = CodeToFontName(AVmsObj->TextFontName); pLabel->Font->Size = AVmsObj->TextFontSize; pLabel->Caption = AVmsObj->TextData; if (AVmsObj->TextFontBold) pLabel->Font->Style = TFontStyles() << fsBold; else pLabel->Font->Style = TFontStyles(); #if 1 switch(AVmsObj->TextAlign) { case text_align_left: //ÁÂÃøÁ¤·ÂÀÎ °æ¿ì À§Ä¡Á¶Á¤ ÇÊ¿ä ¾øÀ½. break; case text_align_right: //ÁÂÃø¿¡¼­ ±ÛÀÚ±æÀ̸¦ »«´ÙÀ½ ¸¸¾à À½¼öÀ̸é 0À¸·Î ¼³Á¤ AVmsObj->PosX = (AVmsObj->PosX+AVmsObj->Width) - pLabel->Width; break; case text_align_center: //¿ø·¡ ±ÛÀÚÀÇ Áß¾Ó°ªÀ» ¾òÀº ´ÙÀ½¿¡ Á¶Á¤µÈ ±ÛÀÚÀÇ 1/2 Å©±â¸¦ »«´ÙÀ½ À½¼öÀ̸é 0À¸·Î ¼³Á¤ AVmsObj->PosX = (AVmsObj->PosX+(AVmsObj->Width/2)) - (pLabel->Width/2); break; } if (AVmsObj->PosX < 0) AVmsObj->PosX = 0; AVmsObj->TextWidth = pLabel->Width; #else int nWidth = AVmsObj->Width - pLabel->Width; if (nWidth > 0) { switch(AVmsObj->TextAlign) { case text_align_right: AVmsObj->PosX += nWidth; break; case text_align_center: AVmsObj->PosX += (nWidth / 2); break; } } #endif } catch(Exception &e) { } } __finally { SAFE_DELETE(pLabel); } return VERR_NONE; } //--------------------------------------------------------------------------- int __fastcall TFrmMain::MakeVmsProvideForm() { int nFormCnt; int nSaveVmsCnt, nSaveFormCnt; TCDSForm *pCDSForm; TVmsForm *pVmsForm; TVmsFormObj *pVmsObj; VMS_SCHEDULE_INFO *pSch; VMS_SCHEDULE_DETL *pSchUnit; MINFO("MAIN MakeVmsProvideForm: Start"); nSaveVmsCnt = 0; nSaveFormCnt= 0; //VMS½ºÄÉÁÙ¿¡ ´ëÇÏ¿© ´Ù¿î·Îµå ÆûÀ» »ý¼ºÇÑ´Ù. CtlrItr it; for(it=CDSCtlrManager->FLists.FObjects.begin(); it != CDSCtlrManager->FLists.FObjects.end(); ++it) { TCDSCtlr *pObj = (TCDSCtlr*)it->second; if (!pObj->Used) continue; if (!pObj->FProvide) continue; nSaveVmsCnt++; //¿î¿µ¸ðµå º¯°æ pObj->RSTATE.OprMode = pObj->CTRLMODE->Control; pSch = pObj->SCHEDULE; pObj->CTRLMODE->MaxDisplayForm = pSch->Count; if (pObj->CTRLMODE->MaxDisplayForm > pObj->VMS_MAX_PHSE_NUM) { MWARN("MAIN VMS Form Max count over1: %s, %d EA", pObj->CTLR_NMBR.c_str(), pObj->CTRLMODE->MaxDisplayForm); pObj->CTRLMODE->MaxDisplayForm = pObj->VMS_MAX_PHSE_NUM; } if (pObj->CTRLMODE->MaxDisplayForm > INT_VMS_MAX_FORM) { MWARN("MAIN VMS Form Max count over2: %s, %d EA", pObj->CTLR_NMBR.c_str(), pObj->CTRLMODE->MaxDisplayForm); pObj->CTRLMODE->MaxDisplayForm = INT_VMS_MAX_FORM; } pObj->pForms->Lock(); try { TCDSAtmp *pAtmpObj = NULL; AnsiString ATMP_STTN_NMBR = ""; //ÃÖ´ë Á¦°ø ¸Þ½ÃÁö °¹¼ö¸¸Å­ »ý¼º for (int ii = 0; ii < pSch->Count && ii < pObj->CTRLMODE->MaxDisplayForm; ii++) { pSchUnit = &pSch->Unit[ii]; if (pObj->FExistCngsForm && pSchUnit->DSPL_CNGS_YN == false) { //ÇØ´ç Á¦¾î±â¿¡ Á¤Ã¼ÆûÀÌ Á¸ÀçÇÏ´Â °æ¿ì //½ºÄÉÁì ÆûÀÌ Á¤Ã¼À϶§ Ç¥ÃâÇÏÁö ¾Ê´Â °æ¿ì //ÆûÀ» »ý¼ºÇÏÁö ¾Ê´Â´Ù. continue; } nFormCnt = pObj->pForms->Count(); AnsiString sFormId = pSchUnit->VMS_FORM_ID; pCDSForm = CDSFormManager->FLists.Find(sFormId); if (!pCDSForm) { MERROR("MAIN VMS Schedule Form Not found: VmsNmbr(%s), FormId(%s) %d", pObj->CTLR_NMBR.c_str(), sFormId.c_str(), ii); continue; } //¼ÒÅëÁ¤º¸ Ç¥ÃâÆû ÀÎ °æ¿ì Ç¥ÃâÇÒ ±¸°£ÀÇ ¼ÒÅëÁ¤º¸°¡ Á¸ÀçÇÏÁö ¾Ê´Â °æ¿ì //ÆûÀ» »ý¼ºÇÏÁö ¾Êµµ·Ï ÇÑ´Ù. switch(pCDSForm->VMS_FORM_TYPE_CD) { case eFormTp_traf_1:// = 11, // ¼ÒÅë»óȲ(1´Ü) case eFormTp_traf_2:// = 12, // ¼ÒÅë»óȲ(2´Ü) case eFormTp_traf_3:// = 13, // ¼ÒÅë»óȲ(3´Ü) case eFormTp_traf_4:// = 14, // ¼ÒÅë»óȲ(4´Ü) { int ss; bool bNoData = true; AnsiString sVmsIfscId[4]; for (ss = 0; ss < 4; ss++) sVmsIfscId[ss] = ""; sVmsIfscId[0] = pSchUnit->FRST_VMS_IFSC_ID; sVmsIfscId[1] = pSchUnit->SECD_VMS_IFSC_ID; sVmsIfscId[2] = pSchUnit->THIR_VMS_IFSC_ID; sVmsIfscId[3] = pSchUnit->FOUR_VMS_IFSC_ID; for (ss = 0; ss < 4; ss++) { if (sVmsIfscId[ss] == "") continue; TCDSIfsc *pTmpIfsc = CDSIfscManager->FLists.Find(sVmsIfscId[ss]); if (pTmpIfsc) { if (pTmpIfsc->CMTR_GRAD_CD != "0") bNoData = false; } } if (bNoData) { MWARN("MAIN VMS Schedule Form No Traffic: VmsNmbr(%s), FormId(%s)", pObj->CTLR_NMBR.c_str(), sFormId.c_str()); continue; } } break; #if 0 //Æû¿¡ ´ë±âȯ°æ¼öÁýÀå¼Ò°¡ ÇϳªÀΰæ¿ì¿¡¸¸ ÇØ´ç //Æû °´Ã¼¿¡ ´ë±âȯ°æ¼öÁýÀå¼Ò¸¦ ¼³Á¤Çϵµ·Ï ¼öÁ¤ÇÏ¿´À½. case eFormTp_atmp: //´ë±âȯ°æ { //½ºÄÉÁÙ Á¤º¸¸¦ µðºñ¿¡¼­ Àо ½ºÄÉÁìÀ» ÀÛ¼ºÇÒ¶§ È®ÀÎÇÏÁö¸¸ ´Ù½ÃÇѹø È®ÀÎ //¾Æ·¡ °´Ã¼¸¦ »ý¼ºÇÒ¶§ »ç¿ëÇÒ¼ö ÀÖ°Ô ¹Ì¸® ¸Þ¸ð¸®¸¦ ã¾Æ¼­ ÇÒ´çÇÑ´Ù. ATMP_STTN_NMBR = pSchUnit->FRST_VMS_IFSC_ID; pAtmpObj = NULL; if (CDSAtmpManager) CDSAtmpManager->FLists.Find(ATMP_STTN_NMBR); if (!pAtmpObj) continue; if (pAtmpObj->SUCCESS == false) { pAtmpObj = NULL; continue; } } break; #endif } nSaveFormCnt++; //Æû»ý¼º pVmsForm = pObj->pForms->AddForm(); // new ¸¦ »ç¿ëÇØ¼­ »ý¼ºÇÏÁö ¾Ê°í ±âÁ¸¿¡ »ý¼ºÇÑ ÆûÀ» ÀÌ¿ëÇÑ´Ù. pVmsForm->Success = false; pVmsForm->FtpFileName = pCDSForm->FtpFileName; // Á¤ÀûÆûÀΰæ¿ì °æ·Î°¡ ÁöÁ¤µÊ pVmsForm->LocalFileName = pCDSForm->LocalFileName; // Á¤ÀûÆûÀΰæ¿ì °æ·Î°¡ ÁöÁ¤µÊ pVmsForm->VMS_SCH_TYPE = pSchUnit->VMS_SCH_TYPE; pVmsForm->VMS_SCH_FORM_TYPE = pSchUnit->VMS_SCH_FORM_TYPE; pVmsForm->SYMB_LIB_NMBR = pSchUnit->SYMB_LIB_NMBR; pVmsForm->STRM_ADDR = pSchUnit->STRM_ADDR; pVmsForm->ScenarioSeq = nFormCnt; /* Æû Ç¥Ãâ¼ø¼­ */ pVmsForm->VMS_FORM_ID = pCDSForm->VMS_FORM_ID; /* Æû ID */ pVmsForm->DSPL_HH = pSchUnit->DSPL_HH; /* Ç¥Ãâ½Ã°£(ÃÊ) */ pVmsForm->VMS_FORM_DSPL_DRCT_CD = AnsiString(pCDSForm->VMS_FORM_DSPL_DRCT_CD); /* Ç¥Ãâ¹æÇâ */ pVmsForm->VMS_FORM_DSPL_MTHD_CD = AnsiString(pCDSForm->VMS_FORM_DSPL_MTHD_CD); /* Ç¥Ãâ±â´É */ pVmsForm->VMS_FORM_TYPE_CD = pCDSForm->VMS_FORM_TYPE_CD; /* Æû Á¾·ù */ pVmsForm->VMS_FORM_COLR_CD = pCDSForm->VMS_FORM_COLR_CD; /* ¹è°æ»ö»ó */ pVmsForm->Width = pObj->WIDTH; /* Æû³ÐÀÌ */ pVmsForm->Height = pObj->HEIGHT; /* Æû³ôÀÌ */ pVmsForm->SvcRes = false; pVmsForm->FtpRes = false; pVmsForm->Lock(); //Æû°´Ã¼»ý¼º FOR_STL(TCDSFormObj*, pCDSObj, pCDSForm->FLists) { if (pVmsForm->Count() >= MAX_FORM_OBJ_LIST) { break; } //µµÇü½Ä ¹è°æ¼ÒÅëÁ¤º¸ ÆûÀÎ °æ¿ì ÇÏ´Ü¿¡ Ç¥ÃâÇÒ Á¤º¸°¡ ¾ø´Â °æ¿ì //ÇÏ´Ü ¼ÒÅëÁ¤º¸ °´Ã¼´Â »ý¼ºÇÏÁö ¾Êµµ·Ï ÇÏÀÚ. if (pVmsForm->VMS_FORM_TYPE_CD == eFormtp_figure) // = 15, // ¼ÒÅë»óȲ(µµÇü½Ä¹è°æ¼ÒÅëÁ¤º¸)) { switch(pCDSObj->VMS_FORM_OBJECT_TYPE_CD) { case 0: //¹®ÀÚ¿­ case 1: //½Éº¼ case 2: //À̹ÌÁö //N:ÀϹÝ(¸ðµÎÇ¥ÃâÇϴ°Í) //T:¼ÒÅëÁ¤º¸(¼ÒÅëÁ¤º¸°¡ ÀÖ´Â °æ¿ì¿¡¸¸ Ç¥ÃâÇϴ°Í) //F:ÇϴܰíÁ¤(¼ÒÅëÁ¤º¸°¡ ¾ø´Â °æ¿ì¿¡¸¸ Ç¥ÃâÇϴ°Í) if (pSchUnit->VMS_IFSC_ID == "") { //Ç¥ÃâÇÒ ¼ÒÅëÁ¤º¸°¡ ¾ø´Â °æ¿ì if (pCDSObj->TRFC_FILL_CD == "T") continue; // } else { //Ç¥ÃâÇÒ ¼ÒÅëÁ¤º¸°¡ ÀÖ´Â °æ¿ì if (pCDSObj->TRFC_FILL_CD == "F") continue; // } break; case 11: case 12: case 13: case 14: case 15: case 16: case 17: case 18: case 19: if (pSchUnit->VMS_IFSC_ID == "") continue; //ÇÏ´Ü¿¡ Ç¥ÃâÇÒ Á¤º¸Á¦°ø±¸°£ÀÌ ¾ø´Â °æ¿ìÀÓ break; #if 0 case 1://½Éº¼(¼ÒÅëÁ¤º¸ ½ÃÁ¡ Á¾Á¡ »çÀÌ È­»ìÇ¥) #if 1 if (pCDSObj->VMS_DSPL_TXT.Trim() == "->") if (pSchUnit->VMS_IFSC_ID == "") continue; //ÇÏ´Ü¿¡ Ç¥ÃâÇÒ Á¤º¸Á¦°ø±¸°£ÀÌ ¾ø´Â °æ¿ìÀÓ #else if (pSchUnit->VMS_IFSC_ID == "") continue; //ÇÏ´Ü¿¡ Ç¥ÃâÇÒ Á¤º¸Á¦°ø±¸°£ÀÌ ¾ø´Â °æ¿ìÀÓ #endif break; #endif default: break; } } //pVmsForm->VMS_FORM_TYPE_CD == eFormtp_figure pVmsObj = pVmsForm->AddFormObject(); pVmsObj->IFSC_ID = ""; pVmsObj->TRFC_FILL_CD = pCDSObj->TRFC_FILL_CD; switch(pCDSObj->VMS_FORM_OBJECT_TYPE_CD) { case 1: //½Éº¼ pVmsObj->ObjectKind = graphicID_object_data; //¿ä°Ç ´Ù¿î·ÎµåµÇ¾î ÀÖ´Â °æ¿ìÀε¥ ´Ù¿î·Îµå»ó°ü¾øÀÌ Ç¥ÃâµÇµµ·ÏÇϱâÀ§ÇÔ //pVmsObj->ObjectKind = graphic_object_data; break; case 2: //À̹ÌÁö pVmsObj->ObjectKind = graphicID_object_data; break; case 3: //¼ÒÅëÁ¤º¸¹è°æÀ̹ÌÁö pVmsObj->ObjectKind = graphic_object_data; break; case 17: //1´Ü,¼ÒÅëÁ¤º¸À̹ÌÁö1 case 27: //2´Ü,¼ÒÅëÁ¤º¸À̹ÌÁö2 case 37: //3´Ü,¼ÒÅëÁ¤º¸À̹ÌÁö3 case 47: //4´Ü,¼ÒÅëÁ¤º¸À̹ÌÁö4 case 167: //@¿ìȸ¼ÒÅëÁ¤º¸À̹ÌÁö case 200: //µ¿¿µ»óÀ̹ÌÁö case 300: //½ºÆ®¸®¹Ö¿µ»óÀ̹ÌÁö case 406: //@ÅëÇÕ´ë±âµî±Þ À̹ÌÁö case 407: //@¹Ì¼¼¸ÕÁöµî±Þ À̹ÌÁö case 408: //@Ãʹ̼¼¸ÕÁöµî±Þ À̹ÌÁö case 413: //@¿ÀÁ¸µî±ÞÀ̹ÌÁö pVmsObj->ObjectKind = graphicID_object_data; break; default: pVmsObj->ObjectKind = text_object_data; break; } //switch(pCDSObj->VMS_FORM_OBJECT_TYPE_CD) pVmsObj->ObjectType = pCDSObj->VMS_FORM_OBJECT_TYPE_CD; //NUMBER(3) N VMS FORM OBJECT À¯Çü ÄÚµå pVmsObj->TextFontName = pCDSObj->VMS_FONT_NAME_CD; //NUMBER(3) N VMS ±Û²Ã À¯Çü ÄÚµå //TODO pVmsObj->StrTextFontName = CodeToFontName(pVmsObj->TextFontName); pVmsObj->TextFontColor = pCDSObj->VMS_FONT_COLR_CD; //NUMBER(3) N VMS ±Û²Ã »ö»ó ÄÚµå pVmsObj->TextFontBold = pCDSObj->VMS_FONT_BOLD; //NUMBER(3) Y VMS ±Û²Ã ¹æ½Ä ÄÚµå(0:Normal,1:Bold) pVmsObj->TextFontSize = pCDSObj->VMS_FONT_SIZE; //NUMBER(3) Y 0 VMS ±Û²Ã Å©±â pVmsObj->TextAlign = pCDSObj->VMS_FONT_ALIGN; //NUMBER(1) Y 0 VMS Ç¥Ãâ ¹®ÀÚ¿­Á¤¿­¹æ½Ä(0:LEFT,1:RIGHT,2:CENTER) pVmsObj->PosX = pCDSObj->VMS_DSPL_XCRDN; //NUMBER(5) Y VMS Ç¥Ãâ XÁÂÇ¥ pVmsObj->PosY = pCDSObj->VMS_DSPL_YCRDN; //NUMBER(5) Y VMS Ç¥Ãâ YÁÂÇ¥ pVmsObj->Width = pCDSObj->VMS_DSPL_WIDTH; //NUMBER(5) Y 0 VMS Ç¥Ãâ ³ÐÀÌ pVmsObj->TextWidth = pCDSObj->VMS_DSPL_WIDTH; //NUMBER(5) Y 0 VMS Ç¥Ãâ ³ÐÀÌ pVmsObj->Height = pCDSObj->VMS_DSPL_HEIGHT; //NUMBER(5) Y 0 VMS Ç¥Ãâ ³ôÀÌ pVmsObj->IsBlinking = pCDSObj->VMS_DSPL_BLINKING; //NUMBER(1) Y 0 VMS Ç¥Ãâ Á¡¸ê ¿©ºÎ(0:Áö¼Ó, 1:Á¡¸ê) pVmsObj->BkColor = pCDSObj->VMS_DSPL_BKCOLOR; //NUMBER(1) Y 0 VMS Ç¥Ãâ ¹è°æ»ö»óÄÚµå pVmsObj->ObjectSize = pCDSObj->VMS_DSPL_SIZE; //NUMBER(7) Y 0 VMS Ç¥Ãâ Å©±â(¹®ÀÚ:¹®ÀÚ±æÀÌ,À̹ÌÁö:À̹ÌÁöÀüüũ±â) if (pCDSObj->VMS_FORM_OBJECT_TYPE_CD == 201 || //µ¿¿µ»ó¸íĪ pCDSObj->VMS_FORM_OBJECT_TYPE_CD == 301) //½ºÆ®¸®¹Ö¿µ»óÁÖ¼Ò { pVmsObj->TextData = pSchUnit->STRM_ADDR; //VARCHAR2(200) Y VMS Ç¥Ãâ ÅØ½ºÆ® } else { pVmsObj->TextData = pCDSObj->VMS_DSPL_TXT; //VARCHAR2(200) Y VMS Ç¥Ãâ ÅØ½ºÆ® } if (pCDSObj->VMS_FORM_OBJECT_TYPE_CD == 200 || //µ¿¿µ»óÀ̹ÌÁö pCDSObj->VMS_FORM_OBJECT_TYPE_CD == 300) //½ºÆ®¸®¹Ö¿µ»óÀ̹ÌÁö { pVmsObj->ImageId = pSchUnit->SYMB_LIB_NMBR+"0"; //NUMBER(4) N 0 ½É¹ú¶óÀ̺귯¸® ¹øÈ£ if (pCDSObj->VMS_FORM_OBJECT_TYPE_CD == 200) { pVmsObj->PosX = 0; //NUMBER(5) Y VMS Ç¥Ãâ XÁÂÇ¥ pVmsObj->PosY = 0; //NUMBER(5) Y VMS Ç¥Ãâ YÁÂÇ¥ pVmsObj->Width = pVmsForm->Width; //NUMBER(5) Y 0 VMS Ç¥Ãâ ³ÐÀÌ pVmsObj->Height = pVmsForm->Height; //NUMBER(5) Y 0 VMS Ç¥Ãâ ³ôÀÌ TCDSImage* pTmpImg = CDSImageManager->FLists.Find(pVmsObj->ImageId); if (pTmpImg) { pVmsForm->DSPL_HH = pTmpImg->PLAY_TM; } } } else { pVmsObj->ImageId = pCDSObj->SYMB_LIB_NMBR+"0"; //NUMBER(4) N 0 ½É¹ú¶óÀ̺귯¸® ¹øÈ£ } pVmsObj->ImageType = "0"; //Bitmap if (pVmsObj->ObjectKind != text_object_data) { if (pVmsObj->NewImage() != NULL) { try { pVmsObj->pImageData->Picture->Bitmap->Canvas->Lock(); try { if (pCDSObj->VMS_FORM_OBJECT_TYPE_CD == 200 || //µ¿¿µ»óÀ̹ÌÁö pCDSObj->VMS_FORM_OBJECT_TYPE_CD == 300) //½ºÆ®¸®¹Ö¿µ»óÀ̹ÌÁö { TCDSImage* pTmpImg = CDSImageManager->FLists.Find(pVmsObj->ImageId); if (pTmpImg) { pVmsObj->pImageData->Picture->Assign(pTmpImg->IMAG_DATA->Picture); } else { pVmsObj->pImageData->Picture->Assign(pCDSObj->pImage->Picture); } } else if (CDSAtmpManager && (pCDSObj->VMS_FORM_OBJECT_TYPE_CD == 406 || //@ÅëÇÕ´ë±âµî±Þ À̹ÌÁö pCDSObj->VMS_FORM_OBJECT_TYPE_CD == 407 || //@¹Ì¼¼¸ÕÁöµî±Þ À̹ÌÁö pCDSObj->VMS_FORM_OBJECT_TYPE_CD == 408 || //@Ãʹ̼¼¸ÕÁöµî±Þ À̹ÌÁö pCDSObj->VMS_FORM_OBJECT_TYPE_CD == 413 ) //@¿ÀÁ¸µî±ÞÀ̹ÌÁö ) { bool isObj = false; pAtmpObj = CDSAtmpManager->FLists.Find(pCDSObj->VMS_IFSC_ID); if (pAtmpObj && pAtmpObj->SUCCESS) isObj = true; if (isObj) { //°üÃøÀå¼Ò Á¤º¸°¡ Á¸ÀçÇÏ´Â °æ¿ì¿¡¸¸ ´ë±âȯ°æÀ̹ÌÁö¸¦ Æû¿¡ Àû¿ëÇÑ´Ù. int nAtmpGrad = 0; switch(pCDSObj->VMS_FORM_OBJECT_TYPE_CD) { case 406: nAtmpGrad = pAtmpObj->INTG_ATMP_GRAD.ToIntDef(1); break; case 407: nAtmpGrad = pAtmpObj->PM10_1HH_GRAD.ToIntDef(1); break; case 408: nAtmpGrad = pAtmpObj->PM25_1HH_GRAD.ToIntDef(1); break; case 413: nAtmpGrad = pAtmpObj->O3_GRAD.ToIntDef(1); break; } if (nAtmpGrad > 0) nAtmpGrad--; TCDSImage *pTmp1 = CDSImageManager->FLists.Find(pVmsObj->ImageId); if (pTmp1) { AnsiString sGradSymbId = pTmp1->GRAD_SYMB_LIB_NMBR[nAtmpGrad]; TCDSImage *pTmp2 = CDSImageManager->FLists.Find(sGradSymbId); if (pTmp2) pVmsObj->pImageData->Picture->Assign(pTmp2->IMAG_DATA->Picture); else pVmsObj->pImageData->Picture->Assign(pTmp1->IMAG_DATA->Picture); pVmsObj->ImageId = sGradSymbId; } else { pVmsObj->pImageData->Picture->Assign(pCDSObj->pImage->Picture); } } } else { pVmsObj->pImageData->Picture->Assign(pCDSObj->pImage->Picture); } } catch(Exception &e) { MERROR("SaveMemoryStream1: %s[%s] - %s", pVmsForm->VMS_FORM_ID.c_str(), pVmsObj->ImageId.c_str(), AnsiString(e.Message).c_str()); } } __finally { pVmsObj->pImageData->Picture->Bitmap->Canvas->Unlock(); pVmsObj->pImageStream->Clear(); pVmsObj->pImageStream->Position = 0; pVmsObj->pImageData->Picture->Graphic->SaveToStream((Classes::TStream*)pVmsObj->pImageStream); } } } //Æû°´Ã¼ À¯Çüº° Fill In if (pVmsObj->ObjectType == 0 || //°íÁ¤¹®ÀÚ¿­ pVmsObj->ObjectType == 201 || //µ¿¿µ»óÆÄÀϸí pVmsObj->ObjectType == 301) //½ºÆ®¸®¹Ö¿µ»óÁÖ¼Ò { #if 0 if (pObj->FBmpDownload == false && pObj->FIsOldProtocol == false) { //½Å±ÔVMSÀÎ °æ¿ì ùÀÚ¸®°¡ 0 Àΰæ¿ì ÇØ´ç ¹®ÀÚ¸¦ Ç¥ÃâÇÏÁö ¸øÇÔ if (pVmsObj->TextData != "") { if (pVmsObj->TextData.SubString(1,1) == "0") { pVmsObj->TextData = " " + pVmsObj->TextData; pVmsObj->PosX = pVmsObj->PosX - 5; } } } #endif ChangePosition(pVmsObj); } else if (pVmsObj->ObjectType == 1 || //½Éº¼ pVmsObj->ObjectType == 2 ) //ÆÄÀÏÀ̹ÌÁö { ; //󸮾øÀ½ } else if (pVmsObj->ObjectType == 17 || //1´Ü,¼ÒÅëÁ¤º¸À̹ÌÁö1 pVmsObj->ObjectType == 27 || //2´Ü,¼ÒÅëÁ¤º¸À̹ÌÁö2 pVmsObj->ObjectType == 37 || //3´Ü,¼ÒÅëÁ¤º¸À̹ÌÁö3 pVmsObj->ObjectType == 47 || //4´Ü,¼ÒÅëÁ¤º¸À̹ÌÁö4 pVmsObj->ObjectType == 167 ) //@¿ìȸ¼ÒÅëÁ¤º¸À̹ÌÁö { if (!pVmsObj->pImageData) continue; TCDSImage *pSymbol = CDSImageManager->FLists.Find(pVmsObj->ImageId); if (!pSymbol) continue; try { int X, Y; switch(pVmsObj->ObjectType) { case 17: pVmsObj->IFSC_ID = pSchUnit->FRST_IMG_IFSC_ID; break; case 27: pVmsObj->IFSC_ID = pSchUnit->SECD_IMG_IFSC_ID; break; case 37: pVmsObj->IFSC_ID = pSchUnit->THIR_IMG_IFSC_ID; break; case 47: pVmsObj->IFSC_ID = pSchUnit->FOUR_IMG_IFSC_ID; break; case 167: pVmsObj->IFSC_ID = pSchUnit->SECD_IMG_IFSC_ID; break; } FOR_STL(TCDSImageCell*, pCell, pSymbol->FLists) { TCDSIfsc *pTmpIfsc = CDSIfscManager->FLists.Find(pVmsObj->IFSC_ID); if (pTmpIfsc) { X = pCell->POSX; Y = pCell->POSY; pVmsObj->ImageId = pCDSObj->SYMB_LIB_NMBR + pTmpIfsc->CMTR_GRAD_CD; pVmsObj->pImageData->Picture->Bitmap->Canvas->Lock(); try { pVmsObj->pImageData->Picture->Bitmap->Canvas->Brush->Style = bsSolid; pVmsObj->pImageData->Picture->Bitmap->Canvas->Brush->Color = GradeToFillColor(pTmpIfsc->CMTR_GRAD_CD.ToIntDef(0)); TColor clColor = pVmsObj->pImageData->Picture->Bitmap->Canvas->Pixels[X][Y]; pVmsObj->pImageData->Picture->Bitmap->Canvas->FloodFill(X, Y, clColor, fsSurface); } __finally { pVmsObj->pImageData->Picture->Bitmap->Canvas->Unlock(); } } } pVmsObj->pImageStream->Clear(); pVmsObj->pImageStream->Position = 0; pVmsObj->pImageData->Picture->Graphic->SaveToStream((Classes::TStream*)pVmsObj->pImageStream); } catch(Exception &e) { MERROR("MAIN SaveMemoryStreamX: %s[%s] - %s", pVmsForm->VMS_FORM_ID.c_str(), pVmsObj->ImageId.c_str(), AnsiString(e.Message).c_str()); } } else if (pVmsObj->ObjectType == 3) //¼ÒÅëÁ¤º¸ ¹è°æÀ̹ÌÁö { if (!pVmsObj->pImageData) continue; TCDSImage *pSymbol = CDSImageManager->FLists.Find(pVmsObj->ImageId); if (!pSymbol) continue; try { int X, Y; FOR_STL(TCDSImageCell*, pCell, pSymbol->FLists) { TCDSIfsc *pTmpIfsc = CDSIfscManager->FLists.Find(pCell->VMS_IFSC_ID); if (pTmpIfsc) { X = pCell->POSX; Y = pCell->POSY; pVmsObj->pImageData->Picture->Bitmap->Canvas->Lock(); try { pVmsObj->pImageData->Picture->Bitmap->Canvas->Brush->Color = GradeToFillColor(pTmpIfsc->CMTR_GRAD_CD.ToIntDef(0)); TColor clColor = pVmsObj->pImageData->Picture->Bitmap->Canvas->Pixels[X][Y]; pVmsObj->pImageData->Picture->Bitmap->Canvas->FloodFill(X, Y, clColor, fsSurface); } __finally { pVmsObj->pImageData->Picture->Bitmap->Canvas->Unlock(); } } } pVmsObj->pImageStream->Clear(); pVmsObj->pImageStream->Position = 0; pVmsObj->pImageData->Picture->Graphic->SaveToStream((Classes::TStream*)pVmsObj->pImageStream); } catch(Exception &e) { MERROR("MAIN SaveMemoryStream2: %s[%s] - %s", pVmsForm->VMS_FORM_ID.c_str(), pVmsObj->ImageId.c_str(), AnsiString(e.Message).c_str()); } } else if (pVmsObj->ObjectType == 61 || //±¸°£¸í pVmsObj->ObjectType == 62 || //½ÃÁ¡¸í pVmsObj->ObjectType == 63 || //Á¾Á¡¸í pVmsObj->ObjectType == 64 || //µ¹¹ßÀ¯Çü pVmsObj->ObjectType == 65 || //´ëÀÀ¹®±¸ pVmsObj->ObjectType == 66 //ÅëÁ¦À¯Çü ) { //µ¹¹ß¹®¾ÈÀÎ °æ¿ìÀÓ pVmsObj->TextData = " "; VMS_EVENT_DETL *pEvt = pSchUnit->EVENT; if (pEvt) { switch(pVmsObj->ObjectType) { case 61: pVmsObj->TextData = pEvt->VMS_IFSC_NM; break; //@±¸°£¸í(»ç¿ë¾ÈÇÔ) case 62: pVmsObj->TextData = pEvt->STRT_LCTN_NM; break; //@½ÃÁ¡¸í case 63: pVmsObj->TextData = pEvt->END_LCTN_NM; break; //@Á¾Á¡¸í case 64: pVmsObj->TextData = pEvt->VMS_INCD_DETL_NM; break; //@µ¹¹ßÀ¯Çü case 65: pVmsObj->TextData = pEvt->OCRR_LCTN_NM; break; //@´ëÀÀ¹®±¸(»ç¿ë¾ÈÇÔ-¹ß»ýÀå¼Ò·Î ÀϴܳÖÀ½) case 66: pVmsObj->TextData = pEvt->VMS_INCD_RSTR_TYPE_NM; break; //@ÅëÁ¦À¯Çü } } if (pVmsObj->TextData == "") pVmsObj->TextData = " "; ChangePosition(pVmsObj); //TB_VMS_FORM_OBJECT_TYPE Å×ÀÌºí¿¡ À¯ÇüÃß°¡Çϰí //µ¹¹ßÈ­¸é¿¡¼­ ÇÊ¿äÇÑ Ç׸ñ Ãß°¡, TB_INCD_OCRR_VMS Å×ÀÌºí¿¡ Ä÷³Ãß°¡ÇؾßÇÔ } else if (pVmsObj->ObjectType == 71 || //¹ß»ýÀå¼Ò pVmsObj->ObjectType == 72 || //INCD_TITL pVmsObj->ObjectType == 73 || //ÅëÁ¦½ÃÁ¡¸í pVmsObj->ObjectType == 74 || //ÅëÁ¦Á¾Á¡¸í pVmsObj->ObjectType == 75 || //00Â÷·Î Â÷´Ü pVmsObj->ObjectType == 76 || //00¿ù00ÀÏ ~ 00¿ù00ÀÏ pVmsObj->ObjectType == 77 || //´ëÀÀ¹®±¸ pVmsObj->ObjectType == 78 //@ÅëÁ¦À¯Çü ) { //°ø»ç/Çà»ç¹®¾È ÀÓ pVmsObj->TextData = " "; VMS_EVENT_DETL *pEvt = pSchUnit->EVENT; if (pEvt) { switch(pVmsObj->ObjectType) { case 71: pVmsObj->TextData = pEvt->OCRR_LCTN_NM; break; //¹ß»ýÀå¼Ò case 72: pVmsObj->TextData = pEvt->INCD_TITL; break; //@°ø»çÇà»ç¸í case 73: pVmsObj->TextData = pEvt->STRT_LCTN_NM; break; //ÅëÁ¦½ÃÁ¡¸í case 74: pVmsObj->TextData = pEvt->END_LCTN_NM; break; //ÅëÁ¦Á¾Á¡¸í case 75: { int nLane = pEvt->INCD_CLSR_LANE.ToIntDef(0); if (nLane == 111111) pVmsObj->TextData = "Â÷·Î Â÷´Ü"; else if (nLane > 0) pVmsObj->TextData = "ÀϺΠÂ÷´Ü"; else pVmsObj->TextData = " "; } break; //00Â÷·Î Â÷´Ü case 76: //00¿ù00ÀÏ ~ 00¿ù00ÀÏ { String sFrom = pEvt->INCD_STRT_DT.SubString(5,2) + "¿ù" + pEvt->INCD_STRT_DT.SubString(7,2) + "ÀÏ " + pEvt->INCD_STRT_DT.SubString(9,2) + "½Ã"; String sTo = pEvt->INCD_END_PRAR_DT.SubString(5,2) + "¿ù" + pEvt->INCD_END_PRAR_DT.SubString(7,2) + "ÀÏ " + pEvt->INCD_END_PRAR_DT.SubString(9,2) + "½Ã"; pVmsObj->TextData = sFrom + " ~ " + sTo; } break; case 77: pVmsObj->TextData = pEvt->OCRR_LCTN_NM; break; //´ëÀÀ¹®±¸(»ç¿ë¾ÈÇÔ-¹ß»ýÀå¼Ò·Î ÀϴܳÖÀ½) case 78: pVmsObj->TextData = pEvt->VMS_INCD_RSTR_TYPE_NM; break; //@ÅëÁ¦À¯Çü } } if (pVmsObj->TextData == "") pVmsObj->TextData = " "; ChangePosition(pVmsObj); } else if (CDSAtmpManager && (pVmsObj->ObjectType == 401 || //@°üÃøÀå¼Ò pVmsObj->ObjectType == 402 || //@PM10 pVmsObj->ObjectType == 403 || //@PM2.5 pVmsObj->ObjectType == 404 || //@PM10µî±Þ pVmsObj->ObjectType == 405 || //@PM2.5µî±Þ pVmsObj->ObjectType == 409 || //@ÅëÇÕ´ë±âµî±Þ pVmsObj->ObjectType == 410 || //@ÅëÇÕ´ë±â pVmsObj->ObjectType == 411 || //@¿ÀÁ¸ pVmsObj->ObjectType == 412 ) //@¿ÀÁ¸µî±Þ ) { bool isObj = false; pAtmpObj = CDSAtmpManager->FLists.Find(pCDSObj->VMS_IFSC_ID); if (pAtmpObj && pAtmpObj->SUCCESS) isObj = true; AnsiString sUnit = ""; bool bUnit = false; if (pVmsObj->TextData.Pos(" -")) { bUnit = true; sUnit = " "; } else if (pVmsObj->TextData.Pos("-")) { bUnit = true; } pVmsObj->TextData = " "; if (pVmsObj->ObjectType == 401) { pVmsObj->TextData = pAtmpObj ? pAtmpObj->VMS_DISP_NM : AnsiString("---"); } else if (pVmsObj->ObjectType == 402) { pVmsObj->TextData = isObj ? pAtmpObj->GetPM10_VAL(false) : AnsiString("-"); pVmsObj->TextFontColor = isObj ? pAtmpObj->GetPM10_CLR() : clRed; if (bUnit) pVmsObj->TextData = pVmsObj->TextData + sUnit + "§¶/§©"; } else if (pVmsObj->ObjectType == 403) { pVmsObj->TextData = isObj ? pAtmpObj->GetPM25_VAL(false) : AnsiString("-"); pVmsObj->TextFontColor = isObj ? pAtmpObj->GetPM25_CLR() : clRed; if (bUnit) pVmsObj->TextData = pVmsObj->TextData + sUnit + "§¶/§©"; } else if (pVmsObj->ObjectType == 404) { pVmsObj->TextData = isObj ? pAtmpObj->GetPM10_GRAD() : AnsiString("-"); pVmsObj->TextFontColor = isObj ? pAtmpObj->GetPM10_CLR() : clRed; } else if (pVmsObj->ObjectType == 405) { pVmsObj->TextData = isObj ? pAtmpObj->GetPM25_GRAD() : AnsiString("-"); pVmsObj->TextFontColor = isObj ? pAtmpObj->GetPM25_CLR() : clRed; } else if (pVmsObj->ObjectType == 409) { pVmsObj->TextData = isObj ? pAtmpObj->GetATMP_GRAD() : AnsiString("-"); pVmsObj->TextFontColor = isObj ? pAtmpObj->GetATMP_CLR() : clRed; } else if (pVmsObj->ObjectType == 410) { pVmsObj->TextData = isObj ? pAtmpObj->GetATMP_VAL(false) : AnsiString("-"); pVmsObj->TextFontColor = isObj ? pAtmpObj->GetATMP_CLR() : clRed; } else if (pVmsObj->ObjectType == 411) { pVmsObj->TextData = isObj ? pAtmpObj->GetO3_VAL(false) : AnsiString("-"); pVmsObj->TextFontColor = isObj ? pAtmpObj->GetO3_CLR() : clRed; if (bUnit) pVmsObj->TextData = pVmsObj->TextData + sUnit + "ppm"; } else if (pVmsObj->ObjectType == 412) { pVmsObj->TextData = isObj ? pAtmpObj->GetO3_GRAD() : AnsiString("-"); pVmsObj->TextFontColor = isObj ? pAtmpObj->GetO3_CLR() : clRed; } if (pVmsObj->TextData == "") pVmsObj->TextData = " "; ChangePosition(pVmsObj); } else if (pVmsObj->ObjectType == 501 || //@ÁÖÂ÷°¡´É´ë¼ö pVmsObj->ObjectType == 502 ) //@ÁÖÂ÷È¥Àâµµ { TCDSPark *pPark = NULL; if (CDSParkManager) CDSParkManager->FLists.Find(pCDSObj->VMS_IFSC_ID); if (pPark) { AnsiString sFmt = pCDSObj->VMS_DSPL_TXT; sFmt = StringReplace(sFmt, "@", "", TReplaceFlags() << rfReplaceAll); if (pVmsObj->ObjectType == 501) { if (sFmt.Pos("0")) { sFmt = StringReplace(sFmt, "0000", "%4d", TReplaceFlags() << rfReplaceAll); sFmt = StringReplace(sFmt, "000", "%3d", TReplaceFlags() << rfReplaceAll); sFmt = StringReplace(sFmt, "00", "%2d", TReplaceFlags() << rfReplaceAll); sFmt = StringReplace(sFmt, "0", "%d", TReplaceFlags() << rfReplaceAll); pVmsObj->TextData.printf(sFmt.c_str(), pPark->TOTAL); } else { pVmsObj->TextData = AnsiString(pPark->TOTAL); } pVmsObj->TextFontColor = pPark->GetGradeColor(); } else if (pVmsObj->ObjectType == 502) { pVmsObj->TextData = pPark->CNGT_DESC; pVmsObj->TextFontColor = pPark->GetGradeColor(); } } else { pVmsObj->TextData = "-"; pVmsObj->TextFontColor = clRed; } if (pVmsObj->TextData == "") pVmsObj->TextData = " "; ChangePosition(pVmsObj); } else if (pVmsObj->ObjectType == 81 || //µ¹¹ßÁ¾·ù pVmsObj->ObjectType == 82 || //ÇØ´çµµ·Î pVmsObj->ObjectType == 83 || //¿ìȸµµ·Î pVmsObj->ObjectType == 84 ) //¹ß»ýÀå¼Ò { pVmsObj->TextData = " "; VMS_EVENT_DETL *pEvt = pSchUnit->EVENT; if (pEvt) { switch(pVmsObj->ObjectType) { case 81: pVmsObj->TextData = pEvt->VMS_INCD_DETL_NM; break; //µ¹¹ßÁ¾·ù case 82: pVmsObj->TextData = pEvt->VMS_IFSC_NM; break; //ÇØ´çµµ·Î case 83: pVmsObj->TextData = pEvt->VMS_IFSC_NM; break; //¿ìȸµµ·Î case 84: pVmsObj->TextData = pEvt->OCRR_LCTN_NM; break; //¹ß»ýÀå¼Ò } } if (pVmsObj->TextData == "") pVmsObj->TextData = " "; ChangePosition(pVmsObj); } else { //°´Ã¼°¡ °¡º¯(¼ÒÅëÁ¤º¸ Ç¥Ãâ) ÀÎ °æ¿ì °¡º¯¹®ÀÚ¸¦ ¼³Á¤ÇÏÀÚ.... AnsiString VMS_IFSC_ID = ""; switch(pVmsObj->ObjectType) { case 11: case 12: case 13: case 14: case 15: case 16: case 18: case 19: VMS_IFSC_ID = pSchUnit->FRST_VMS_IFSC_ID; if (pVmsForm->VMS_FORM_TYPE_CD == eFormtp_figure) { VMS_IFSC_ID = pSchUnit->VMS_IFSC_ID; } else if (pVmsForm->VMS_FORM_TYPE_CD == enFormKindCongest)// && pVmsObj->ObjectType == 18) { VMS_IFSC_ID = pSchUnit->VMS_IFSC_ID; } break; case 161: case 162: case 163: case 164: case 165: case 166: case 168: VMS_IFSC_ID = pSchUnit->SECD_VMS_IFSC_ID; break; case 21: case 22: case 23: case 24: case 25: case 26: case 28: VMS_IFSC_ID = pSchUnit->SECD_VMS_IFSC_ID; break; case 31: case 32: case 33: case 34: case 35: case 36: case 38: VMS_IFSC_ID = pSchUnit->THIR_VMS_IFSC_ID; break; case 41: case 42: case 43: case 44: case 45: case 46: case 48: VMS_IFSC_ID = pSchUnit->FOUR_VMS_IFSC_ID; break; case 91: case 92: VMS_IFSC_ID = pCDSObj->VMS_IFSC_ID; //ÃàÅëÇà½Ã°£/Ãà¼ÒÅë»óȲ(°íÁ¤) break; case 93: case 94: case 95: case 96: VMS_IFSC_ID = pSchUnit->VMS_IFSC_ID; break; default: continue; } pVmsObj->TextData = " "; TCDSIfsc *pTmpIfsc = CDSIfscManager->FLists.Find(VMS_IFSC_ID); if (pTmpIfsc) { switch(pVmsObj->ObjectType) { case 11: case 21: case 31: case 41: case 161: //±¸°£¸í pVmsObj->TextData = pTmpIfsc->ROAD_NM; break; case 12: case 22: case 32: case 42: case 93: case 162: //½ÃÁ¡¸í pVmsObj->TextData = pTmpIfsc->DSPL_STRT_NODE_NM; break; case 13: case 23: case 33: case 43: case 94: case 163: //Á¾Á¡¸í pVmsObj->TextData = pTmpIfsc->DSPL_END_NODE_NM; break; case 14: case 24: case 34: case 44: case 92: case 95: case 164: //¼ÒÅë»óȲ pVmsObj->TextData = GradeToString(pTmpIfsc->CMTR_GRAD_CD.ToIntDef(0), pVmsForm->VMS_FORM_TYPE_CD); pVmsObj->TextFontColor = GradeToColorCode(pTmpIfsc->CMTR_GRAD_CD.ToIntDef(0)); break; case 19: //¼ÒÅë»óȲ(°¡º¯) { AnsiString sGradText = GradeToString(pTmpIfsc->CMTR_GRAD_CD.ToIntDef(0), pVmsForm->VMS_FORM_TYPE_CD); if (pTmpIfsc->CMTR_GRAD_CD.ToIntDef(0) == grade_smoothness) { sGradText.printf("¼ÒÅë¿øÈ° ¾à %d ºÐ", pTmpIfsc->TRVL_HH); } pVmsObj->TextData = sGradText; pVmsObj->TextFontColor = GradeToColorCode(pTmpIfsc->CMTR_GRAD_CD.ToIntDef(0)); } break; case 15: case 25: case 35: case 45: case 91: case 96: case 165: //ÅëÇà½Ã°£ #if 0 pVmsObj->TextData = AnsiString(pTmpIfsc->TRVL_HH); #else { AnsiString sFmt = pCDSObj->VMS_DSPL_TXT; sFmt = StringReplace(sFmt, "@", "", TReplaceFlags() << rfReplaceAll); if (sFmt.Pos("0")) { sFmt = StringReplace(sFmt, "0000", "%4d", TReplaceFlags() << rfReplaceAll); sFmt = StringReplace(sFmt, "000", "%3d", TReplaceFlags() << rfReplaceAll); sFmt = StringReplace(sFmt, "00", "%2d", TReplaceFlags() << rfReplaceAll); sFmt = StringReplace(sFmt, "0", "%d", TReplaceFlags() << rfReplaceAll); pVmsObj->TextData.printf(sFmt.c_str(), pTmpIfsc->TRVL_HH); } else { pVmsObj->TextData = AnsiString(pTmpIfsc->TRVL_HH); } } #endif pVmsObj->TextFontColor = GradeToColorCode(pTmpIfsc->CMTR_GRAD_CD.ToIntDef(0)); break; case 16: case 26: case 36: case 46: case 166: //ÅëÇà¼Óµµ pVmsObj->TextData = AnsiString(pTmpIfsc->SPED); pVmsObj->TextFontColor = GradeToColorCode(pTmpIfsc->CMTR_GRAD_CD.ToIntDef(0)); break; case 17: case 27: case 37: case 47: //¹æÇâÀ̹ÌÁö...??? break; case 18: case 28: case 38: case 48: case 168: //ÁöÁ¡¸í pVmsObj->TextData = pTmpIfsc->SPOT_NM; break; } ChangePosition(pVmsObj); } } } //FOR_STL(Æû°´Ã¼»ý¼º) pVmsForm->UnLock(); } //for(ÃÖ´ë Á¦°ø ¸Þ½ÃÁö °¹¼ö¸¸Å­ »ý¼º) } __finally { pObj->pForms->UnLock(); } } //iterator(VMSÀüü·çÇÁ) MINFO("MAIN MakeVmsProvideForm: End. (VMS: %d EA, Forms %d EA)", nSaveVmsCnt, nSaveFormCnt); MINFO("MAIN MakeVmsDatabaseForm: Start"); nSaveVmsCnt = 0; nSaveFormCnt= 0; //µ¥ÀÌÅͺ£À̽º¿¡ ÀúÀåÇÒ ÆûÀ» »ý¼ºÇÑ´Ù. for(it=CDSCtlrManager->FLists.FObjects.begin(); it != CDSCtlrManager->FLists.FObjects.end(); ++it) { TCDSCtlr *pObj = (TCDSCtlr*)it->second; if (!pObj->Used) continue; if (!pObj->FProvide) continue; if (g_AppCfg.BottomTrafficCenter) { //µµÇü½ÄÆûÀÇ ÇϴܼÒÅëÁ¤º¸À§Ä¡¸¦ °¡¿îµ¥·Î Á¤·ÄÇÏ´Â °æ¿ì MakeVmsFigureFormPos(pObj); } nSaveFormCnt += MakeVmsDatabaseForm(pObj); nSaveVmsCnt++; } MINFO("MAIN MakeVmsDatabaseForm: End. (VMS: %d EA, Forms %d EA)", nSaveVmsCnt, nSaveFormCnt); return VERR_NONE; } //--------------------------------------------------------------------------- int __fastcall TFrmMain::MakeVmsFigureFormPos(TCDSCtlr *AObj) { int ARRAWGAP = 5; int TRAFFGAP = 12; int nSelCnt = 0; if (!AObj) return VERR_MEMORY_ALLOC; int nFormCnt = AObj->pForms->Count(); if (nFormCnt == 0) return nSelCnt; int nObjCnt; int nFormT; TVmsFormObj *pArw; TVmsFormObj *pStr; TVmsFormObj *pEnd; TVmsFormObj *pTrf; int nTotW; int nLeft; AObj->pForms->Lock(); try { try { for (int ii = 0; ii < nFormCnt; ii++) { TVmsForm *pForm = AObj->pForms->GetItem(ii); if (pForm->VMS_FORM_TYPE_CD != eFormtp_figure) { //µµÇü½Ä¹è°æ¼ÒÅëÁ¤º¸ ÆûÀÌ ¾Æ´Ñ°æ¿ì °è»êÇÏÁö ¾ÊÀ½ continue; } nFormT = pForm->Height - 40; //ÇϴܼÒÅëÁ¤º¸ °´Ã¼ÀÇ ÃÖ´ë³ôÀ̸¦ ¼³Á¤, À̰ͺ¸´Ù ÀÛÀ¸¸é À§Ä¡Á¶Á¤ ÇÏÁö ¾ÊÀ½ pArw = NULL; pStr = NULL; pEnd = NULL; pTrf = NULL; //¼ÒÅë»óȲ ½ÃÁ¡ -> Á¾Á¡ //½ÃÁ¡ -> Á¾Á¡ ¼ÒÅë»óȲ //À§ÀÇ 2°¡Áö À¯Çü¿¡ ´ëÇÏ¿© °¡¿îµ¥ Á¤·Ä nObjCnt = pForm->Count(); for (int jj = 0; jj < nObjCnt; jj++) { TVmsFormObj *pFormObj = pForm->GetItem(jj); if (pFormObj->PosY < nFormT) { continue; } switch(pFormObj->ObjectType) { case 1: // ½Éº¼ Y case 2: // À̹ÌÁö Y case 17: // @¼ÒÅëÁ¤º¸À̹ÌÁö N if (pFormObj->TRFC_FILL_CD == "T") { pArw = pFormObj; } break; case 12: // @½ÃÁ¡¸í Y case 93: // @Ãà½ÃÁ¡¸í(¼øÈ¯) Y case 13: // @Á¾Á¡¸í Y case 94: // @ÃàÁ¾Á¡¸í(¼øÈ¯) Y if (pFormObj->ObjectType == 12 || pFormObj->ObjectType == 93) { pStr = pFormObj; } else { pEnd = pFormObj; } break; case 14: // @¼ÒÅë»óȲ Y case 15: // @ÅëÇà½Ã°£ Y case 16: // @ÅëÇà¼Óµµ N case 95: // @Ãà¼ÒÅë»óȲ(¼øÈ¯) Y case 96: // @ÃàÅëÇà½Ã°£(¼øÈ¯) Y pTrf = pFormObj; break; } } if (pArw && pStr && pEnd && pTrf) { if ((pStr->TextWidth + pArw->TextWidth + pEnd->TextWidth + pTrf->TextWidth) > (pForm->Width - ARRAWGAP - ARRAWGAP - TRAFFGAP - 10) ) { ARRAWGAP = 3; TRAFFGAP = 10; } nTotW = pStr->TextWidth + ARRAWGAP + pArw->TextWidth + ARRAWGAP + pEnd->TextWidth + TRAFFGAP + pTrf->TextWidth; nLeft = (pForm->Width - nTotW) / 2; if (pStr->PosX < pTrf->PosX) { //½ÃÁ¡ -> Á¾Á¡ ¼ÒÅë»óȲ pStr->PosX = nLeft; pArw->PosX = pStr->PosX + pStr->TextWidth + ARRAWGAP; pEnd->PosX = pArw->PosX + pArw->TextWidth + ARRAWGAP; pTrf->PosX = pEnd->PosX + pEnd->TextWidth + TRAFFGAP; } else { //¼ÒÅë»óȲ ½ÃÁ¡ -> Á¾Á¡ pTrf->PosX = nLeft; pStr->PosX = pTrf->PosX + pTrf->TextWidth + TRAFFGAP; pArw->PosX = pStr->PosX + pStr->TextWidth + ARRAWGAP; pEnd->PosX = pArw->PosX + pArw->TextWidth + ARRAWGAP; } } } } catch(Exception &e) { MERROR("MAIN MakeVmsFigureFormPos error2: %s, %s", AnsiString(e.ClassName()).c_str(), AnsiString(e.Message).c_str()); } } __finally { AObj->pForms->UnLock(); } return nSelCnt; } //--------------------------------------------------------------------------- int __fastcall TFrmMain::MakeVmsDatabaseForm(TCDSCtlr *AObj) { int nSelCnt = 0; if (!AObj) return VERR_MEMORY_ALLOC; int nFormCnt = AObj->pForms->Count(); if (nFormCnt == 0) return nSelCnt; AObj->pForms->Lock(); try { try { for (int ii = 0; ii < nFormCnt; ii++) { TVmsForm *pForm = AObj->pForms->GetItem(ii); int nObjCnt; pForm->pBitmap->Canvas->Lock(); try { pForm->FormClear(CodeToFormColor(pForm->VMS_FORM_COLR_CD)); nObjCnt = pForm->Count(); TRect rc; for (int jj = 0; jj < nObjCnt; jj++) { TVmsFormObj *pFormObj = pForm->GetItem(jj); switch(pFormObj->ObjectType) { case 1: //½Éº¼ case 2: //À̹ÌÁö case 3: //¼ÒÅëÁ¤º¸¹è°æÀ̹ÌÁö case 17: //¼ÒÅëÁ¤º¸À̹ÌÁö1 case 27: //¼ÒÅëÁ¤º¸À̹ÌÁö2 case 37: //¼ÒÅëÁ¤º¸À̹ÌÁö3 case 47: //¼ÒÅëÁ¤º¸À̹ÌÁö4 case 167: //@¿ìȸ¼ÒÅëÁ¤º¸À̹ÌÁö case 200: //µ¿¿µ»óÀ̹ÌÁö case 300: //½ºÆ®¸®¹Ö¿µ»óÀ̹ÌÁö case 406: //@ÅëÇÕ´ë±âµî±Þ À̹ÌÁö case 407: //@¹Ì¼¼¸ÕÁöµî±Þ À̹ÌÁö case 408: //@Ãʹ̼¼¸ÕÁöµî±Þ À̹ÌÁö case 413: //@¿ÀÁ¸µî±ÞÀ̹ÌÁö if (pFormObj->ObjectType == 17 || pFormObj->ObjectType == 27 || pFormObj->ObjectType == 37 || pFormObj->ObjectType == 47 || pFormObj->ObjectType == 167 ) { rc.Top = pFormObj->PosY; rc.Bottom = pFormObj->PosY + pFormObj->pImageData->Picture->Graphic->Height; rc.Left = pFormObj->PosX; rc.Right = pFormObj->PosX + pFormObj->pImageData->Picture->Graphic->Width; pForm->pBitmap->Canvas->StretchDraw(rc, pFormObj->pImageData->Picture->Graphic); } else { pForm->pBitmap->Canvas->Draw(pFormObj->PosX, pFormObj->PosY, pFormObj->pImageData->Picture->Graphic); } break; default://±âŸ ¹®ÀÚ¿­ pForm->pBitmap->Canvas->Brush->Color = CodeToBackColor(pFormObj->BkColor); #if 0 //ÀÌ·ÂÀúÀåÇÒ¶§ ÆùÆ®»ö»óÀ» ÄÚµå·Î ³Ö±â ¶§¹®¿¡ »ö»ó°ªÀ» Á÷Á¢»ç¿ëÇÒ ¼ö ¾ø´Ù. switch(pFormObj->ObjectType) { //case 401: //@°üÃøÀå¼Ò ==> °üÃøÀå¼Ò ÆùÆ® »ö»óÀº ¿î¿µÀÚ°¡ ÀÔ·ÂÇÑ »ö»óÀ» ±×´ë·Î »ç¿ëÇÑ´Ù. case 402: //@PM10 case 403: //@PM2.5 case 404: //@PM10µî±Þ case 405: //@PM2.5µî±Þ case 409: //@ÅëÇÕ´ë±âµî±Þ case 410: //@ÅëÇÕ´ë±â case 411: //@¿ÀÁ¸ case 412: //@¿ÀÁ¸µî±Þ pForm->pBitmap->Canvas->Font->Color = (TColor)(pFormObj->TextFontColor); break; default: pForm->pBitmap->Canvas->Font->Color = CodeToFontColor(pFormObj->TextFontColor); break; } #else pForm->pBitmap->Canvas->Font->Color = CodeToFontColor(pFormObj->TextFontColor); #endif pForm->pBitmap->Canvas->Font->Name = CodeToFontName(pFormObj->TextFontName); pForm->pBitmap->Canvas->Font->Size = pFormObj->TextFontSize; if (pFormObj->TextFontBold) pForm->pBitmap->Canvas->Font->Style = TFontStyles() << fsBold; else pForm->pBitmap->Canvas->Font->Style = TFontStyles(); pForm->pBitmap->Canvas->TextOutA(pFormObj->PosX, pFormObj->PosY, pFormObj->TextData); break; } } // ÆûÀÇ °´Ã¼¼ö ¸¸Å­ °´Ã¼¸¦ Æû¿¡ ±×¸°´Ù. try { pForm->pStream->Clear(); pForm->pStream->Position = 0; pForm->pBitmap->SaveToStream(pForm->pStream); //FTP´Ù¿î·Îµå ÇÏ´Â °æ¿ì ÆûÀ» FTPµð·ºÅ丮¿¡ ÀúÀåÇØ¾ßÇÔ if (pForm->VMS_SCH_FORM_TYPE != eSchTp_hongbo && //È«º¸(Á¦¾î±âº° Æû»ý¼º½Ã CDSFormÀÇ ÆÄÀϸíÀ¸·Î ¼³Á¤µÇ¾î ÀÖÀ½ pForm->VMS_SCH_FORM_TYPE != eSchTp_video && //ºñµð¿À pForm->VMS_SCH_FORM_TYPE != eSchTp_stream ) //½ºÆ®¸®¹Ö¿µ»ó µîÀº ·ÎÄÃÆÄÀÏ·Î ÀúÀåÇÒ Çʿ䰡 ¾øÀ½ { //ÆÄÀÏÀ̸§À» ¿©±â¼­ º¯°æÇϸé ftp ÆÄÀϸíÀÌ º¯°æµÈ´Ù. if (AObj->FIsFtpDownload) { AnsiString sFormName; sFormName.printf("%s_%02d.bmp", AObj->CTLR_NMBR.c_str(), ii+1); pForm->LocalFileName = AObj->FLocalFormDir + sFormName; pForm->FtpFileName = AObj->FFtpFormDir + sFormName; pForm->pBitmap->SaveToFile(pForm->LocalFileName); } } pForm->Success = true; switch (pForm->VMS_SCH_FORM_TYPE) { case eSchTp_traffic: // = 0, //0:±³Åë, case eSchTp_incident: // = 1, //1:µ¹¹ß, case eSchTp_gongsa: // = 2, //2:°ø»çÇà»ç, case eSchTp_deture: // = 4, //4:¿ìȸ, case eSchTp_congest: // = 5, //5:Á¤Ã¼, pForm->fileType = P_FILE_TYPE_TRAFFIC; break; case eSchTp_hongbo: // = 3, //3:È«º¸, case eSchTp_safe: // = 6, //6:¾ÈÀü, case eSchTp_atmp: // = 9, //9:´ë±âȯ°æ case eSchTp_park: // = 10, //10:ÁÖÂ÷Á¤º¸ pForm->fileType = P_FILE_TYPE_TEXT; break; case eSchTp_video: // = 7, //7:µ¿¿µ»ó, pForm->fileType = P_FILE_TYPE_VIDEO; pForm->FtpFileName = AnsiString(FTP_VIDEO) + "\\" + pForm->STRM_ADDR; break; case eSchTp_stream: // = 8, //8:½ºÆ®¸®¹Ö¿µ»ó pForm->fileType = P_FILE_TYPE_STREAM; pForm->FtpFileName = pForm->STRM_ADDR; break; default: pForm->Success = false; break; } MINFO("MAIN CTLR FORM: %s, %d, [%d] [0x%02X], %s", AObj->CTLR_NMBR.c_str(), ii, pForm->VMS_SCH_FORM_TYPE, pForm->fileType, pForm->FtpFileName.c_str()); nSelCnt++; } catch(Exception &e) { MERROR("MAIN MakeVmsDatabaseForm error1: %s, %s", AnsiString(e.ClassName()).c_str(), AnsiString(e.Message).c_str()); pForm->LocalFileName = ""; pForm->FtpFileName = ""; } } __finally { pForm->pBitmap->Canvas->Unlock(); } } } catch(Exception &e) { MERROR("MAIN MakeVmsDatabaseForm error2: %s, %s", AnsiString(e.ClassName()).c_str(), AnsiString(e.Message).c_str()); } } __finally { AObj->pForms->UnLock(); } return nSelCnt; } //---------------------------------------------------------------------------