FrmVmsMsgRespMngrF.cpp 38 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146
  1. //---------------------------------------------------------------------------
  2. #include <vcl.h>
  3. #include "ITSSkinF.h"
  4. #include "ITSUtilF.h"
  5. #include "AppGlobalF.h"
  6. #include "WindowMsgF.h"
  7. #include "CDSVmsIfscF.h"
  8. #include "CDSFontF.h"
  9. #include "CDSVmsFormF.h"
  10. #pragma hdrstop
  11. #include "FrmVmsMsgRespMngrF.h"
  12. //---------------------------------------------------------------------------
  13. #pragma package(smart_init)
  14. #pragma link "cxButtons"
  15. #pragma link "cxCalendar"
  16. #pragma link "cxContainer"
  17. #pragma link "cxControls"
  18. #pragma link "cxDropDownEdit"
  19. #pragma link "cxEdit"
  20. #pragma link "cxGraphics"
  21. #pragma link "cxGroupBox"
  22. #pragma link "cxLabel"
  23. #pragma link "cxLookAndFeelPainters"
  24. #pragma link "cxLookAndFeels"
  25. #pragma link "cxMaskEdit"
  26. #pragma link "cxPC"
  27. #pragma link "cxPCdxBarPopupMenu"
  28. #pragma link "cxSpinEdit"
  29. #pragma link "cxSplitter"
  30. #pragma link "cxTextEdit"
  31. #pragma link "cxTimeEdit"
  32. #pragma link "dxSkinBlack"
  33. #pragma link "dxSkinBlue"
  34. #pragma link "dxSkinCaramel"
  35. #pragma link "dxSkinCoffee"
  36. #pragma link "dxSkinDarkRoom"
  37. #pragma link "dxSkinDarkSide"
  38. #pragma link "dxSkinFoggy"
  39. #pragma link "dxSkinGlassOceans"
  40. #pragma link "dxSkiniMaginary"
  41. #pragma link "dxSkinLilian"
  42. #pragma link "dxSkinLiquidSky"
  43. #pragma link "dxSkinLondonLiquidSky"
  44. #pragma link "dxSkinMcSkin"
  45. #pragma link "dxSkinMoneyTwins"
  46. #pragma link "dxSkinOffice2007Black"
  47. #pragma link "dxSkinOffice2007Blue"
  48. #pragma link "dxSkinOffice2007Green"
  49. #pragma link "dxSkinOffice2007Pink"
  50. #pragma link "dxSkinOffice2007Silver"
  51. #pragma link "dxSkinOffice2010Black"
  52. #pragma link "dxSkinOffice2010Blue"
  53. #pragma link "dxSkinOffice2010Silver"
  54. #pragma link "dxSkinsCore"
  55. #pragma link "dxSkinscxPCPainter"
  56. #pragma link "dxSkinSeven"
  57. #pragma link "dxSkinSharp"
  58. #pragma link "dxSkinSilver"
  59. #pragma link "dxSkinStardust"
  60. #pragma link "cxRadioGroup"
  61. #pragma link "cxClasses"
  62. #pragma link "cxCustomData"
  63. #pragma link "cxData"
  64. #pragma link "cxDataStorage"
  65. #pragma link "cxDBData"
  66. #pragma link "cxFilter"
  67. #pragma link "cxGrid"
  68. #pragma link "cxGridCustomTableView"
  69. #pragma link "cxGridCustomView"
  70. #pragma link "cxGridDBTableView"
  71. #pragma link "cxGridLevel"
  72. #pragma link "cxGridTableView"
  73. #pragma link "cxStyles"
  74. #pragma link "cxCheckBox"
  75. #pragma link "cxImage"
  76. #pragma link "cxButtonEdit"
  77. #pragma link "cxBlobEdit"
  78. #pragma link "cxColorComboBox"
  79. #pragma link "cxCalc"
  80. #pragma link "VmsDesignerF"
  81. #pragma link "FRAME_VmsSchListF"
  82. #pragma link "cxHint"
  83. #pragma link "dxCustomHint"
  84. #pragma link "dxScreenTip"
  85. #pragma link "dxSkinsForm"
  86. #pragma link "dxGDIPlusClasses"
  87. #pragma resource "*.dfm"
  88. TFrmVmsMsgRespMngr *FrmVmsMsgRespMngr = NULL;
  89. //---------------------------------------------------------------------------
  90. __fastcall TFrmVmsMsgRespMngr::TFrmVmsMsgRespMngr(TComponent* Owner)
  91. : TForm(Owner)
  92. {
  93. //CMM_SetFormPosition(g_AppCfg.bSaveForm);
  94. ITSSkin_Initialize(Application, g_AppCfg.sLang);
  95. ITSSkin_Caption(false);
  96. ITSSkin_Load(this);
  97. //CMM_LoadForm(g_sFormsDir, this);
  98. SetColorScheme(g_AppCfg.sSkinName);
  99. FUpdate= false;
  100. FTitle = Caption;//"VMS 자동 스케줄 관리";
  101. FListSymb = new TList;
  102. EditMode = false;
  103. //FRAMEVmsSchList1->PnlTop->Visible = false;
  104. //FRAMEVmsSchList1->PnlBottom->Visible = false;
  105. PgVmsSch->Properties->ActivePage = TsEdit;
  106. }
  107. //---------------------------------------------------------------------------
  108. void __fastcall TFrmVmsMsgRespMngr::SetColorScheme(String ASkinName)
  109. {
  110. dxSkinController1->SkinName = ASkinName;
  111. dxSkinController1->Refresh();
  112. PnlPreview->ParentColor = false;
  113. PnlPreview->Color = clBlack;
  114. }
  115. //---------------------------------------------------------------------------
  116. void __fastcall TFrmVmsMsgRespMngr::CommClose()
  117. {
  118. try {
  119. #if 0
  120. if (m_pEdtDesigner) {
  121. delete m_pEdtDesigner;
  122. m_pEdtDesigner = NULL;
  123. }
  124. #endif
  125. ClearSymbloList();
  126. SAFE_DELETE(FListSymb);
  127. ITSSkin_Term();
  128. //CMM_SaveForm(g_sFormsDir, this);
  129. }
  130. catch(...) {
  131. }
  132. }
  133. //---------------------------------------------------------------------------
  134. void __fastcall TFrmVmsMsgRespMngr::FormCreate(TObject *Sender)
  135. {
  136. InitDbLoading();
  137. //m_pEdtDesigner = new TVmsFormDesigner(PnlEditForm);
  138. //FOR_STL(TCDSFontColor*, pObj, CDSFontManager->FFontColors) {
  139. // m_pEdtDesigner->InitFontColor(pObj->VMS_FONT_COLR_CD, (TColor)pObj->VMS_FONT_COLR_VAL);
  140. //}
  141. }
  142. //---------------------------------------------------------------------------
  143. void __fastcall TFrmVmsMsgRespMngr::InitDbLoading()
  144. {
  145. Application->ProcessMessages();
  146. if (!VmsCtlrManager) {
  147. VmsCtlrManager = new TVmsCtlrManager();
  148. }
  149. VmsCtlrManager->LoadVmsModlSize();
  150. VmsCtlrManager->LoadFromDb();
  151. #if 0
  152. if (SysCodeManager == NULL) {
  153. SysCodeManager = new TSysCodeManager();
  154. }
  155. SysCodeManager->LoadFromDb();
  156. if (!VmsTextItemManager) {
  157. VmsTextItemManager = new TVmsTextItemManager();
  158. }
  159. VmsTextItemManager->LoadFromDb();
  160. #endif
  161. if(!CDSFontManager) {
  162. CDSFontManager = new TCDSFontManager();
  163. }
  164. CDSFontManager->LoadFontInfo();
  165. LoadIncdType();
  166. }
  167. //---------------------------------------------------------------------------
  168. void __fastcall TFrmVmsMsgRespMngr::FormShow(TObject *Sender)
  169. {
  170. Refresh();
  171. FormInit();
  172. TmrShow->Enabled = true;
  173. }
  174. //---------------------------------------------------------------------------
  175. void __fastcall TFrmVmsMsgRespMngr::FormInit()
  176. {
  177. FillIncdTypeList();
  178. FillVmsSizeType();
  179. FNewDb = false;
  180. }
  181. //---------------------------------------------------------------------------
  182. void __fastcall TFrmVmsMsgRespMngr::FillVmsSizeType()
  183. {
  184. if (!VmsTypeManager)
  185. {
  186. VmsTypeManager = new TVmsTypeManager();
  187. VmsTypeManager->LoadFromDb();
  188. }
  189. CMM_ClearGridTableView(TvModule);
  190. TcxDataController *pGDC = TvModule->DataController;
  191. TvModule->BeginUpdate();
  192. try {
  193. FOR_STL(TVmsType*, pVmsType, VmsTypeManager->FSortLists)
  194. {
  195. int nRow = pGDC->AppendRecord();
  196. String sTypeCd = pVmsType->VMS_MODL_KIND;
  197. String sTypeNm = pVmsType->VMS_MODL_KIND_NM;
  198. int nW = pVmsType->VMS_WDTH;
  199. int nH = pVmsType->VMS_HGHT;
  200. String sModuleInfo = "";
  201. if (pVmsType->USE_LCS == "Y") {
  202. sModuleInfo = " [" + sTypeCd + "] " + sTypeNm + " (" + String(nW) + "*" + String(nH) + ") - LCS ";
  203. }
  204. else {
  205. sModuleInfo = " [" + sTypeCd + "] " + sTypeNm + " (" + String(nW) + "*" + String(nH) + ")";
  206. }
  207. pGDC->Values[nRow][Column01->Index] = sModuleInfo;
  208. pGDC->Values[nRow][Column02->Index] = sTypeCd;
  209. pGDC->Values[nRow][Col99->Index] = (int)pVmsType;
  210. }
  211. }
  212. __finally {
  213. TvModule->EndUpdate();
  214. }
  215. }
  216. //---------------------------------------------------------------------------
  217. void __fastcall TFrmVmsMsgRespMngr::TmrShowTimer(TObject *Sender)
  218. {
  219. TmrShow->Enabled = false;
  220. }
  221. //---------------------------------------------------------------------------
  222. void __fastcall TFrmVmsMsgRespMngr::BtnCloseClick(TObject *Sender)
  223. {
  224. Close();
  225. }
  226. //---------------------------------------------------------------------------
  227. void __fastcall TFrmVmsMsgRespMngr::FormClose(TObject *Sender, TCloseAction &Action)
  228. {
  229. CommClose();
  230. FrmVmsMsgRespMngr = NULL;
  231. Action = caFree;
  232. }
  233. //---------------------------------------------------------------------------
  234. void __fastcall TFrmVmsMsgRespMngr::FormCloseQuery(TObject *Sender, bool &CanClose)
  235. {
  236. if (FUpdate)
  237. {
  238. //POST_MSG(Application->MainForm->Handle, WM_DATABASE_REFRESH, WP_MSG_14, 0);
  239. }
  240. }
  241. //---------------------------------------------------------------------------
  242. void __fastcall TFrmVmsMsgRespMngr::ClearSymbloList()
  243. {
  244. FFormLists.RemoveAll();
  245. for(int ii = 0; ii < FListSymb->Count; ii++)
  246. {
  247. Graphics::TBitmap *bitmap = (Graphics::TBitmap *)FListSymb->Items[ii];
  248. delete bitmap;
  249. }
  250. FListSymb->Clear();
  251. }
  252. //---------------------------------------------------------------------------
  253. void __fastcall TFrmVmsMsgRespMngr::BtnSearchClick(TObject *Sender)
  254. {
  255. RefreshData();
  256. EdFocus->SetFocus();
  257. }
  258. //---------------------------------------------------------------------------
  259. void __fastcall TFrmVmsMsgRespMngr::RefreshData()
  260. {
  261. FormClear();
  262. }
  263. //---------------------------------------------------------------------------
  264. void __fastcall TFrmVmsMsgRespMngr::FormClear()
  265. {
  266. FSelIdx = -1;
  267. EdIncdType->Clear();
  268. EdIncdDtlType->Clear();
  269. EdModlKind->Clear();
  270. GrpSchedule->Caption = lblTitle->Caption;//"▶ 자동 스케줄 설정";
  271. GrpMsgList->Caption = lblGrpMsgList->Caption;
  272. CMM_ClearGridTableView(TvSche);
  273. APP_ImageClear(ImgPreview->Canvas, 0, 0, ImgPreview->Width, ImgPreview->Height, clBlack);
  274. FNewDb = false;
  275. }
  276. //---------------------------------------------------------------------------
  277. bool __fastcall TFrmVmsMsgRespMngr::CheckExistScheduleFormId(String AVmsFormId)
  278. {
  279. try {
  280. TvSche->BeginUpdate();
  281. TcxDataController *pGDC = TvSche->DataController;
  282. int nRows = pGDC->RecordCount;
  283. for (int ii = 0; ii < nRows; ii++) {
  284. String VMS_FORM_ID = VarToStr(pGDC->Values[ii][Col00->Index]);
  285. if (AVmsFormId == VMS_FORM_ID) {
  286. return true;
  287. }
  288. }
  289. }
  290. __finally {
  291. TvSche->EndUpdate();
  292. }
  293. return false;
  294. }
  295. //---------------------------------------------------------------------------
  296. void __fastcall TFrmVmsMsgRespMngr::BtnListAddClick(TObject *Sender)
  297. {
  298. String sUse = "N";
  299. String sTime= "4";
  300. int nSelIdx = CMM_GetRecordIndex(TvList);
  301. if (nSelIdx < 0) return;
  302. TcxGridDataController *pDcFrm = TvForm->DataController;
  303. TcxGridDataController *pDcSch = TvSche->DataController;
  304. int nFormIdx = CMM_GetRecordIndex(TvForm);
  305. if (nFormIdx < 0) return;
  306. String sNewVmsFormId = VarToStr(pDcFrm->Values[nFormIdx][ColFrm00->Index]);
  307. String sNewVmsFormNm = VarToStr(pDcFrm->Values[nFormIdx][ColFrm02->Index]);
  308. if (CheckExistScheduleFormId(sNewVmsFormId)) {
  309. String sMsg = "VMS 대응 메시지 관리 - 메시지 추가 실패\r\n\r\n";
  310. sMsg += "메시지ID: " + sNewVmsFormId + "\r\n";
  311. sMsg += "메시지명: " + sNewVmsFormNm + "\r\n\r\n";
  312. sMsg += "메시지 정보가 대응메시지에 이미 존재 합니다.\r\n대응메시지에는 하나의 메시지 정보만 가능합니다.\r\n";
  313. Application->MessageBox(sMsg.c_str(), FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  314. return;
  315. }
  316. int nRow = pDcSch->AppendRecord();
  317. pDcSch->Values[nRow][Col00->Index] = VarToStr(pDcFrm->Values[nFormIdx][ColFrm00->Index]); //ID
  318. pDcSch->Values[nRow][Col02->Index] = VarToStr(pDcFrm->Values[nFormIdx][ColFrm02->Index]); //명칭
  319. pDcSch->Values[nRow][Col03->Index] = VarToStr(pDcFrm->Values[nFormIdx][ColFrm03->Index]); //표출(초)
  320. pDcSch->Values[nRow][Col01->Index] = pDcFrm->Values[nFormIdx][ColFrm01->Index]; //이미지데이터임
  321. EditPreviewForm();
  322. }
  323. //---------------------------------------------------------------------------
  324. void __fastcall TFrmVmsMsgRespMngr::BtnListDeleteClick(TObject *Sender)
  325. {
  326. int nSelIdx = CMM_GetRecordIndex(TvList);
  327. if (nSelIdx < 0) return;
  328. #if 0
  329. TcxGridDataController *pDcSch = TvSche->DataController;
  330. nSelIdx = CMM_GetRecordIndex(TvSche);
  331. if (nSelIdx < 0) return;
  332. TvSche->DataController->DeleteRecord(nSelIdx);
  333. #endif
  334. TcxGridTableView *pSrcList = TvSche;
  335. int nFocused = pSrcList->Controller->FocusedRecordIndex;
  336. int nSelRows = pSrcList->Controller->SelectedRowCount;
  337. if (nSelRows <= 0) {
  338. return;
  339. }
  340. try {
  341. TcxGridDataController *pGDC = pSrcList->DataController;
  342. pSrcList->BeginUpdate();
  343. try {
  344. pSrcList->Controller->DeleteSelection();
  345. int nDataCnt = pSrcList->DataController->RecordCount;
  346. if (nDataCnt <= nFocused)
  347. nFocused = nDataCnt - 1;
  348. pSrcList->Controller->ClearSelection();
  349. }
  350. catch(...) {
  351. }
  352. }
  353. __finally {
  354. pSrcList->EndUpdate();
  355. }
  356. EditPreviewForm();
  357. }
  358. //---------------------------------------------------------------------------
  359. void __fastcall TFrmVmsMsgRespMngr::BtnSaveClick(TObject *Sender)
  360. {
  361. String sVmsModlKind = FVmsTypeCd;
  362. String sIncdType = EdIncdType->Text.Trim();
  363. String sIncdDtlType = EdIncdDtlType->Text.Trim();
  364. if (sIncdType.IsEmpty()) {
  365. Application->MessageBox(L"VMS 대응 메시지 관리\r\nVMS 대응 이벤트 목록에서 VMS 이벤트를 먼저 선택한 후 작업을 진행하세요.",
  366. FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  367. return;
  368. }
  369. if (Application->MessageBox(L"VMS 대응 메시지 관리\r\nVMS 대응 원클릭 메시지를 저장하시겠습니까?",
  370. FTitle.c_str(), MB_YESNO|MB_ICONQUESTION|MB_APPLMODAL) != IDYES) return;
  371. ITSDb_GetConnection()->BeginTrans();
  372. if (!DeleteVmsScenario(sVmsModlKind, sIncdType, sIncdDtlType)) {
  373. ITSDb_GetConnection()->RollbackTrans();
  374. return;
  375. }
  376. if (!SaveVmsScenario(sVmsModlKind, sIncdType, sIncdDtlType)) {
  377. ITSDb_GetConnection()->RollbackTrans();
  378. return;
  379. }
  380. ITSDb_GetConnection()->CommitTrans();
  381. Application->MessageBox(L"VMS 대응 메시지 관리\r\nVMS 대응 원클릭 메시지를 저장하였습니다.",
  382. FTitle.c_str(), MB_OK|MB_ICONINFORMATION|MB_APPLMODAL);
  383. //CMM_SetGridRow(CxList, FRAMEVmsSchList1->TvList, sVmsCtlrId, FRAMEVmsSchList1->Column01->Index);
  384. DisplayRespMessage();
  385. }
  386. //---------------------------------------------------------------------------
  387. bool __fastcall TFrmVmsMsgRespMngr::SaveVmsScenario(String AVmsModlKind, String AIncdType, String AIncdDtlType)
  388. {
  389. String sQry;
  390. TADOQuery *pADO = NULL;
  391. TcxDataController *pGDC = TvSche->DataController;
  392. sQry = "INSERT INTO TB_VMS_INCD_RES_FORM ( \r\n"
  393. " INCD_TYPE, \r\n"
  394. " VMS_MODL_KIND, \r\n"
  395. " SN, \r\n"
  396. " VMS_FORM_ID, \r\n"
  397. " RGSTR_ID, \r\n"
  398. " REG_DT ) \r\n"
  399. " VALUES ( \r\n"
  400. " :p01, \r\n"
  401. " :p03, \r\n"
  402. " :p04, \r\n"
  403. " :p05, \r\n"
  404. " :p06, \r\n"
  405. " SYSDATE ) \r\n";
  406. try {
  407. TvSche->BeginUpdate();
  408. int nRows = pGDC->RecordCount;
  409. try {
  410. pADO = new TADOQuery(NULL);
  411. pADO->Close();
  412. pADO->Connection = ITSDb_GetConnection();
  413. ITSDb_SQLText(pADO, sQry);
  414. for (int ii = 0; ii < nRows; ii++) {
  415. int SN = ii+1;
  416. String VMS_FORM_ID = VarToStr(pGDC->Values[ii][Col00->Index]);
  417. String RGSTR_ID = g_AppCfg.OPER_ID;
  418. pADO->Parameters->ParamByName("p01")->Value = AIncdType;
  419. pADO->Parameters->ParamByName("p03")->Value = AVmsModlKind;
  420. pADO->Parameters->ParamByName("p04")->Value = SN;
  421. pADO->Parameters->ParamByName("p05")->Value = VMS_FORM_ID;
  422. pADO->Parameters->ParamByName("p06")->Value = RGSTR_ID;
  423. pADO->ExecSQL();
  424. }
  425. }
  426. catch(EDatabaseError &E) {
  427. DBERRORMSG("TFrmVmsMsgRespMngr::SaveVmsScenario", String(E.ClassName()), E.Message, sQry);
  428. return false;
  429. }
  430. catch(Exception &e) {
  431. DBERRORMSG("TFrmVmsMsgRespMngr::SaveVmsScenario", String(e.ClassName()), e.Message, sQry);
  432. return false;
  433. }
  434. }
  435. __finally {
  436. if (pADO) {
  437. pADO->Close();
  438. delete pADO;
  439. }
  440. TvSche->EndUpdate();
  441. }
  442. return true;
  443. }
  444. //---------------------------------------------------------------------------
  445. bool __fastcall TFrmVmsMsgRespMngr::DeleteVmsScenario(String AVmsModlKind, String AIncdType, String AIncdDtlType)
  446. {
  447. String sQry;
  448. TADOQuery *pADO = NULL;
  449. sQry = "DELETE TB_VMS_INCD_RES_FORM \r\n"
  450. " WHERE 1=1 \r\n"
  451. " AND INCD_TYPE = :p01 \r\n"
  452. " AND VMS_MODL_KIND = :p03 \r\n";
  453. try {
  454. try {
  455. pADO = new TADOQuery(NULL);
  456. pADO->Close();
  457. pADO->Connection = ITSDb_GetConnection();
  458. ITSDb_SQLText(pADO, sQry);
  459. pADO->Parameters->ParamByName("p01")->Value = AIncdType;
  460. pADO->Parameters->ParamByName("p03")->Value = AVmsModlKind;
  461. pADO->ExecSQL();
  462. }
  463. catch(EDatabaseError &E) {
  464. DBERRORMSG("TFrmVmsMsgRespMngr::DeleteVmsScenario", String(E.ClassName()), E.Message, sQry);
  465. return false;
  466. }
  467. catch(Exception &e) {
  468. DBERRORMSG("TFrmVmsMsgRespMngr::DeleteVmsScenario", String(e.ClassName()), e.Message, sQry);
  469. return false;
  470. }
  471. }
  472. __finally {
  473. if (pADO) {
  474. pADO->Close();
  475. delete pADO;
  476. }
  477. }
  478. return true;
  479. }
  480. //---------------------------------------------------------------------------
  481. bool __fastcall TFrmVmsMsgRespMngr::LoadVmsScheduleInfo(String AVmsModlKind, String AIncdType, String AIncdDtlType)
  482. {
  483. String sQry;
  484. TADOQuery *pADO = NULL;
  485. CMM_ClearGridTableView(TvSche);
  486. CMM_ClearGridTableView(TvView);
  487. TcxDataController *pDcSch = TvSche->DataController;
  488. TcxDataController *pDcViw = TvView->DataController;
  489. sQry = "SELECT A.INCD_TYPE, \r\n"
  490. " A.VMS_MODL_KIND, A.SN, \r\n"
  491. " A.VMS_FORM_ID, B.VMS_FORM_NM, \r\n"
  492. " B.VMS_FORM_TYPE, B.DSPL_HR, \r\n"
  493. " B.VMS_FORM_IMG \r\n"
  494. " FROM TB_VMS_INCD_RES_FORM A, \r\n"
  495. " TB_VMS_FORM B \r\n"
  496. " WHERE 1=1 \r\n"
  497. " AND A.INCD_TYPE = :p01 \r\n"
  498. " AND A.VMS_MODL_KIND = :p03 \r\n"
  499. " AND A.VMS_FORM_ID = B.VMS_FORM_ID \r\n"
  500. " ORDER BY A.SN \r\n";
  501. try {
  502. TvSche->BeginUpdate();
  503. TvView->BeginUpdate();
  504. int nRowS, nRowV;
  505. try {
  506. pADO = new TADOQuery(NULL);
  507. pADO->Close();
  508. pADO->Connection = ITSDb_GetConnection();
  509. ITSDb_SQLText(pADO, sQry);
  510. ITSDb_SQLBind(pADO, "p01", AIncdType);
  511. ITSDb_SQLBind(pADO, "p03", AVmsModlKind);
  512. ITSDb_SQLOpen(pADO);
  513. for( ; !pADO->Eof; pADO->Next()) {
  514. nRowS = pDcSch->AppendRecord();
  515. nRowV = pDcViw->AppendRecord();
  516. pDcSch->Values[nRowS][Col00->Index] = pADO->FieldByName("VMS_FORM_ID")->AsString;
  517. pDcSch->Values[nRowS][Col02->Index] = pADO->FieldByName("VMS_FORM_NM")->AsString;
  518. pDcSch->Values[nRowS][Col03->Index] = pADO->FieldByName("DSPL_HR")->AsString;
  519. pDcSch->Values[nRowS][Col01->Index] = pADO->FieldByName("VMS_FORM_IMG")->AsVariant;
  520. pDcViw->Values[nRowV][ColView00->Index] = pADO->FieldByName("VMS_FORM_ID")->AsString;
  521. pDcViw->Values[nRowV][ColView02->Index] = pADO->FieldByName("VMS_FORM_NM")->AsString;
  522. pDcViw->Values[nRowV][ColView03->Index] = pADO->FieldByName("DSPL_HR")->AsString;
  523. pDcViw->Values[nRowV][ColView01->Index] = pADO->FieldByName("VMS_FORM_IMG")->AsVariant;
  524. }
  525. }
  526. catch(EDatabaseError &E) {
  527. DBERRORMSG("TFrmVmsMsgRespMngr::LoadVmsScheduleInfo", String(E.ClassName()), E.Message, sQry);
  528. return false;
  529. }
  530. catch(Exception &e) {
  531. DBERRORMSG("TFrmVmsMsgRespMngr::LoadVmsScheduleInfo", String(e.ClassName()), e.Message, sQry);
  532. return false;
  533. }
  534. }
  535. __finally {
  536. if (pADO) {
  537. pADO->Close();
  538. delete pADO;
  539. }
  540. TvSche->EndUpdate();
  541. TvView->EndUpdate();
  542. }
  543. return true;
  544. }
  545. //---------------------------------------------------------------------------
  546. bool __fastcall TFrmVmsMsgRespMngr::LoadVmsFormList(String AFormSizeCd)
  547. {
  548. ClearSymbloList();
  549. CMM_ClearGridTableView(TvForm);
  550. String sQry;
  551. TADOQuery *pADO = NULL;
  552. // 돌발폼만 조회
  553. sQry = "SELECT A.VMS_FORM_ID, A.VMS_MODL_KIND, A.VMS_FORM_TYPE, A.VMS_FORM_NM, \r\n"
  554. " A.VMS_FORM_IMG, \r\n"
  555. " A.DSPL_EFF, NVL(A.DSPL_HR, 0) AS DSPL_HR, A.BACK_CLR, \r\n"
  556. " NVL(B.FORM_TYPE_NM, A.VMS_FORM_TYPE) AS FORM_TYPE_NM, \r\n"
  557. " NVL(C.FORM_TYPE_NM, A.DSPL_EFF) AS DSPL_EFF_NM, \r\n"
  558. " NVL(D.VMS_MODL_KIND_NM, A.VMS_MODL_KIND) AS VMS_MODL_KIND_NM \r\n"
  559. " FROM TB_VMS_FORM A, \r\n"
  560. " (SELECT CODE_NO, CD_NM AS FORM_TYPE_NM \r\n"
  561. " FROM TB_SYS_CD \r\n"
  562. " WHERE CLSS_CD = 'VMS_FORM_TYPE_CD') B, \r\n"
  563. " (SELECT CODE_NO, CD_NM AS FORM_TYPE_NM \r\n"
  564. " FROM TB_SYS_CD \r\n"
  565. " WHERE CLSS_CD = 'VMS_FORM_DSPL_EFF_CD') C, \r\n"
  566. " TB_VMS_MODL_KIND D \r\n"
  567. " WHERE 1=1 \r\n"
  568. " AND A.VMS_FORM_TYPE IN ('I', 'P', 'E') \r\n"
  569. " AND A.VMS_FORM_TYPE = B.CODE_NO(+) \r\n"
  570. " AND A.DSPL_EFF = C.CODE_NO(+) \r\n"
  571. " AND A.VMS_MODL_KIND = D.VMS_MODL_KIND(+) \r\n"
  572. " AND A.VMS_MODL_KIND = :p01 \r\n"
  573. " ORDER BY A.VMS_MODL_KIND, A.VMS_FORM_ID \r\n";
  574. try {
  575. TvForm->BeginUpdate();
  576. TcxDataController *pGDC = TvForm->DataController;
  577. int nRow;
  578. try {
  579. pADO = new TADOQuery(NULL);
  580. pADO->Close();
  581. pADO->Connection = ITSDb_GetConnection();
  582. ITSDb_SQLText(pADO, sQry);
  583. ITSDb_SQLBind(pADO, "p01", AFormSizeCd);
  584. ITSDb_SQLOpen(pADO);
  585. for( ; !pADO->Eof; pADO->Next()) {
  586. nRow = pGDC->AppendRecord();
  587. String VMS_FORM_ID = pADO->FieldByName("VMS_FORM_ID")->AsString;
  588. pGDC->Values[nRow][ColFrm00->Index] = VMS_FORM_ID;
  589. pGDC->Values[nRow][ColFrm02->Index] = pADO->FieldByName("VMS_FORM_NM")->AsString;
  590. pGDC->Values[nRow][ColFrm03->Index] = pADO->FieldByName("DSPL_HR")->AsString;
  591. pGDC->Values[nRow][ColFrm09->Index] = pADO->FieldByName("FORM_TYPE_NM")->AsString;
  592. pGDC->Values[nRow][ColFrm01->Index] = pADO->FieldByName("VMS_FORM_IMG")->AsVariant;
  593. TFormImage *pImage = new TFormImage();
  594. pImage->formId = VMS_FORM_ID;
  595. pImage->bitmap = new Graphics::TBitmap;
  596. try {
  597. pImage->bitmap->LoadFromStream(pADO->CreateBlobStream(pADO->FieldByName("VMS_FORM_IMG"), bmRead));
  598. }
  599. catch(Exception &e) {
  600. delete pImage->bitmap;
  601. pImage->bitmap = NULL;
  602. }
  603. FFormLists.Push(pImage->formId, pImage);
  604. }
  605. }
  606. catch(EDatabaseError &E)
  607. {
  608. DBERRORMSG("TFrmVmsMsgRespMngr::LoadVmsFormList", String(E.ClassName()), E.Message, sQry);
  609. return false;
  610. }
  611. catch(Exception &e)
  612. {
  613. DBERRORMSG("TFrmVmsMsgRespMngr::LoadVmsFormList", String(e.ClassName()), e.Message, sQry);
  614. return false;
  615. }
  616. }
  617. __finally {
  618. if (pADO) {
  619. pADO->Close();
  620. delete pADO;
  621. }
  622. TvForm->EndUpdate();
  623. }
  624. return true;
  625. }
  626. //---------------------------------------------------------------------------
  627. void __fastcall TFrmVmsMsgRespMngr::cxGridColumn172CustomDrawCell(TcxCustomGridTableView *Sender, TcxCanvas *ACanvas, TcxGridTableDataCellViewInfo *AViewInfo,
  628. bool &ADone)
  629. {
  630. int nRecordIdx = AViewInfo->GridRecord->RecordIndex;
  631. if (nRecordIdx < 0) {
  632. return;
  633. }
  634. try {
  635. int nItemIdx = AViewInfo->Item->Index;
  636. if (VarIsNull(AViewInfo->GridRecord->DisplayTexts[nItemIdx])) return;
  637. String sEndDt = AViewInfo->GridRecord->DisplayTexts[nItemIdx];
  638. if (sEndDt < Now().FormatString(STR_HHNN)) {
  639. ACanvas->Canvas->Brush->Color = clSilver;
  640. }
  641. }
  642. catch(Exception &e) {
  643. }
  644. }
  645. //---------------------------------------------------------------------------
  646. void __fastcall TFrmVmsMsgRespMngr::BtnUpClick(TObject *Sender)
  647. {
  648. try {
  649. TvSche->BeginUpdate();
  650. int nCurIdx = TvSche->DataController->FocusedRowIndex;//FocusedRecordIndex;
  651. if (nCurIdx <= 0) {
  652. return;
  653. }
  654. int nUpIdx = nCurIdx-1;
  655. try {
  656. int nCols = TvSche->ColumnCount;
  657. for (int ii = 0; ii < nCols; ii++) {
  658. Variant va = TvSche->DataController->Values[nCurIdx][ii];
  659. TvSche->DataController->Values[nCurIdx][ii] = TvSche->DataController->Values[nUpIdx][ii];
  660. TvSche->DataController->Values[nUpIdx][ii] = va;
  661. }
  662. TvSche->Controller->ClearSelection();
  663. TvSche->Controller->FocusedRowIndex = nUpIdx;
  664. TvSche->ViewData->Records[nUpIdx]->Focused = true;
  665. TvSche->ViewData->Records[nUpIdx]->Selected = true;
  666. CxSche->SetFocus();
  667. }
  668. catch(...) {
  669. }
  670. }
  671. __finally {
  672. TvSche->EndUpdate();
  673. }
  674. EditPreviewForm();
  675. }
  676. //---------------------------------------------------------------------------
  677. void __fastcall TFrmVmsMsgRespMngr::BtnDownClick(TObject *Sender)
  678. {
  679. try {
  680. TvSche->BeginUpdate();
  681. int nCurIdx = TvSche->DataController->FocusedRowIndex;//FocusedRecordIndex;
  682. if (nCurIdx < 0) {
  683. return;
  684. }
  685. if (nCurIdx == TvSche->DataController->RecordCount-1) {
  686. return;
  687. }
  688. int nDnIdx = nCurIdx+1;
  689. try {
  690. int nCols = TvSche->ColumnCount;
  691. for (int ii = 0; ii < nCols; ii++) {
  692. Variant va = TvSche->DataController->Values[nCurIdx][ii];
  693. TvSche->DataController->Values[nCurIdx][ii] = TvSche->DataController->Values[nDnIdx][ii];
  694. TvSche->DataController->Values[nDnIdx][ii] = va;
  695. }
  696. TvSche->Controller->ClearSelection();
  697. TvSche->Controller->FocusedRowIndex = nDnIdx;
  698. TvSche->ViewData->Records[nDnIdx]->Focused = true;
  699. TvSche->ViewData->Records[nDnIdx]->Selected = true;
  700. CxSche->SetFocus();
  701. }
  702. catch(...) {
  703. }
  704. }
  705. __finally {
  706. TvSche->EndUpdate();
  707. }
  708. EditPreviewForm();
  709. }
  710. //---------------------------------------------------------------------------
  711. void __fastcall TFrmVmsMsgRespMngr::TvScheFocusedRecordChanged(TcxCustomGridTableView *Sender, TcxCustomGridRecord *APrevFocusedRecord,
  712. TcxCustomGridRecord *AFocusedRecord, bool ANewItemRecordFocusingChanged)
  713. {
  714. if (!AFocusedRecord) return;
  715. int nSelIdx = CMM_GetRecordIndex(TvSche);
  716. if (nSelIdx < 0) return;
  717. String sVmsFormId = VarToStr(TvSche->DataController->Values[nSelIdx][Col00->Index]);
  718. LoadPreviewForm(sVmsFormId);
  719. }
  720. //---------------------------------------------------------------------------
  721. void __fastcall TFrmVmsMsgRespMngr::TvFormFocusedRecordChanged(TcxCustomGridTableView *Sender, TcxCustomGridRecord *APrevFocusedRecord,
  722. TcxCustomGridRecord *AFocusedRecord, bool ANewItemRecordFocusingChanged)
  723. {
  724. if (!AFocusedRecord) return;
  725. int nSelIdx = CMM_GetRecordIndex(TvForm);
  726. if (nSelIdx < 0) return;
  727. String sVmsFormId = VarToStr(TvForm->DataController->Values[nSelIdx][ColFrm00->Index]);
  728. LoadPreviewForm(sVmsFormId);
  729. }
  730. //---------------------------------------------------------------------------
  731. void __fastcall TFrmVmsMsgRespMngr::LoadPreviewForm(String AVmsFormId)
  732. {
  733. TFormImage *pImage = FFormLists.Find(AVmsFormId);
  734. LockWindowUpdate(Handle);
  735. if (pImage != NULL && pImage->bitmap != NULL) {
  736. ImgPreview->Picture->Bitmap->Assign(pImage->bitmap);
  737. }
  738. else {
  739. APP_ImageClear(ImgPreview->Canvas, 0, 0, ImgPreview->Width, ImgPreview->Height, clBlack);
  740. }
  741. LockWindowUpdate(0);
  742. }
  743. //---------------------------------------------------------------------------
  744. void __fastcall TFrmVmsMsgRespMngr::EditPreviewForm()
  745. {
  746. CMM_ClearGridTableView(TvView);
  747. TcxDataController *pDcSch = TvSche->DataController;
  748. TcxDataController *pDcViw = TvView->DataController;
  749. try {
  750. TvSche->BeginUpdate();
  751. TvView->BeginUpdate();
  752. int nRowS, nRowV;
  753. try {
  754. for(nRowS = 0; nRowS < pDcSch->RecordCount; nRowS++) {
  755. nRowV = pDcViw->AppendRecord();
  756. pDcViw->Values[nRowV][ColView00->Index] = pDcSch->Values[nRowS][Col00->Index];
  757. pDcViw->Values[nRowV][ColView02->Index] = pDcSch->Values[nRowS][Col02->Index];
  758. pDcViw->Values[nRowV][ColView03->Index] = pDcSch->Values[nRowS][Col03->Index];
  759. pDcViw->Values[nRowV][ColView01->Index] = pDcSch->Values[nRowS][Col01->Index];
  760. }
  761. }
  762. catch(Exception &e) {
  763. }
  764. }
  765. __finally {
  766. TvSche->EndUpdate();
  767. TvView->EndUpdate();
  768. }
  769. }
  770. //---------------------------------------------------------------------------
  771. void __fastcall TFrmVmsMsgRespMngr::ChkAutoWidthPropertiesChange(TObject *Sender)
  772. {
  773. try
  774. {
  775. LockWindowUpdate(Handle);
  776. TvView->BeginUpdate();
  777. if (ChkAutoWidth->Checked) {
  778. //TvView->OptionsView->DataRowHeight = 58;
  779. TvView->OptionsView->CellAutoHeight = false;
  780. }
  781. else {
  782. TvView->OptionsView->DataRowHeight = 0;
  783. TvView->OptionsView->CellAutoHeight = true;
  784. }
  785. TvView->OptionsView->ColumnAutoWidth = ChkAutoWidth->Checked;
  786. }
  787. __finally
  788. {
  789. TvView->EndUpdate();
  790. LockWindowUpdate(0);
  791. //BtnBestFit->Visible = !ChkAutoWidth->Checked;
  792. }
  793. }
  794. //---------------------------------------------------------------------------
  795. void __fastcall TFrmVmsMsgRespMngr::BtnBestFitClick(TObject *Sender)
  796. {
  797. try {
  798. LockWindowUpdate(Handle);
  799. TvView->BeginUpdate();
  800. TvView->ApplyBestFit(NULL, false, false);
  801. TvView->EndUpdate();
  802. }
  803. __finally {
  804. LockWindowUpdate(0);
  805. }
  806. }
  807. //---------------------------------------------------------------------------
  808. bool __fastcall TFrmVmsMsgRespMngr::LoadIncdType()
  809. {
  810. #if 0
  811. TIncdCode *code1 = new TIncdCode(1, "사고");
  812. code1->FLists.Push(0, new TIncdSubCode(0, "사고"));
  813. TIncdCode *code2 = new TIncdCode(2, "공사");
  814. code2->FLists.Push(0, new TIncdSubCode(0, "공사"));
  815. TIncdCode *code3 = new TIncdCode(3, "행사");
  816. code3->FLists.Push(0, new TIncdSubCode(0, "행사"));
  817. TIncdCode *code4 = new TIncdCode(4, "기상");
  818. code4->FLists.Push(0, new TIncdSubCode(0, "기상"));
  819. FIncdLists.Push(code1->INCD_TYPE, code1);
  820. FIncdLists.Push(code2->INCD_TYPE, code2);
  821. FIncdLists.Push(code3->INCD_TYPE, code3);
  822. FIncdLists.Push(code4->INCD_TYPE, code4);
  823. #endif
  824. String sQry;
  825. TADOQuery *pADO = NULL;
  826. #if 0
  827. sQry = "SELECT B.CLSS_CD, B.CODE_NO AS INCD_TYPE, B.CD_NM AS INCD_NAME, \r\n"
  828. " A.CODE_NO AS INCD_DTL_TYPE, A.CD_NM AS INCD_DTL_NAME \r\n"
  829. " FROM TB_SYS_CD A, \r\n"
  830. " (SELECT CLSS_CD, CODE_NO, CD_NM, CD_VAL_1 \r\n"
  831. " FROM TB_SYS_CD \r\n"
  832. " WHERE CLSS_CD = 'INCD_TYPE_CD') B \r\n"
  833. " WHERE A.CLSS_CD = B.CD_VAL_1 \r\n"
  834. " ORDER BY B.CODE_NO, TO_NUMBER(A.CODE_NO) \r\n";
  835. #endif
  836. sQry = "SELECT A.CODE_NO AS INCD_TYPE, A.CD_NM AS INCD_NAME \r\n"
  837. " FROM TB_SYS_CD A \r\n"
  838. " WHERE A.CLSS_CD = 'INCD_TYPE_CD' \r\n"
  839. " ORDER BY TO_NUMBER(A.CODE_NO) \r\n";
  840. try {
  841. try {
  842. pADO = new TADOQuery(NULL);
  843. pADO->Close();
  844. pADO->Connection = ITSDb_GetConnection();
  845. ITSDb_SQLText(pADO, sQry);
  846. ITSDb_SQLOpen(pADO);
  847. for( ; !pADO->Eof; pADO->Next()) {
  848. int INCD_TYPE = pADO->FieldByName("INCD_TYPE")->AsInteger;
  849. String INCD_NAME = pADO->FieldByName("INCD_NAME")->AsString;
  850. #if 0
  851. int INCD_DTL_TYPE = pADO->FieldByName("INCD_DTL_TYPE")->AsInteger;
  852. String INCD_DTL_NAME = pADO->FieldByName("INCD_DTL_NAME")->AsString;
  853. TIncdCode *pCode = FIncdLists.Find(INCD_TYPE);
  854. if (pCode == NULL) {
  855. pCode = new TIncdCode(INCD_TYPE, INCD_NAME);
  856. FIncdLists.Push(pCode->INCD_TYPE, pCode);
  857. }
  858. pCode->FLists.Push(INCD_DTL_TYPE, new TIncdSubCode(INCD_DTL_TYPE, INCD_DTL_NAME));
  859. #endif
  860. TIncdCode *pCode = new TIncdCode(INCD_TYPE, INCD_NAME);
  861. FIncdLists.Push(pCode->INCD_TYPE, pCode);
  862. }
  863. }
  864. catch(EDatabaseError &E)
  865. {
  866. DBERRORMSG("TFrmVmsMsgRespMngr::LoadIncdType", String(E.ClassName()), E.Message, sQry);
  867. return false;
  868. }
  869. catch(Exception &e)
  870. {
  871. DBERRORMSG("TFrmVmsMsgRespMngr::LoadIncdType", String(e.ClassName()), e.Message, sQry);
  872. return false;
  873. }
  874. }
  875. __finally {
  876. if (pADO) {
  877. pADO->Close();
  878. delete pADO;
  879. }
  880. }
  881. return true;
  882. }
  883. //---------------------------------------------------------------------------
  884. void __fastcall TFrmVmsMsgRespMngr::FillIncdTypeList()
  885. {
  886. CMM_ClearGridTableView(TvList);
  887. int nRow = 0;
  888. TcxDataController *pGDC = TvList->DataController;
  889. TvList->BeginUpdate();
  890. try {
  891. FOR_STL(TIncdCode*, pCode, FIncdLists) {
  892. //FOR_STL(TIncdSubCode*, pSubCode, pCode->FLists) {
  893. nRow = pGDC->AppendRecord();
  894. pGDC->Values[nRow][ColIncd->Index] = String(pCode->INCD_TYPE);
  895. pGDC->Values[nRow][ColIncdNm->Index] = pCode->INCD_NAME;
  896. pGDC->Values[nRow][ColIncdType->Index] = pCode->INCD_TYPE;
  897. //pGDC->Values[nRow][ColIncdDtlType->Index] = pCode->INCD_TYPE;
  898. pGDC->Values[nRow][Column99->Index] = (int)pCode;
  899. //}
  900. }
  901. }
  902. __finally {
  903. TvList->EndUpdate();
  904. //TvList->DataController->GotoFirst();
  905. //TvList->DataController->FocusedRecordIndex = 0;
  906. CMM_ExpandCollapseChk(TvList, true);
  907. }
  908. }
  909. //---------------------------------------------------------------------------
  910. void __fastcall TFrmVmsMsgRespMngr::ChkExpandClick(TObject *Sender)
  911. {
  912. CMM_ExpandCollapseChk(TvList, ChkExpand->Checked);
  913. }
  914. //---------------------------------------------------------------------------
  915. void __fastcall TFrmVmsMsgRespMngr::TvListFocusedRecordChanged(TcxCustomGridTableView *Sender, TcxCustomGridRecord *APrevFocusedRecord,
  916. TcxCustomGridRecord *AFocusedRecord, bool ANewItemRecordFocusingChanged)
  917. {
  918. if (!AFocusedRecord) return;
  919. DisplayRespMessage();
  920. }
  921. //---------------------------------------------------------------------------
  922. void __fastcall TFrmVmsMsgRespMngr::TvModuleFocusedRecordChanged(TcxCustomGridTableView *Sender, TcxCustomGridRecord *APrevFocusedRecord,
  923. TcxCustomGridRecord *AFocusedRecord, bool ANewItemRecordFocusingChanged)
  924. {
  925. if (!AFocusedRecord) return;
  926. DisplayRespMessage();
  927. }
  928. //---------------------------------------------------------------------------
  929. void __fastcall TFrmVmsMsgRespMngr::DisplayRespMessage()
  930. {
  931. FormClear();
  932. EdIncdType->Text = "";
  933. EdIncdDtlType->Text = "";
  934. EdModlKind->Text = "";
  935. FSelIdx = CMM_GetRecordIndex(TvList);
  936. if (FSelIdx < 0) return;
  937. TcxDataController *pGDC = TvList->DataController;
  938. String sIncd = VarToStr(pGDC->Values[FSelIdx][ColIncd->Index]);
  939. String sIncdDtl = VarToStr(pGDC->Values[FSelIdx][ColIncdDtl->Index]);
  940. FINCD_TYPE = VarToStr(pGDC->Values[FSelIdx][ColIncdType->Index]);
  941. String sIncdNm = VarToStr(pGDC->Values[FSelIdx][ColIncdNm->Index]);
  942. FINCD_DTL_TYPE = VarToStr(pGDC->Values[FSelIdx][ColIncdDtlType->Index]);
  943. EdIncdType->Text = FINCD_TYPE;
  944. EdIncdDtlType->Text = FINCD_DTL_TYPE;
  945. EdModlKind->Text = "";
  946. GrpSchedule->Caption = lblTitle->Caption + " (" + sIncd + ": " + sIncdNm + ")";
  947. FSelIdx = CMM_GetRecordIndex(TvModule);
  948. if (FSelIdx < 0) return;
  949. pGDC = TvModule->DataController;
  950. FVMS_MODL_KIND = VarToStr(pGDC->Values[FSelIdx][Column02->Index]);
  951. TVmsType *pVmsSizeType = (TVmsType*)(int)pGDC->Values[FSelIdx][Col99->Index];
  952. if (pVmsSizeType == NULL) {
  953. return;
  954. }
  955. GrpMsgList->Caption = lblGrpMsgList->Caption + " (" + FVMS_MODL_KIND + ") ";
  956. FVmsTypeCd = pVmsSizeType->VMS_MODL_KIND;
  957. FVmsWidth = pVmsSizeType->VMS_WDTH;
  958. FVmsHeight = pVmsSizeType->VMS_HGHT;
  959. TvView->OptionsView->DataRowHeight = FVmsHeight;
  960. if (TvView->OptionsView->DataRowHeight < 48) {
  961. TvView->OptionsView->DataRowHeight = 48;
  962. }
  963. if (TvView->OptionsView->DataRowHeight > 144) {
  964. TvView->OptionsView->DataRowHeight = 144;
  965. }
  966. EdModlKind->Text = FVMS_MODL_KIND;
  967. GrpSchedule->Caption = lblTitle->Caption + " (" + sIncd + ": " + sIncdNm + ") - " + FVMS_MODL_KIND;
  968. // 미리보기 화면을 초기화 한다.
  969. LockWindowUpdate(Handle);
  970. PnlPreview->Width = FVmsWidth;
  971. PnlPreview->Height= FVmsHeight;
  972. ImgPreview->Align = alNone;
  973. ImgPreview->Picture->Bitmap->Width = FVmsWidth;
  974. ImgPreview->Picture->Bitmap->Height= FVmsHeight;
  975. APP_ImageClear(ImgPreview->Canvas, 0, 0, ImgPreview->Width, ImgPreview->Height, clBlack);
  976. ImgPreview->Align = alClient;
  977. LockWindowUpdate(0);
  978. // 모듈유형에 맞는 폼 정보를 로딩한다.
  979. LoadVmsFormList(FVMS_MODL_KIND);
  980. // 선택한 대응 메시지 시나리오 로딩한다.
  981. LoadVmsScheduleInfo(FVMS_MODL_KIND, FINCD_TYPE, FINCD_DTL_TYPE);
  982. }
  983. //---------------------------------------------------------------------------