//--------------------------------------------------------------------------- #include #include "ITSSkinF.h" #include "ITSUtilF.h" #include "AppGlobalF.h" #include "ITSLangTransF.h" #pragma hdrstop #include "VMSM410MF.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma link "cxButtons" #pragma link "cxCalendar" #pragma link "cxContainer" #pragma link "cxControls" #pragma link "cxDropDownEdit" #pragma link "cxEdit" #pragma link "cxGraphics" #pragma link "cxGroupBox" #pragma link "cxLabel" #pragma link "cxLookAndFeelPainters" #pragma link "cxLookAndFeels" #pragma link "cxMaskEdit" #pragma link "cxPC" #pragma link "cxPCdxBarPopupMenu" #pragma link "cxSpinEdit" #pragma link "cxSplitter" #pragma link "cxTextEdit" #pragma link "cxTimeEdit" #pragma link "dxSkinBlack" #pragma link "dxSkinBlue" #pragma link "dxSkinCaramel" #pragma link "dxSkinCoffee" #pragma link "dxSkinDarkRoom" #pragma link "dxSkinDarkSide" #pragma link "dxSkinFoggy" #pragma link "dxSkinGlassOceans" #pragma link "dxSkiniMaginary" #pragma link "dxSkinLilian" #pragma link "dxSkinLiquidSky" #pragma link "dxSkinLondonLiquidSky" #pragma link "dxSkinMcSkin" #pragma link "dxSkinMoneyTwins" #pragma link "dxSkinOffice2007Black" #pragma link "dxSkinOffice2007Blue" #pragma link "dxSkinOffice2007Green" #pragma link "dxSkinOffice2007Pink" #pragma link "dxSkinOffice2007Silver" #pragma link "dxSkinOffice2010Black" #pragma link "dxSkinOffice2010Blue" #pragma link "dxSkinOffice2010Silver" #pragma link "dxSkinsCore" #pragma link "dxSkinscxPCPainter" #pragma link "dxSkinSeven" #pragma link "dxSkinSharp" #pragma link "dxSkinSilver" #pragma link "dxSkinStardust" #pragma link "cxRadioGroup" #pragma link "cxClasses" #pragma link "cxCustomData" #pragma link "cxData" #pragma link "cxDataStorage" #pragma link "cxDBData" #pragma link "cxFilter" #pragma link "cxGrid" #pragma link "cxGridCustomTableView" #pragma link "cxGridCustomView" #pragma link "cxGridDBTableView" #pragma link "cxGridLevel" #pragma link "cxGridTableView" #pragma link "cxStyles" #pragma link "cxCheckBox" #pragma link "cxImage" #pragma link "cxButtonEdit" #pragma link "cxBlobEdit" #pragma resource "*.dfm" TVMSM410M *VMSM410M = NULL; //--------------------------------------------------------------------------- __fastcall TVMSM410M::TVMSM410M(TComponent* Owner) : TForm(Owner) { LangTrans->Translate(this, ITSDb_GetConnection()); ITSSkin_Load(this); CMM_LoadForm(g_sFormsDir, this); FUpdate= false; FTitle = Caption;//"VMS ¼ÒÅëÁ¤º¸ ¹è°æÀ̹ÌÁö°ü¸®"; FListSymb = new TList; EditMode = false; TvList->OptionsView->DataRowHeight = 0; TvList->OptionsView->CellAutoHeight = true; TvList->OptionsView->Indicator = false; TvList->OptionsCustomize->ColumnMoving = false; TvList->OptionsCustomize->ColumnSorting = false; TvList->Columns[0]->Width = 60; TvList->Columns[0]->Options->HorzSizing = false; //http://docwiki.embarcadero.com/RADStudio/Rio/en/Colors_in_the_VCL m_Color[ 0] =clWebDarkOrange; m_Color[ 1] =clWebRed; m_Color[ 2] =clWebDarkRed; m_Color[ 3] =clWebMaroon; m_Color[ 4] =clWebIndianRed; m_Color[ 5] =clWebSalmon; m_Color[ 6] =clWebCoral; m_Color[ 7] =clWebGold; m_Color[ 8] =clWebTomato; m_Color[ 9] =clWebCrimson; m_Color[10] =clWebBrown; m_Color[11] =clWebChocolate; m_Color[12] =clWebSandyBrown; m_Color[13] =clWebLightSalmon; m_Color[14] =clWebLightCoral; m_Color[15] =clWebOrange; m_Color[16] =clWebOrangeRed; m_Color[18] =clWebFirebrick; m_Color[19] =clWebSaddleBrown; m_Color[20] =clWebSienna; m_Color[21] =clWebPeru; m_Color[22] =clWebDarkSalmon; m_Color[23] =clWebRosyBrown; } //--------------------------------------------------------------------------- TColor TVMSM410M::GetDisplayColor(int ASeq) { return g_DispColor[ASeq % MAX_DISPCOLOR]; //return m_Color[ASeq % MAX_VMS_COLOR]; } //--------------------------------------------------------------------------- void __fastcall TVMSM410M::CommClose() { try { ClearSymbloList(); SAFE_DELETE(FListSymb); CMM_SaveForm(g_sFormsDir, this); } catch(...) { } } //--------------------------------------------------------------------------- void __fastcall TVMSM410M::FormShow(TObject *Sender) { lblImgSize->Caption = ""; Refresh(); FormInit(); ChangeEditMode(1); TmrShow->Enabled = true; } //--------------------------------------------------------------------------- void __fastcall TVMSM410M::FormInit() { EdNmbr->Text = ""; EdExpl->Text = ""; EdImageFileName->Text = ""; lblImgSize->Caption = ""; ImgPreView->Picture->Bitmap->FreeImage(); ImgPreView->Picture->Bitmap = NULL; ImgTemp->Picture->Bitmap->FreeImage(); ImgTemp->Picture->Bitmap = NULL; SePosX->Value = 0; SePosY->Value = 0; SeCellId->Value = 1; CMM_ClearGridTableView(TvImageCell); FNewDb = false; } //--------------------------------------------------------------------------- void __fastcall TVMSM410M::TmrShowTimer(TObject *Sender) { TmrShow->Enabled = false; LoadVmsIfsc(); LoadImageSymbol(); } //--------------------------------------------------------------------------- void __fastcall TVMSM410M::BtnCloseClick(TObject *Sender) { Close(); } //--------------------------------------------------------------------------- void __fastcall TVMSM410M::FormClose(TObject *Sender, TCloseAction &Action) { CommClose(); VMSM410M = NULL; Action = caFree; } //--------------------------------------------------------------------------- void __fastcall TVMSM410M::FormCloseQuery(TObject *Sender, bool &CanClose) { if (FUpdate) { POST_MSG(Application->MainForm->Handle, WM_DATABASE_REFRESH, WP_MSG_14, 0); } } //--------------------------------------------------------------------------- void __fastcall TVMSM410M::DisplayInfo() { FormInit(); int nRow = TvList->DataController->FocusedRecordIndex; if( nRow <= -1 ) return; TcxGridDataController *pDc = TvList->DataController; nRow = pDc->FocusedRecordIndex; if (nRow < FListSymb->Count) { Graphics::TBitmap *bitmap = (Graphics::TBitmap*)FListSymb->Items[nRow]; ImgPreView->Picture->Bitmap->Assign(bitmap); ImgTemp->Picture->Bitmap->Assign(bitmap); FOldWidth = bitmap->Width; FOldHeight = bitmap->Height; lblImgSize->Caption = String(bitmap->Width) + " * " + String(bitmap->Height); } EdNmbr->Text = VarToStr(pDc->Values[nRow][ColLink1->Index]); EdExpl->Text = VarToStr(pDc->Values[nRow][ColLink3->Index]); EdVmsCd->Text = VarToStr(pDc->Values[nRow][ColLink4->Index]); //¼¿Á¤º¸ ¾÷µ¥ÀÌÆ® LoadImageSymbolCell(EdNmbr->Text); UpdateCellColor(); ChangeEditMode(3); } //--------------------------------------------------------------------------- void __fastcall TVMSM410M::BtnEditClick(TObject *Sender) { if (BtnEdit->Caption == FrmLang->lblEdit->Caption)//"ÆíÁý") { ChangeEditMode(0); FNewDb = false; } else { String sId = EdNmbr->Text; ChangeEditMode(1); if (CMM_FindGridData(TvList->DataController, sId, ColLink1->Index) >= 0) { CMM_SetGridRow(CxList, TvList, sId, ColLink1->Index); DisplayInfo(); } } } //--------------------------------------------------------------------------- void __fastcall TVMSM410M::ChangeEditMode(int AEdit) { //LblWarn->Visible = false; FImageUpdate = false; bool bEnabled = false; switch(AEdit) { case 0: //ÆíÁý¹öưŬ¸¯ { BtnEdit->Enabled = true; BtnInsert->Enabled = false; BtnDelete->Enabled = false; BtnSave->Enabled = true; BtnEdit->Caption = FrmLang->lblCancel->Caption;//"Ãë¼Ò"; BtnEdit->Hint = FrmLang->lblCancel->Hint;//µ¥ÀÌÅÍ ÆíÁý Ãë¼Ò"; EditMode = true; //EdImageFileName->Enabled = false; EdImageFileName->Enabled = true; //LblWarn->Visible = true; } break; case 1: //ÆíÁý[Ãë¼Ò]¹öưŬ¸¯ { FormInit(); //È­¸éÀ» ¸ðµÎ Áö¿î´Ù. BtnEdit->Enabled = false; BtnInsert->Enabled = true; BtnDelete->Enabled = false; BtnSave->Enabled = false; BtnEdit->Caption = FrmLang->lblEdit->Caption;//"ÆíÁý"; BtnEdit->Hint = FrmLang->lblEdit->Hint;//µ¥ÀÌÅÍ ÆíÁý"; //bEnabled = true; EditMode = false; EdImageFileName->Enabled = false; } break; case 2: //Ãß°¡ { BtnEdit->Enabled = true; BtnInsert->Enabled = false; BtnDelete->Enabled = false; BtnSave->Enabled = true; BtnEdit->Caption = FrmLang->lblCancel->Caption;//"Ãë¼Ò"; BtnEdit->Hint = FrmLang->lblCancel->Hint;//µ¥ÀÌÅÍ ÆíÁý Ãë¼Ò"; EditMode = true; EdImageFileName->Enabled = true; } break; case 3: //¼öÁ¤¸ðµå { BtnEdit->Enabled = true; BtnInsert->Enabled = true; BtnDelete->Enabled = true; BtnSave->Enabled = false; BtnEdit->Caption = FrmLang->lblEdit->Caption;//"ÆíÁý"; BtnEdit->Hint = FrmLang->lblEdit->Hint;//µ¥ÀÌÅÍ ÆíÁý"; bEnabled = true; EditMode = false; //EdImageFileName->Enabled = false; EdImageFileName->Enabled = true; } break; } BtnSaveImgFile->Enabled = false; if (ImgPreView->Picture->Bitmap != NULL) { if (ImgPreView->Picture->Bitmap->Height != 0) { BtnSaveImgFile->Enabled = true; } } if (AEdit == 0 || AEdit == 2) { PnlCmd->Enabled = true; GrpList->Enabled = false; } else { PnlCmd->Enabled = false; GrpList->Enabled = true; } //PnlEdit->Enabled = EditMode; } //--------------------------------------------------------------------------- bool __fastcall TVMSM410M::UpdateVmsImage(String ANmbr, String AExpl) { String sQry; TADOQuery *pADO = NULL; //if (!FrmLang->UpdateVmsImage(ANmbr, AExpl, ImgTemp)) //{ // return false; //} sQry = "UPDATE TB_VMS_SYMB_LIB \r\n" " SET RGST_DT = TO_CHAR(SYSDATE, 'YYYYMMDDHH24MISS'), \r\n" " SYMB_EXPL = :p02, \r\n" " IMAG_DATA = :p03, \r\n" " UPDT_DT = TO_CHAR(sysdate, 'YYYYMMDDHH24MISS') \r\n" " WHERE SYMB_LIB_NMBR = :p01 \r\n"; TMemoryStream *dataStream = new TMemoryStream(); //ImgPreView->Picture->Bitmap->SaveToStream(dataStream); ImgTemp->Picture->Bitmap->SaveToStream(dataStream); try { try { pADO = new TADOQuery(NULL); pADO->Close(); pADO->Connection = ITSDb_GetConnection(); ITSDb_SQLText(pADO, sQry); ITSDb_SQLBind(pADO, "p01", ANmbr); ITSDb_SQLBind(pADO, "p02", AExpl); pADO->Parameters->ParamByName("p03")->LoadFromStream(dataStream, ftBlob); pADO->ExecSQL(); if (FImageUpdate) { sQry = "UPDATE TB_VMS_FORM_OBJECT \r\n" " SET VMS_DSPL_FIGR = :p03 \r\n" " WHERE SYMB_LIB_NMBR = :p01 \r\n"; ITSDb_SQLText(pADO, sQry); ITSDb_SQLBind(pADO, "p01", ANmbr); pADO->Parameters->ParamByName("p03")->LoadFromStream(dataStream, ftBlob); pADO->ExecSQL(); //Åë½Å¼­¹ö°¡ Ç×»ó ÆûÁ¤º¸¸¦ ³»·Áº¸³»µµ·Ï ¾÷µ¥ÀÌÆ®½Ã°¢À» ¾÷µ¥ÀÌÆ®ÇÑ´Ù.(¼ÒÅëÁ¤º¸ÆûÀº Ç×»ó ³»·Áº¸³»±â ¶§¹®¿¡ ¾÷µ¥ÀÌÆ® ÇÏÁö ¾Ê¾Æµµ ‰Î) sQry = "UPDATE TB_VMS_FORM \r\n" " SET UPDT_DT = TO_CHAR(SYSDATE, 'YYYYMMDDHH24MISS') \r\n" " WHERE VMS_FORM_ID IN (SELECT VMS_FORM_ID \r\n" " FROM TB_VMS_FORM_OBJECT \r\n" " WHERE SYMB_LIB_NMBR = :p01 \r\n" " GROUP BY VMS_FORM_ID) \r\n"; ITSDb_SQLText(pADO, sQry); ITSDb_SQLBind(pADO, "p01", ANmbr); pADO->ExecSQL(); //ÆûÀ̹ÌÁö¸¦ »õ·Î»ý¼º FrmLang->UpdateVmsFormImage(ANmbr, FOldWidth, FOldHeight, FNewWidth, FNewHeight); POST_MSG(Application->MainForm->Handle, WM_DATABASE_REFRESH, WP_MSG_14, 0); CComm_VmsFormUpdate(); } return true; } catch(EDatabaseError &E) { DBERRORMSG("VMS image update", String(E.ClassName()), E.Message, sQry); throw Exception(String(E.ClassName()) + E.Message); } catch(Exception &e) { DBERRORMSG("VMS image update", String(e.ClassName()), e.Message, sQry); throw Exception(String(e.ClassName()) + e.Message); } } __finally { if (pADO) { pADO->Close(); delete pADO; } if (dataStream) delete dataStream; dataStream = NULL; } return true; } //--------------------------------------------------------------------------- bool __fastcall TVMSM410M::InsertVmsImage(String ANmbr, String AExpl, String AFileName, String ATypeCd) { String sQry; TADOQuery *pADO = NULL; sQry = "INSERT INTO TB_VMS_SYMB_LIB(SYMB_LIB_NMBR, RGST_DT, SYMB_EXPL, IMAG_DATA, SYMB_FILE_NM, SYMB_TYPE, AVI_DATA, IMAG_SIZE, UPDT_DT, DEL_YN) \r\n" " VALUES(:p01, :p02, :p03, :p04, NULL, :p05, NULL, :p06, :p07, 'N' ) \r\n"; TMemoryStream *dataStream = new TMemoryStream(); //ImgPreView->Picture->Bitmap->SaveToStream(dataStream); ImgTemp->Picture->Bitmap->SaveToStream(dataStream); try { try { pADO = new TADOQuery(NULL); pADO->Close(); pADO->Connection = ITSDb_GetConnection(); ITSDb_SQLText(pADO, sQry); ITSDb_SQLBind(pADO, "p01", ANmbr); ITSDb_SQLBind(pADO, "p02", Now().FormatString("yyyymmddhhnnss")); ITSDb_SQLBind(pADO, "p03", AExpl); pADO->Parameters->ParamByName("p04")->LoadFromStream(dataStream, ftBlob); ITSDb_SQLBind(pADO, "p05", ATypeCd); ITSDb_SQLBind(pADO, "p06", FFileSize); ITSDb_SQLBind(pADO, "p07", Now().FormatString("yyyymmddhhnnss")); pADO->ExecSQL(); return true; } catch(EDatabaseError &E) { DBERRORMSG("VMS image update", String(E.ClassName()), E.Message, sQry); throw Exception(String(E.ClassName()) + E.Message); } catch(Exception &e) { DBERRORMSG("VMS image update", String(e.ClassName()), e.Message, sQry); throw Exception(String(e.ClassName()) + e.Message); } } __finally { if (pADO) { pADO->Close(); delete pADO; } if (dataStream) delete dataStream; dataStream = NULL; } return true; } //--------------------------------------------------------------------------- void __fastcall TVMSM410M::BtnSaveClick(TObject *Sender) { if (EdNmbr->Text.IsEmpty()) { Application->MessageBox(FrmLang->lblImage1->Caption.c_str(),//L"VMS À̹ÌÁöÁ¤º¸ ÀúÀå\r\nÀ̹ÌÁö ¹øÈ£¸¦ ÀÔ·ÂÇϼ¼¿ä.", FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL); return; } if (EdExpl->Text.Trim().IsEmpty()) { Application->MessageBox(FrmLang->lblImage2->Caption.c_str(),//L"VMS À̹ÌÁöÁ¤º¸ ÀúÀå\r\nÀ̹ÌÁö ¼³¸íÀ» ÀÔ·ÂÇϼ¼¿ä.", FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL); return; } String sNmbr = EdNmbr->Text; String sExpl = EdExpl->Text.Trim(); if (TvImageCell->DataController->RecordCount == 0) { String sMsg; sMsg = FrmLang->lblImage7->Caption + ": " + sNmbr;//"VMSÀ̹ÌÁö¹øÈ£: " + sNmbr; sMsg+= "\r\n" + lblText1->Caption;//"À̹ÌÁö ¼¿ Á¤º¸°¡ ¾ø½À´Ï´Ù.\r\n¼ÒÅëÁ¤º¸ ¹è°æÀ̹ÌÁö Á¤º¸¸¦ ÀúÀåÇϽðڽÀ´Ï±î?"; if (Application->MessageBox(sMsg.c_str(), FTitle.c_str(), MB_YESNO|MB_ICONQUESTION|MB_APPLMODAL) != IDYES) return; } bool bIfscSet = true; TcxGridDataController *pGDC = TvImageCell->DataController; int nRows = pGDC->RecordCount; for (int ii = 0; ii < nRows; ii++) { String sIfscId = VarToStr(pGDC->Values[ii][ColIfscId->Index]); if (sIfscId == "") { bIfscSet = false; break; } } if (!bIfscSet) { String sMsg; sMsg = FrmLang->lblImage7->Caption + ": " + sNmbr;//"VMSÀ̹ÌÁö¹øÈ£: " + sNmbr; sMsg+= "\r\n" + lblText2->Caption;//"À̹ÌÁö ¼¿ Á¤º¸¿¡ VMS Á¤º¸Á¦°ø±¸°£ÀÌ ¼³Á¤µÇ¾î ÀÖÁö ¾Ê½À´Ï´Ù.\r\n¼ÒÅëÁ¤º¸ ¹è°æÀ̹ÌÁö Á¤º¸¸¦ ÀúÀåÇϽðڽÀ´Ï±î?"; if (Application->MessageBox(sMsg.c_str(), FTitle.c_str(), MB_YESNO|MB_ICONQUESTION|MB_APPLMODAL) != IDYES) return; } bool bResult = false; if (!FNewDb) { bResult = UpdateVmsImage(sNmbr, sExpl); } else { if (EdImageFileName->Text.Trim().IsEmpty()) { Application->MessageBox(FrmLang->lblImage3->Caption.c_str(),//L"VMS À̹ÌÁöÁ¤º¸ ÀúÀå\r\nÀ̹ÌÁö¸¦ ¼±ÅÃÇÏ¼Å¾ß ÇÕ´Ï´Ù.", FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL); return; } bResult = InsertVmsImage(sNmbr, sExpl, "", "SBT1"); } if (!bResult) return; String ANmbr = sNmbr; String sQry; TADOQuery *pADO = NULL; try { try { pADO = new TADOQuery(NULL); pADO->Close(); pADO->Connection = ITSDb_GetConnection(); sQry = "DELETE TB_VMS_SYMB_IFSC \r\n" " WHERE SYMB_LIB_NMBR = :p01 \r\n"; ITSDb_SQLText(pADO, sQry); ITSDb_SQLBind(pADO, "p01", ANmbr); pADO->ExecSQL(); sQry = "INSERT INTO TB_VMS_SYMB_IFSC ( \r\n" " SYMB_LIB_NMBR, \r\n" " CELL_ID, \r\n" " POSX, \r\n" " POSY, \r\n" " VMS_IFSC_ID) \r\n" " VALUES ( \r\n" " :p01, \r\n" " :p02, \r\n" " :p03, \r\n" " :p04, \r\n" " :p05 ) \r\n"; ITSDb_SQLText(pADO, sQry); ITSDb_GetConnection()->BeginTrans(); TcxGridDataController *pGDC = TvImageCell->DataController; int nRows = pGDC->RecordCount; for (int ii = 0; ii < nRows; ii++) { String sCellId = VarToStr(pGDC->Values[ii][ColCellId->Index]); String sPosX = VarToStr(pGDC->Values[ii][ColCellPosX->Index]); String sPosY = VarToStr(pGDC->Values[ii][ColCellPosY->Index]); String sIfscId = VarToStr(pGDC->Values[ii][ColIfscId->Index]); ITSDb_SQLBind(pADO, "p01", ANmbr); ITSDb_SQLBind(pADO, "p02", sCellId); ITSDb_SQLBind(pADO, "p03", sPosX); ITSDb_SQLBind(pADO, "p04", sPosY); ITSDb_SQLBind(pADO, "p05", sIfscId); ITSDb_SQLExec(pADO); } ITSDb_GetConnection()->CommitTrans(); bResult = true; } catch(EDatabaseError &E) { ITSDb_GetConnection()->RollbackTrans(); DBERRORMSG("VMS image cell save", String(E.ClassName()), E.Message, sQry); throw Exception(String(E.ClassName()) + E.Message); } catch(Exception &e) { ITSDb_GetConnection()->RollbackTrans(); DBERRORMSG("VMS image cell save", String(e.ClassName()), e.Message, sQry); throw Exception(String(e.ClassName()) + e.Message); } } __finally { if (pADO) { pADO->Close(); delete pADO; } } if (bResult) { Application->MessageBox(lblText3->Caption.c_str(),//L"VMS ¼ÒÅëÁ¤º¸ ¹è°æÀ̹ÌÁöÁ¤º¸ ÀúÀå\r\nVMS ¼ÒÅëÁ¤º¸ ¹è°æÀ̹ÌÁöÁ¤º¸¸¦ ÀúÀå ÇÏ¿´½À´Ï´Ù.", FTitle.c_str(), MB_OK|MB_ICONINFORMATION|MB_APPLMODAL); FUpdate = true; LoadImageSymbol(); CMM_SetGridRow(CxList, TvList, sNmbr, ColLink1->Index); DisplayInfo(); CComm_VmsImageTrafficUpdate(); // VMS¼­¹ö·Î À̹ÌÁö°¡ ¾÷µ¥ÀÌÆ® µÇ¾úÀ½À» ¾Ë¸°´Ù. POST_MSG(Application->MainForm->Handle, WM_DATABASE_REFRESH, WP_MSG_14, 0); } } //--------------------------------------------------------------------------- void __fastcall TVMSM410M::BtnInsertClick(TObject *Sender) { FormInit(); //½Å±Ô¾ÆÀ̵𸦠¾ò¾î¿Í¼­ È­¸éÀ» ÃʱâÈ­ÇÑ´Ù. int nNmbr; if (!FrmLang->GetNextVmsImgeId(nNmbr, 7000, 7999)) { Application->MessageBox(FrmLang->lblImage4->Caption.c_str(),//L"»õ·Î¿î VMS À̹ÌÁöÁ¤º¸¸¦ »ý¼ºÇÏÁö ¸øÇÏ¿´½À´Ï´Ù.\r\nÇÁ·Î±×·¥ Á¾·áÈÄ¿¡ ´Ù½Ã ½ÃµµÇØ º¸¼¼¿ä.", FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL); return; } EdNmbr->Text = String(nNmbr); ChangeEditMode(2); FNewDb = true; EdImageFileNameClick((TObject *)EdImageFileName); } //--------------------------------------------------------------------------- void __fastcall TVMSM410M::BtnDeleteClick(TObject *Sender) { int nIdx = TvList->DataController->FocusedRecordIndex; if (nIdx < 0) return; String sId = EdNmbr->Text; if (sId.IsEmpty()) { Application->MessageBox(FrmLang->lblImage6->Caption.c_str(),//L"»èÁ¦ÇÒ VMS À̹ÌÁö¸¦ ¸ñ·Ï¿¡¼­ ¼±ÅÃÇϼ¼¿ä.\r\n¸ñ·Ï¿¡¼­ ´õºíŬ¸¯ÇÏ¿© ¼±ÅÃÇÕ´Ï´Ù.", FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL); return; } if (FrmLang->CheckImageUseCount(sId) > 0) { Application->MessageBox(FrmLang->lblImage5->Caption.c_str(),//L"»èÁ¦ÇÒ À̹ÌÁö°¡ VMS Æû¿¡¼­ »ç¿ëµÇ°í ÀÖ½À´Ï´Ù.\r\n¸ÕÀú ÇØ´ç Æû¿¡¼­ »èÁ¦ÇØÁֽñ⠹ٶø´Ï´Ù.", FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL); return; } String sMsg; sMsg = FrmLang->lblImage7->Caption + ": " + sId;//"VMSÀ̹ÌÁö¹øÈ£: " + sId; sMsg+= "\r\n" + FrmLang->lblImage8->Caption;//"¼±ÅÃÇϽŠVMS À̹ÌÁö Á¤º¸¸¦ »èÁ¦ÇϽðڽÀ´Ï±î?"; if (Application->MessageBox(sMsg.c_str(), FTitle.c_str(), MB_YESNO|MB_ICONQUESTION|MB_APPLMODAL) != IDYES) return; if (FrmLang->DelVmsImage(sId, true)) { FUpdate = true; Application->MessageBox(FrmLang->lblImage9->Caption.c_str(),//L"VMS À̹ÌÁöÁ¤º¸»èÁ¦\r\nVMS À̹ÌÁöÁ¤º¸¸¦ »èÁ¦ ÇÏ¿´½À´Ï´Ù.", FTitle.c_str(), MB_OK|MB_ICONINFORMATION|MB_APPLMODAL); FormInit(); ChangeEditMode(1); LoadImageSymbol(); CComm_VmsImageTrafficUpdate(); // VMS¼­¹ö·Î À̹ÌÁö°¡ ¾÷µ¥ÀÌÆ® µÇ¾úÀ½À» ¾Ë¸°´Ù. POST_MSG(Application->MainForm->Handle, WM_DATABASE_REFRESH, WP_MSG_14, 0); } } //--------------------------------------------------------------------------- void __fastcall TVMSM410M::BtnSaveImgFileClick(TObject *Sender) { SaveDialog->Title = FTitle; SaveDialog->InitialDir = ExtractFilePath(Application->ExeName); SaveDialog->Filter = "Bitmap image Files (*.bmp)|*.bmp"; SaveDialog->FileName = EdNmbr->Text + ".bmp"; if (SaveDialog->Execute()) { try { String sFileName = SaveDialog->FileName; int iRet = sFileName.Pos(".bmp"); if (iRet == 0) { sFileName = SaveDialog->FileName + ".bmp"; } //ImgPreView->Picture->SaveToFile(sFileName); ImgTemp->Picture->SaveToFile(sFileName); } catch (Exception &exception) { Application->ShowException(&exception); } } } //--------------------------------------------------------------------------- void __fastcall TVMSM410M::EdImageFileNameClick(TObject *Sender) { OpenBmp->Title = FTitle; OpenBmp->FileName = ""; OpenBmp->Execute(); } //--------------------------------------------------------------------------- void __fastcall TVMSM410M::OpenBmpCanClose(TObject *Sender, bool &CanClose) { String sFName = OpenBmp->FileName; sFName = sFName.UpperCase(); String sMsgTitle, sMsgString; sMsgTitle = FrmLang->lblImage10->Caption;//"VMS À̹ÌÁö ¼±ÅÃ"; if (sFName.SubString(sFName.Length()-2, 3) != "BMP") { sMsgString = FrmLang->lblImage11->Caption;//"BMP ÆÄÀϸ¸ Àû¿ë °¡´ÉÇÕ´Ï´Ù."; Application->MessageBox(sMsgString.c_str(), sMsgTitle.c_str(), MB_OK|MB_ICONWARNING|MB_APPLMODAL); return; } try { FFileSize = ITSUtil_GetFileSize(sFName); if (FFileSize <= 0) { sMsgString = FrmLang->lblImage12->Caption;//"À̹ÌÁö ÆÄÀÏÀ» ÀÐ¾î ¿À´Âµ¥ ½ÇÆÐÇÏ¿´½À´Ï´Ù."; Application->MessageBox(sMsgString.c_str(), sMsgTitle.c_str(), MB_OK|MB_ICONWARNING|MB_APPLMODAL); return; } #if 0 if (FFileSize > (1024 * 32)) // Max 32Kbytes { sMsgString = FrmLang->lblImage13->Caption;//"À̹ÌÁö ÆÄÀÏÀÇ ÃÖ´ë Å©±â´Â 32KBytes¸¦ ³ÑÀ» ¼ö ¾ø½À´Ï´Ù.\r\nÀ̹ÌÁö ÆÄÀÏÀÇ ¿ë·®À» ÁÙ¿© ÁÖ¼¼¿ä."; Application->MessageBox(sMsgString.c_str(), sMsgTitle.c_str(), MB_OK|MB_ICONWARNING|MB_APPLMODAL); return; } #endif //EdImageSize->Text = String(dwFileSize);//GetFileSize(sFName)); EdImageFileName->Text = sFName; ImgPreView->Picture->Bitmap->FreeImage(); ImgPreView->Picture->Bitmap = NULL; ImgPreView->Picture->Bitmap->LoadFromFile(sFName); lblImgSize->Caption = String(ImgPreView->Picture->Bitmap->Width) + " * " + String(ImgPreView->Picture->Bitmap->Height); ImgTemp->Picture->Bitmap->FreeImage(); ImgTemp->Picture->Bitmap = NULL; ImgTemp->Picture->Bitmap->LoadFromFile(sFName); FNewWidth = ImgTemp->Picture->Bitmap->Width; FNewHeight = ImgTemp->Picture->Bitmap->Height; FImageUpdate = true; } catch(...) { } } //--------------------------------------------------------------------------- void __fastcall TVMSM410M::ClearSymbloList() { for(int ii = 0; ii < FListSymb->Count; ii++) { Graphics::TBitmap *bitmap = (Graphics::TBitmap *)FListSymb->Items[ii]; delete bitmap; } FListSymb->Clear(); } //--------------------------------------------------------------------------- void __fastcall TVMSM410M::LoadImageSymbol() { FormInit(); CMM_ClearGridTableView(TvList); ClearSymbloList(); String sQry; TADOQuery *pADO = NULL; sQry = "SELECT SYMB_LIB_NMBR, \r\n" " IMAG_DATA, \r\n" " SYMB_EXPL, SYMB_FILE_NM, SYMB_TYPE \r\n" " FROM TB_VMS_SYMB_LIB \r\n" " WHERE SYMB_LIB_NMBR BETWEEN 7000 AND 7999 \r\n" " AND DEL_YN = 'N' \r\n" " ORDER BY SYMB_LIB_NMBR \r\n"; int nRowHeight = 0; try { int nRow; TcxDataController *pGDC = TvList->DataController; TvList->BeginUpdate(); try { pADO = new TADOQuery(NULL); pADO->Close(); pADO->Connection = ITSDb_GetConnection(); ITSDb_SQLText(pADO, sQry); ITSDb_SQLOpen(pADO); for( ; !pADO->Eof; pADO->Next()) { nRow = pGDC->AppendRecord(); pGDC->Values[nRow][ColLink1->Index] = pADO->FieldByName("SYMB_LIB_NMBR")->AsString; pGDC->Values[nRow][ColLink2->Index] = pADO->FieldByName("IMAG_DATA")->AsVariant; pGDC->Values[nRow][ColLink3->Index] = pADO->FieldByName("SYMB_EXPL")->AsString; pGDC->Values[nRow][ColLink4->Index] = pADO->FieldByName("SYMB_TYPE")->AsString; Graphics::TBitmap *bitmap = new Graphics::TBitmap; bitmap->LoadFromStream(pADO->CreateBlobStream(pADO->FieldByName("IMAG_DATA"), bmRead)); FListSymb->Add(bitmap); if (bitmap->Height+2 > nRowHeight) nRowHeight = bitmap->Height+3; } } catch(EDatabaseError &E) { DBERRORMSG("TVMSM410M::LoadImageSymbol", String(E.ClassName()), E.Message, sQry); throw Exception(String(E.ClassName()) + E.Message); } catch(Exception &e) { DBERRORMSG("TVMSM410M::LoadImageSymbol", String(e.ClassName()), e.Message, sQry); throw Exception(String(e.ClassName()) + e.Message); } } __finally { if (pADO) { pADO->Close(); delete pADO; } TvList->OptionsView->DataRowHeight = nRowHeight; TvList->EndUpdate(); } } //--------------------------------------------------------------------------- void __fastcall TVMSM410M::LoadVmsIfsc() { CMM_ClearGridTableView(TvAxis); String sQry; TADOQuery *pADO = NULL; sQry = "SELECT C.VMS_CTLR_NMBR, C.VMS_CTLR_ID, C.VMS_NM, \r\n" " A.VMS_IFSC_ID, A.VMS_IFSC_NM, \r\n" " A.DSPL_STRT_NODE_NM, A.DSPL_END_NODE_NM, \r\n" " A.AXIS_YN \r\n" " FROM TB_VMS_IFSC A, \r\n" " TB_VMS_RLTN_IFSC B, \r\n" " (SELECT VMS_CTLR_NMBR, \r\n" " VMS_CTLR_ID, \r\n" " VMS_NM \r\n" " FROM TB_VMS_CTLR ) C \r\n" " WHERE A.USE_YN = 'Y' \r\n" " AND A.VMS_IFSC_ID = B.VMS_IFSC_ID \r\n" " AND B.VMS_CTLR_NMBR = C.VMS_CTLR_NMBR \r\n"; try { int nRow; TcxDataController *pGDC = TvAxis->DataController; TvAxis->BeginUpdate(); try { pADO = new TADOQuery(NULL); pADO->Close(); pADO->Connection = ITSDb_GetConnection(); ITSDb_SQLText(pADO, sQry); ITSDb_SQLOpen(pADO); for( ; !pADO->Eof; pADO->Next()) { nRow = pGDC->AppendRecord(); pGDC->Values[nRow][Col00->Index] = pADO->FieldByName("VMS_CTLR_ID")->AsString; pGDC->Values[nRow][Col01->Index] = pADO->FieldByName("VMS_IFSC_ID")->AsString; pGDC->Values[nRow][Col02->Index] = pADO->FieldByName("VMS_IFSC_NM")->AsString; pGDC->Values[nRow][Col03->Index] = pADO->FieldByName("DSPL_STRT_NODE_NM")->AsString; pGDC->Values[nRow][Col04->Index] = pADO->FieldByName("DSPL_END_NODE_NM")->AsString; pGDC->Values[nRow][Col05->Index] = pADO->FieldByName("AXIS_YN")->AsString; } } catch(EDatabaseError &E) { DBERRORMSG("TVMSM410M::LoadVmsIfsc", String(E.ClassName()), E.Message, sQry); throw Exception(String(E.ClassName()) + E.Message); } catch(Exception &e) { DBERRORMSG("TVMSM410M::LoadVmsIfsc", String(e.ClassName()), e.Message, sQry); throw Exception(String(e.ClassName()) + e.Message); } } __finally { if (pADO) { pADO->Close(); delete pADO; } TvAxis->EndUpdate(); CMM_ExpandCollapseChk(TvAxis, ChkExpand->Checked); } } //--------------------------------------------------------------------------- void __fastcall TVMSM410M::LoadImageSymbolCell(String ANmbr) { CMM_ClearGridTableView(TvImageCell); String sQry; TADOQuery *pADO = NULL; sQry = "SELECT A.SYMB_LIB_NMBR, \r\n" " A.CELL_ID, \r\n" " A.POSX, POSY, \r\n" " A.VMS_IFSC_ID, \r\n" " B.VMS_IFSC_NM, \r\n" " B.DSPL_STRT_NODE_NM, \r\n" " B.DSPL_END_NODE_NM \r\n" " FROM TB_VMS_SYMB_IFSC A, \r\n" " TB_VMS_IFSC B \r\n" " WHERE A.SYMB_LIB_NMBR = :p01 \r\n" " AND A.VMS_IFSC_ID = B.VMS_IFSC_ID(+) \r\n" " ORDER BY CELL_ID \r\n"; try { int nRow; TcxDataController *pGDC = TvImageCell->DataController; TvImageCell->BeginUpdate(); try { pADO = new TADOQuery(NULL); pADO->Close(); pADO->Connection = ITSDb_GetConnection(); ITSDb_SQLText(pADO, sQry); ITSDb_SQLBind(pADO, "p01", ANmbr); ITSDb_SQLOpen(pADO); for( ; !pADO->Eof; pADO->Next()) { nRow = pGDC->AppendRecord(); pGDC->Values[nRow][ColCellId->Index] = pADO->FieldByName("CELL_ID")->AsString; pGDC->Values[nRow][ColCellPosX->Index] = pADO->FieldByName("POSX")->AsString; pGDC->Values[nRow][ColCellPosY->Index] = pADO->FieldByName("POSY")->AsString; pGDC->Values[nRow][ColIfscId->Index] = pADO->FieldByName("VMS_IFSC_ID")->AsString; pGDC->Values[nRow][ColIfscNm->Index] = pADO->FieldByName("VMS_IFSC_NM")->AsString; pGDC->Values[nRow][ColStrNm->Index] = pADO->FieldByName("DSPL_STRT_NODE_NM")->AsString; pGDC->Values[nRow][ColEndNm->Index] = pADO->FieldByName("DSPL_END_NODE_NM")->AsString; } } catch(EDatabaseError &E) { DBERRORMSG("VMS image query", String(E.ClassName()), E.Message, sQry); throw Exception(String(E.ClassName()) + E.Message); } catch(Exception &e) { DBERRORMSG("VMS image query", String(e.ClassName()), e.Message, sQry); throw Exception(String(e.ClassName()) + e.Message); } } __finally { if (pADO) { pADO->Close(); delete pADO; } TvImageCell->EndUpdate(); } } //--------------------------------------------------------------------------- void __fastcall TVMSM410M::TvListCellDblClick(TcxCustomGridTableView *Sender, TcxGridTableDataCellViewInfo *ACellViewInfo, TMouseButton AButton, TShiftState AShift, bool &AHandled) { if (!ACellViewInfo) return; DisplayInfo(); } //--------------------------------------------------------------------------- void __fastcall TVMSM410M::ColLink2CustomDrawCell(TcxCustomGridTableView *Sender, TcxCanvas *ACanvas, TcxGridTableDataCellViewInfo *AViewInfo, bool &ADone) { #if 0 int nRow = AViewInfo->GridRecord->RecordIndex; if (nRow < 0) return; if (nRow >= FListSymb->Count) { return; } try { Graphics::TBitmap *pBmp = (Graphics::TBitmap*)FListSymb->Items[nRow]; TRect rc; TRect rcOrg = AViewInfo->Bounds; int nH = ( (rcOrg.Bottom - rcOrg.Top) - pBmp->Height ) / 2; rc.Top = rcOrg.Top + nH+1; rc.Bottom = rcOrg.Bottom - nH+1; rc.Left = rcOrg.Left + 1; rc.Right = rc.Left + pBmp->Width; ACanvas->Canvas->StretchDraw(rc, pBmp); ADone = true; } catch(Exception &e) { } #endif } //--------------------------------------------------------------------------- void __fastcall TVMSM410M::BtnCellDeleteClick(TObject *Sender) { TcxGridDataController *pGDC = TvImageCell->DataController; int nSelIdx = pGDC->FocusedRecordIndex; if (nSelIdx < 0) return; pGDC->BeginUpdate(); pGDC->DeleteRecord(nSelIdx); pGDC->EndUpdate(); UpdateCellColor(); } //--------------------------------------------------------------------------- void __fastcall TVMSM410M::BtnCellApplyClick(TObject *Sender) { TcxGridDataController *pGDC = TvImageCell->DataController; String sCellId; String sPosX; String sPosY; int nCellId = SeCellId->Value; int nPosX = SePosX->Value; int nPosY = SePosY->Value; int nMaxCellId = 0; bool bFound = false; sCellId = String(nCellId); sPosX = String(nPosX); sPosY = String(nPosY); int nFocusedIndex = 0; try { int nRows = pGDC->RecordCount; TvImageCell->BeginUpdate(); pGDC->BeginUpdate(); for (int ii = 0; ii < nRows; ii++) { String sTmpId = pGDC->Values[ii][ColCellId->Index]; if (sTmpId == sCellId) { nFocusedIndex = ii; bFound = true; } } if (!bFound) { nFocusedIndex = pGDC->AppendRecord(); //SeCellId->Value = nRows+1; pGDC->Values[nFocusedIndex][ColCellId->Index] = String(nRows+1); } pGDC->Values[nFocusedIndex][ColCellPosX->Index] = sPosX; pGDC->Values[nFocusedIndex][ColCellPosY->Index] = sPosY; } __finally { pGDC->EndUpdate(); TvImageCell->EndUpdate(); //if (pGDC->RecordCount > 0) pGDC->FocusedRecordIndex = nFocusedIndex; SeCellId->Value = pGDC->RecordCount+1; } UpdateCellColor(); } //--------------------------------------------------------------------------- void __fastcall TVMSM410M::ImgPreViewMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { try { SePosX->Value = X; SePosY->Value = Y; UpdateCellColor(); TColor FOldColor = ImgPreView->Picture->Bitmap->Canvas->Pixels[SePosX->Value][SePosY->Value]; ImgPreView->Picture->Bitmap->Canvas->Brush->Style = bsSolid; ImgPreView->Picture->Bitmap->Canvas->Brush->Color = clWhite; ImgPreView->Picture->Bitmap->Canvas->FloodFill(SePosX->Value, SePosY->Value, FOldColor, fsSurface); } catch(...) {} } //--------------------------------------------------------------------------- void __fastcall TVMSM410M::ColAreaCustomDrawCell(TcxCustomGridTableView *Sender, TcxCanvas *ACanvas, TcxGridTableDataCellViewInfo *AViewInfo, bool &ADone) { int nIdx = AViewInfo->GridRecord->RecordIndex; if (nIdx < 0) return; try { String sCellId = VarToStr(TvImageCell->DataController->Values[nIdx][ColCellId->Index]); nIdx = sCellId.ToIntDef(0); ACanvas->Brush->Color = GetDisplayColor(nIdx-1); ACanvas->Font->Color = ACanvas->Brush->Color; } catch(...) { } } //--------------------------------------------------------------------------- void __fastcall TVMSM410M::TvImageCellFocusedRecordChanged(TcxCustomGridTableView *Sender, TcxCustomGridRecord *APrevFocusedRecord, TcxCustomGridRecord *AFocusedRecord, bool ANewItemRecordFocusingChanged) { TcxGridDataController *pGDC = TvImageCell->DataController; int nSelIdx = pGDC->FocusedRecordIndex; if (nSelIdx < 0) return; String sCellId = VarToStr(pGDC->Values[nSelIdx][ColCellId->Index]); String sPosX = VarToStr(pGDC->Values[nSelIdx][ColCellPosX->Index]); String sPosY = VarToStr(pGDC->Values[nSelIdx][ColCellPosY->Index]); SeCellId->Value = sCellId.ToIntDef(0); SePosX->Value = sPosX.ToIntDef(0); SePosY->Value = sPosY.ToIntDef(0); UpdateCellColor(); #if 1 try { TColor FOldColor = ImgPreView->Picture->Bitmap->Canvas->Pixels[SePosX->Value][SePosY->Value]; if (FOldColor == clYellow) return; ImgPreView->Picture->Bitmap->Canvas->Brush->Color = clYellow; ImgPreView->Picture->Bitmap->Canvas->FloodFill(SePosX->Value, SePosY->Value, FOldColor, fsSurface); } catch(...) {} #endif } //--------------------------------------------------------------------------- void __fastcall TVMSM410M::UpdateCellColor() { ImgPreView->Picture->Bitmap->FreeImage(); ImgPreView->Picture->Bitmap = NULL; ImgPreView->Picture->Bitmap->Assign(ImgTemp->Picture->Bitmap); ImgPreView->Width = ImgPreView->Picture->Bitmap->Width; ImgPreView->Height = ImgPreView->Picture->Bitmap->Height; TcxGridDataController *pGDC = TvImageCell->DataController; int nRows = pGDC->RecordCount; try { TvImageCell->BeginUpdate(); pGDC->BeginUpdate(); for (int ii = 0; ii < nRows; ii++) { String sCellId = VarToStr(pGDC->Values[ii][ColCellId->Index]); String sPosX = VarToStr(pGDC->Values[ii][ColCellPosX->Index]); String sPosY = VarToStr(pGDC->Values[ii][ColCellPosY->Index]); int X = sPosX.ToIntDef(0); int Y = sPosY.ToIntDef(0); TColor FOldColor = ImgPreView->Picture->Bitmap->Canvas->Pixels[X][Y]; int nIdx = sCellId.ToIntDef(0); ImgPreView->Picture->Bitmap->Canvas->Brush->Style = bsSolid; ImgPreView->Picture->Bitmap->Canvas->Brush->Color = GetDisplayColor(nIdx-1); ImgPreView->Picture->Bitmap->Canvas->FloodFill(X, Y, FOldColor, fsSurface); } } __finally { pGDC->EndUpdate(); TvImageCell->EndUpdate(); } } //--------------------------------------------------------------------------- void __fastcall TVMSM410M::SeCellIdPropertiesChange(TObject *Sender) { if (((TcxSpinEdit*)Sender)->Value < ((TcxSpinEdit*)Sender)->Properties->MinValue) ((TcxSpinEdit*)Sender)->Value = ((TcxSpinEdit*)Sender)->Properties->MinValue; else if(((TcxSpinEdit*)Sender)->Value > ((TcxSpinEdit*)Sender)->Properties->MaxValue && ((TcxSpinEdit*)Sender)->Properties->MaxValue) ((TcxSpinEdit*)Sender)->Value = ((TcxSpinEdit*)Sender)->Properties->MaxValue; } //--------------------------------------------------------------------------- void __fastcall TVMSM410M::TvListFocusedRecordChanged(TcxCustomGridTableView *Sender, TcxCustomGridRecord *APrevFocusedRecord, TcxCustomGridRecord *AFocusedRecord, bool ANewItemRecordFocusingChanged) { if (!AFocusedRecord) return; DisplayInfo(); } //--------------------------------------------------------------------------- void __fastcall TVMSM410M::BtnListAddClick(TObject *Sender) { int nCellIdx = CMM_GetRecordIndex(TvImageCell); if (nCellIdx < 0) return; int nIfscIdx = CMM_GetRecordIndex(TvAxis); if (nIfscIdx < 0) return; TcxGridDataController *pDcCell = TvImageCell->DataController; TcxGridDataController *pDcIfsc = TvAxis->DataController; pDcCell->Values[nCellIdx][ColIfscId->Index] = pDcIfsc->Values[nIfscIdx][Col01->Index]; pDcCell->Values[nCellIdx][ColIfscNm->Index] = pDcIfsc->Values[nIfscIdx][Col02->Index]; pDcCell->Values[nCellIdx][ColStrNm->Index] = pDcIfsc->Values[nIfscIdx][Col03->Index]; pDcCell->Values[nCellIdx][ColEndNm->Index] = pDcIfsc->Values[nIfscIdx][Col04->Index]; } //--------------------------------------------------------------------------- void __fastcall TVMSM410M::BtnListDeleteClick(TObject *Sender) { int nCellIdx = CMM_GetRecordIndex(TvImageCell); if (nCellIdx < 0) return; TcxGridDataController *pDcCell = TvImageCell->DataController; pDcCell->Values[nCellIdx][ColIfscId->Index] = ""; pDcCell->Values[nCellIdx][ColIfscNm->Index] = ""; pDcCell->Values[nCellIdx][ColStrNm->Index] = ""; pDcCell->Values[nCellIdx][ColEndNm->Index] = ""; } //--------------------------------------------------------------------------- void __fastcall TVMSM410M::ChkExpandClick(TObject *Sender) { CMM_ExpandCollapseChk(TvAxis, ChkExpand->Checked); } //--------------------------------------------------------------------------- void __fastcall TVMSM410M::Col05CustomDrawCell(TcxCustomGridTableView *Sender, TcxCanvas *ACanvas, TcxGridTableDataCellViewInfo *AViewInfo, bool &ADone) { int nRecordIdx = AViewInfo->GridRecord->RecordIndex; if (nRecordIdx < 0) { return; } try { int nItemIdx = AViewInfo->Item->Index; if (VarIsNull(AViewInfo->GridRecord->DisplayTexts[nItemIdx])) return; String sData = AViewInfo->GridRecord->DisplayTexts[nItemIdx]; if (sData == "Y") { ACanvas->Canvas->Brush->Color = clLime; } } catch(Exception &e) { } } //---------------------------------------------------------------------------