FrmVmsMsgRespMngrF.cpp 33 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977
  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. APP_DelVmsSizeCombo(CbSizeType);
  126. ClearSymbloList();
  127. SAFE_DELETE(FListSymb);
  128. ITSSkin_Term();
  129. //CMM_SaveForm(g_sFormsDir, this);
  130. }
  131. catch(...) {
  132. }
  133. }
  134. //---------------------------------------------------------------------------
  135. void __fastcall TFrmVmsMsgRespMngr::FormCreate(TObject *Sender)
  136. {
  137. InitDbLoading();
  138. //m_pEdtDesigner = new TVmsFormDesigner(PnlEditForm);
  139. //FOR_STL(TCDSFontColor*, pObj, CDSFontManager->FFontColors) {
  140. // m_pEdtDesigner->InitFontColor(pObj->VMS_FONT_COLR_CD, (TColor)pObj->VMS_FONT_COLR_VAL);
  141. //}
  142. }
  143. //---------------------------------------------------------------------------
  144. void __fastcall TFrmVmsMsgRespMngr::InitDbLoading()
  145. {
  146. Application->ProcessMessages();
  147. if (!VmsCtlrManager) {
  148. VmsCtlrManager = new TVmsCtlrManager();
  149. }
  150. VmsCtlrManager->LoadVmsModlSize();
  151. VmsCtlrManager->LoadFromDb();
  152. #if 0
  153. if (SysCodeManager == NULL) {
  154. SysCodeManager = new TSysCodeManager();
  155. }
  156. SysCodeManager->LoadFromDb();
  157. if (!VmsTextItemManager) {
  158. VmsTextItemManager = new TVmsTextItemManager();
  159. }
  160. VmsTextItemManager->LoadFromDb();
  161. #endif
  162. if(!CDSFontManager) {
  163. CDSFontManager = new TCDSFontManager();
  164. }
  165. CDSFontManager->LoadFontInfo();
  166. LoadIncdType();
  167. }
  168. //---------------------------------------------------------------------------
  169. void __fastcall TFrmVmsMsgRespMngr::FormShow(TObject *Sender)
  170. {
  171. Refresh();
  172. FormInit();
  173. TmrShow->Enabled = true;
  174. }
  175. //---------------------------------------------------------------------------
  176. void __fastcall TFrmVmsMsgRespMngr::FormInit()
  177. {
  178. TNotifyEvent evt = CbSizeType->Properties->OnChange;
  179. CbSizeType->Properties->OnChange = NULL;
  180. APP_FillVmsSizeType(CbSizeType, false);
  181. CbSizeType->Properties->OnChange = evt;
  182. FNewDb = false;
  183. }
  184. //---------------------------------------------------------------------------
  185. void __fastcall TFrmVmsMsgRespMngr::TmrShowTimer(TObject *Sender)
  186. {
  187. TmrShow->Enabled = false;
  188. CbSizeType->ItemIndex = -1;
  189. CbSizeType->ItemIndex = 0;
  190. }
  191. //---------------------------------------------------------------------------
  192. void __fastcall TFrmVmsMsgRespMngr::BtnCloseClick(TObject *Sender)
  193. {
  194. Close();
  195. }
  196. //---------------------------------------------------------------------------
  197. void __fastcall TFrmVmsMsgRespMngr::FormClose(TObject *Sender, TCloseAction &Action)
  198. {
  199. CommClose();
  200. FrmVmsMsgRespMngr = NULL;
  201. Action = caFree;
  202. }
  203. //---------------------------------------------------------------------------
  204. void __fastcall TFrmVmsMsgRespMngr::FormCloseQuery(TObject *Sender, bool &CanClose)
  205. {
  206. if (FUpdate)
  207. {
  208. POST_MSG(Application->MainForm->Handle, WM_DATABASE_REFRESH, WP_MSG_14, 0);
  209. }
  210. }
  211. //---------------------------------------------------------------------------
  212. void __fastcall TFrmVmsMsgRespMngr::ClearSymbloList()
  213. {
  214. FFormLists.RemoveAll();
  215. for(int ii = 0; ii < FListSymb->Count; ii++)
  216. {
  217. Graphics::TBitmap *bitmap = (Graphics::TBitmap *)FListSymb->Items[ii];
  218. delete bitmap;
  219. }
  220. FListSymb->Clear();
  221. }
  222. //---------------------------------------------------------------------------
  223. void __fastcall TFrmVmsMsgRespMngr::CbSizeTypePropertiesChange(TObject *Sender)
  224. {
  225. if (CbSizeType->ItemIndex < 0) return;
  226. EdFocus->SetFocus();
  227. BtnSearchClick(NULL);
  228. CxList->SetFocus();
  229. LockWindowUpdate(GrpPreview->Handle);
  230. PnlPreview->Width = FVmsWidth;
  231. PnlPreview->Height= FVmsHeight;
  232. ImgPreview->Align = alNone;
  233. ImgPreview->Picture->Bitmap->Width = FVmsWidth;
  234. ImgPreview->Picture->Bitmap->Height= FVmsHeight;
  235. APP_ImageClear(ImgPreview->Canvas, 0, 0, ImgPreview->Width, ImgPreview->Height, clBlack);
  236. ImgPreview->Align = alClient;
  237. LockWindowUpdate(0);
  238. }
  239. //---------------------------------------------------------------------------
  240. void __fastcall TFrmVmsMsgRespMngr::BtnSearchClick(TObject *Sender)
  241. {
  242. RefreshData();
  243. EdFocus->SetFocus();
  244. }
  245. //---------------------------------------------------------------------------
  246. void __fastcall TFrmVmsMsgRespMngr::RefreshData()
  247. {
  248. FormClear();
  249. TVmsSizeType *pVmsSizeType = APP_GetVmsSizeTypeObject(CbSizeType);
  250. if (pVmsSizeType == NULL) return;
  251. FVmsTypeCd = pVmsSizeType->TypeCd;
  252. FVmsWidth = pVmsSizeType->Width;
  253. FVmsHeight = pVmsSizeType->Height;
  254. FillIncdTypeList();
  255. LoadVmsFormList(FVmsTypeCd);
  256. }
  257. //---------------------------------------------------------------------------
  258. void __fastcall TFrmVmsMsgRespMngr::FormClear()
  259. {
  260. FSelIdx = -1;
  261. EdIncdType->Clear();
  262. EdIncdDtlType->Clear();
  263. GrpSchedule->Caption = lblTitle->Caption;//"▶ 자동 스케줄 설정";
  264. CMM_ClearGridTableView(TvSche);
  265. //LockWindowUpdate(GrpPreview->Handle);
  266. APP_ImageClear(ImgPreview->Canvas, 0, 0, ImgPreview->Width, ImgPreview->Height, clBlack);
  267. //LockWindowUpdate(0);
  268. FNewDb = false;
  269. }
  270. //---------------------------------------------------------------------------
  271. void __fastcall TFrmVmsMsgRespMngr::DisplayInfo()
  272. {
  273. FormClear();
  274. FSelIdx = CMM_GetRecordIndex(TvList);
  275. if (FSelIdx < 0) return;
  276. TcxDataController *pGDC = TvList->DataController;
  277. //FVmsTypeCd
  278. String sIncd = VarToStr(pGDC->Values[FSelIdx][ColIncd->Index]);
  279. String sIncdDtl = VarToStr(pGDC->Values[FSelIdx][ColIncdDtl->Index]);
  280. String sIncdType = VarToStr(pGDC->Values[FSelIdx][ColIncdType->Index]);
  281. String sIncdDtlType = VarToStr(pGDC->Values[FSelIdx][ColIncdDtlType->Index]);
  282. EdIncdType->Text = sIncdType;
  283. EdIncdDtlType->Text = sIncdDtlType;
  284. GrpSchedule->Caption = lblTitle->Caption + " (" + sIncd + " ==> " + sIncdDtl + ")";
  285. LoadVmsScheduleInfo(FVmsTypeCd, sIncdType, sIncdDtlType);
  286. }
  287. //---------------------------------------------------------------------------
  288. void __fastcall TFrmVmsMsgRespMngr::BtnListAddClick(TObject *Sender)
  289. {
  290. String sUse = "N";
  291. String sTime= "4";
  292. int nSelIdx = CMM_GetRecordIndex(TvList);
  293. if (nSelIdx < 0) return;
  294. TcxGridDataController *pDcFrm = TvForm->DataController;
  295. TcxGridDataController *pDcSch = TvSche->DataController;
  296. int nFormIdx = CMM_GetRecordIndex(TvForm);
  297. if (nFormIdx < 0) return;
  298. int nRow = pDcSch->AppendRecord();
  299. pDcSch->Values[nRow][Col00->Index] = VarToStr(pDcFrm->Values[nFormIdx][ColFrm00->Index]); //ID
  300. pDcSch->Values[nRow][Col02->Index] = VarToStr(pDcFrm->Values[nFormIdx][ColFrm02->Index]); //명칭
  301. pDcSch->Values[nRow][Col03->Index] = VarToStr(pDcFrm->Values[nFormIdx][ColFrm03->Index]); //표출(초)
  302. //pDcSch->Values[nRow][Col01->Index] = pDcFrm->Values[nFormIdx][ColFrm01->Index]; //이미지데이터임
  303. }
  304. //---------------------------------------------------------------------------
  305. void __fastcall TFrmVmsMsgRespMngr::BtnListDeleteClick(TObject *Sender)
  306. {
  307. int nSelIdx = CMM_GetRecordIndex(TvList);
  308. if (nSelIdx < 0) return;
  309. TcxGridDataController *pDcSch = TvSche->DataController;
  310. nSelIdx = CMM_GetRecordIndex(TvSche);
  311. if (nSelIdx < 0) return;
  312. TvSche->DataController->DeleteRecord(nSelIdx);
  313. }
  314. //---------------------------------------------------------------------------
  315. void __fastcall TFrmVmsMsgRespMngr::BtnSaveClick(TObject *Sender)
  316. {
  317. String sVmsModlKind = FVmsTypeCd;
  318. String sIncdType = EdIncdType->Text.Trim();
  319. String sIncdDtlType = EdIncdDtlType->Text.Trim();
  320. if (sIncdType.IsEmpty() || sIncdDtlType.IsEmpty()) {
  321. Application->MessageBox(L"VMS 대응 메시지 관리\r\nVMS 대응 이벤트 목록에서 VMS 이벤트를 먼저 선택한 후 작업을 진행하세요.",
  322. FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  323. return;
  324. }
  325. if (Application->MessageBox(L"VMS 대응 메시지 관리\r\nVMS 대응 원클릭 메시지를 저장하시겠습니까?",
  326. FTitle.c_str(), MB_YESNO|MB_ICONQUESTION|MB_APPLMODAL) != IDYES) return;
  327. ITSDb_GetConnection()->BeginTrans();
  328. if (!DeleteVmsScenario(sVmsModlKind, sIncdType, sIncdDtlType)) {
  329. ITSDb_GetConnection()->RollbackTrans();
  330. return;
  331. }
  332. if (!SaveVmsScenario(sVmsModlKind, sIncdType, sIncdDtlType)) {
  333. ITSDb_GetConnection()->RollbackTrans();
  334. return;
  335. }
  336. ITSDb_GetConnection()->CommitTrans();
  337. Application->MessageBox(L"VMS 대응 메시지 관리\r\nVMS 대응 원클릭 메시지를 저장하였습니다.",
  338. FTitle.c_str(), MB_OK|MB_ICONINFORMATION|MB_APPLMODAL);
  339. //CMM_SetGridRow(CxList, FRAMEVmsSchList1->TvList, sVmsCtlrId, FRAMEVmsSchList1->Column01->Index);
  340. DisplayInfo();
  341. }
  342. //---------------------------------------------------------------------------
  343. bool __fastcall TFrmVmsMsgRespMngr::SaveVmsScenario(String AVmsModlKind, String AIncdType, String AIncdDtlType)
  344. {
  345. String sQry;
  346. TADOQuery *pADO = NULL;
  347. TcxDataController *pGDC = TvSche->DataController;
  348. sQry = "INSERT INTO TB_VMS_INCD_RES_FORM ( \r\n"
  349. " INCD_TYPE, \r\n"
  350. " INCD_DTL_TYPE, \r\n"
  351. " VMS_MODL_KIND, \r\n"
  352. " SN, \r\n"
  353. " VMS_FORM_ID, \r\n"
  354. " RGSTR_ID, \r\n"
  355. " REG_DT ) \r\n"
  356. " VALUES ( \r\n"
  357. " :p01, \r\n"
  358. " :p02, \r\n"
  359. " :p03, \r\n"
  360. " :p04, \r\n"
  361. " :p05, \r\n"
  362. " :p06, \r\n"
  363. " SYSDATE ) \r\n";
  364. try {
  365. TvSche->BeginUpdate();
  366. int nRows = pGDC->RecordCount;
  367. try {
  368. pADO = new TADOQuery(NULL);
  369. pADO->Close();
  370. pADO->Connection = ITSDb_GetConnection();
  371. ITSDb_SQLText(pADO, sQry);
  372. for (int ii = 0; ii < nRows; ii++) {
  373. int SN = ii+1;
  374. String VMS_FORM_ID = VarToStr(pGDC->Values[ii][Col00->Index]);
  375. String RGSTR_ID = g_AppCfg.OPER_ID;
  376. pADO->Parameters->ParamByName("p01")->Value = AIncdType;
  377. pADO->Parameters->ParamByName("p02")->Value = AIncdDtlType;
  378. pADO->Parameters->ParamByName("p03")->Value = AVmsModlKind;
  379. pADO->Parameters->ParamByName("p04")->Value = SN;
  380. pADO->Parameters->ParamByName("p05")->Value = VMS_FORM_ID;
  381. pADO->Parameters->ParamByName("p06")->Value = RGSTR_ID;
  382. pADO->ExecSQL();
  383. }
  384. }
  385. catch(EDatabaseError &E) {
  386. DBERRORMSG("TFrmVmsMsgRespMngr::SaveVmsScenario", String(E.ClassName()), E.Message, sQry);
  387. return false;
  388. }
  389. catch(Exception &e) {
  390. DBERRORMSG("TFrmVmsMsgRespMngr::SaveVmsScenario", String(e.ClassName()), e.Message, sQry);
  391. return false;
  392. }
  393. }
  394. __finally {
  395. if (pADO) {
  396. pADO->Close();
  397. delete pADO;
  398. }
  399. TvSche->EndUpdate();
  400. }
  401. return true;
  402. }
  403. //---------------------------------------------------------------------------
  404. bool __fastcall TFrmVmsMsgRespMngr::DeleteVmsScenario(String AVmsModlKind, String AIncdType, String AIncdDtlType)
  405. {
  406. String sQry;
  407. TADOQuery *pADO = NULL;
  408. sQry = "DELETE TB_VMS_INCD_RES_FORM \r\n"
  409. " WHERE 1=1 \r\n"
  410. " AND INCD_TYPE = :p01 \r\n"
  411. " AND INCD_DTL_TYPE = :p02 \r\n"
  412. " AND VMS_MODL_KIND = :p03 \r\n";
  413. try {
  414. try {
  415. pADO = new TADOQuery(NULL);
  416. pADO->Close();
  417. pADO->Connection = ITSDb_GetConnection();
  418. ITSDb_SQLText(pADO, sQry);
  419. pADO->Parameters->ParamByName("p01")->Value = AIncdType;
  420. pADO->Parameters->ParamByName("p02")->Value = AIncdDtlType;
  421. pADO->Parameters->ParamByName("p03")->Value = AVmsModlKind;
  422. pADO->ExecSQL();
  423. }
  424. catch(EDatabaseError &E) {
  425. DBERRORMSG("TFrmVmsMsgRespMngr::DeleteVmsScenario", String(E.ClassName()), E.Message, sQry);
  426. return false;
  427. }
  428. catch(Exception &e) {
  429. DBERRORMSG("TFrmVmsMsgRespMngr::DeleteVmsScenario", String(e.ClassName()), e.Message, sQry);
  430. return false;
  431. }
  432. }
  433. __finally {
  434. if (pADO) {
  435. pADO->Close();
  436. delete pADO;
  437. }
  438. }
  439. return true;
  440. }
  441. //---------------------------------------------------------------------------
  442. bool __fastcall TFrmVmsMsgRespMngr::LoadVmsScheduleInfo(String AVmsModlKind, String AIncdType, String AIncdDtlType)
  443. {
  444. int ii;
  445. String sQry;
  446. TADOQuery *pADO = NULL;
  447. CMM_ClearGridTableView(TvSche);
  448. CMM_ClearGridTableView(TvView);
  449. TcxDataController *pDcSch = TvSche->DataController;
  450. TcxDataController *pDcViw = TvView->DataController;
  451. sQry = "SELECT A.INCD_TYPE, A.INCD_DTL_TYPE, \r\n"
  452. " A.VMS_MODL_KIND, A.SN, \r\n"
  453. " A.VMS_FORM_ID, B.VMS_FORM_NM, \r\n"
  454. " B.VMS_FORM_TYPE, B.DSPL_HR, \r\n"
  455. " B.VMS_FORM_IMG \r\n"
  456. " FROM TB_VMS_INCD_RES_FORM A, \r\n"
  457. " TB_VMS_FORM B \r\n"
  458. " WHERE 1=1 \r\n"
  459. " AND A.INCD_TYPE = :p01 \r\n"
  460. " AND A.INCD_DTL_TYPE = :p02 \r\n"
  461. " AND A.VMS_MODL_KIND = :p03 \r\n"
  462. " AND A.VMS_FORM_ID = B.VMS_FORM_ID \r\n"
  463. " ORDER BY A.SN \r\n";
  464. try {
  465. TvSche->BeginUpdate();
  466. TvView->BeginUpdate();
  467. int nRowS, nRowV;
  468. try {
  469. pADO = new TADOQuery(NULL);
  470. pADO->Close();
  471. pADO->Connection = ITSDb_GetConnection();
  472. ITSDb_SQLText(pADO, sQry);
  473. ITSDb_SQLBind(pADO, "p01", AIncdType);
  474. ITSDb_SQLBind(pADO, "p02", AIncdDtlType);
  475. ITSDb_SQLBind(pADO, "p03", AVmsModlKind);
  476. ITSDb_SQLOpen(pADO);
  477. int nFormType;
  478. for( ; !pADO->Eof; pADO->Next()) {
  479. nRowS = pDcSch->AppendRecord();
  480. nRowV = pDcViw->AppendRecord();
  481. pDcSch->Values[nRowS][Col00->Index] = pADO->FieldByName("VMS_FORM_ID")->AsString;
  482. pDcSch->Values[nRowS][Col02->Index] = pADO->FieldByName("VMS_FORM_NM")->AsString;
  483. pDcSch->Values[nRowS][Col03->Index] = pADO->FieldByName("DSPL_HR")->AsString;
  484. //pDcSch->Values[nRowS][Col01->Index] = pADO->FieldByName("VMS_FORM_IMG")->AsVariant;
  485. pDcViw->Values[nRowV][ColView00->Index] = pADO->FieldByName("VMS_FORM_ID")->AsString;
  486. pDcViw->Values[nRowV][ColView02->Index] = pADO->FieldByName("VMS_FORM_NM")->AsString;
  487. pDcViw->Values[nRowV][ColView03->Index] = pADO->FieldByName("DSPL_HR")->AsString;
  488. pDcViw->Values[nRowV][ColView01->Index] = pADO->FieldByName("VMS_FORM_IMG")->AsVariant;
  489. }
  490. }
  491. catch(EDatabaseError &E) {
  492. DBERRORMSG("TFrmVmsMsgRespMngr::LoadVmsScheduleInfo", String(E.ClassName()), E.Message, sQry);
  493. return false;
  494. }
  495. catch(Exception &e) {
  496. DBERRORMSG("TFrmVmsMsgRespMngr::LoadVmsScheduleInfo", String(e.ClassName()), e.Message, sQry);
  497. return false;
  498. }
  499. }
  500. __finally {
  501. if (pADO) {
  502. pADO->Close();
  503. delete pADO;
  504. }
  505. TvSche->EndUpdate();
  506. TvView->EndUpdate();
  507. }
  508. return true;
  509. }
  510. //---------------------------------------------------------------------------
  511. bool __fastcall TFrmVmsMsgRespMngr::LoadVmsFormList(String AFormSizeCd)
  512. {
  513. ClearSymbloList();
  514. CMM_ClearGridTableView(TvForm);
  515. String sQry;
  516. TADOQuery *pADO = NULL;
  517. // 돌발폼만 조회
  518. sQry = "SELECT A.VMS_FORM_ID, A.VMS_MODL_KIND, A.VMS_FORM_TYPE, A.VMS_FORM_NM, \r\n"
  519. " A.VMS_FORM_IMG, \r\n"
  520. " A.DSPL_EFF, NVL(A.DSPL_HR, 0) AS DSPL_HR, A.BACK_CLR, \r\n"
  521. " NVL(B.FORM_TYPE_NM, A.VMS_FORM_TYPE) AS FORM_TYPE_NM, \r\n"
  522. " NVL(C.FORM_TYPE_NM, A.DSPL_EFF) AS DSPL_EFF_NM, \r\n"
  523. " NVL(D.VMS_MODL_KIND_NM, A.VMS_MODL_KIND) AS VMS_MODL_KIND_NM \r\n"
  524. " FROM TB_VMS_FORM A, \r\n"
  525. " (SELECT CODE_NO, CD_NM AS FORM_TYPE_NM \r\n"
  526. " FROM TB_SYS_CD \r\n"
  527. " WHERE CLSS_CD = 'VMS_FORM_TYPE_CD') B, \r\n"
  528. " (SELECT CODE_NO, CD_NM AS FORM_TYPE_NM \r\n"
  529. " FROM TB_SYS_CD \r\n"
  530. " WHERE CLSS_CD = 'VMS_FORM_DSPL_EFF_CD') C, \r\n"
  531. " TB_VMS_MODL_KIND D \r\n"
  532. " WHERE 1=1 \r\n"
  533. " AND A.VMS_FORM_TYPE = 'I' \r\n"
  534. " AND A.VMS_FORM_TYPE = B.CODE_NO(+) \r\n"
  535. " AND A.DSPL_EFF = C.CODE_NO(+) \r\n"
  536. " AND A.VMS_MODL_KIND = D.VMS_MODL_KIND(+) \r\n"
  537. " AND A.VMS_MODL_KIND = :p01 \r\n"
  538. " ORDER BY A.VMS_MODL_KIND, A.VMS_FORM_ID \r\n";
  539. try {
  540. TvForm->BeginUpdate();
  541. TcxDataController *pGDC = TvForm->DataController;;
  542. int nRow;
  543. try {
  544. pADO = new TADOQuery(NULL);
  545. pADO->Close();
  546. pADO->Connection = ITSDb_GetConnection();
  547. ITSDb_SQLText(pADO, sQry);
  548. ITSDb_SQLBind(pADO, "p01", AFormSizeCd);
  549. ITSDb_SQLOpen(pADO);
  550. int nFormTypeCd, nFormIdx;
  551. for( ; !pADO->Eof; pADO->Next()) {
  552. nRow = pGDC->AppendRecord();
  553. String VMS_FORM_ID = pADO->FieldByName("VMS_FORM_ID")->AsString;
  554. pGDC->Values[nRow][ColFrm00->Index] = VMS_FORM_ID;
  555. pGDC->Values[nRow][ColFrm02->Index] = pADO->FieldByName("VMS_FORM_NM")->AsString;
  556. pGDC->Values[nRow][ColFrm03->Index] = pADO->FieldByName("DSPL_HR")->AsString;
  557. pGDC->Values[nRow][ColFrm09->Index] = pADO->FieldByName("FORM_TYPE_NM")->AsString;
  558. //pGDC->Values[nRow][ColFrm01->Index] = pADO->FieldByName("VMS_FORM_IMG")->AsVariant;
  559. TFormImage *pImage = new TFormImage();
  560. pImage->formId = VMS_FORM_ID;
  561. pImage->bitmap = new Graphics::TBitmap;
  562. try {
  563. pImage->bitmap->LoadFromStream(pADO->CreateBlobStream(pADO->FieldByName("VMS_FORM_IMG"), bmRead));
  564. }
  565. catch(Exception &e) {
  566. delete pImage->bitmap;
  567. pImage->bitmap = NULL;
  568. }
  569. FFormLists.Push(pImage->formId, pImage);
  570. }
  571. }
  572. catch(EDatabaseError &E)
  573. {
  574. DBERRORMSG("TFrmVmsMsgRespMngr::LoadVmsFormList", String(E.ClassName()), E.Message, sQry);
  575. return false;
  576. }
  577. catch(Exception &e)
  578. {
  579. DBERRORMSG("TFrmVmsMsgRespMngr::LoadVmsFormList", String(e.ClassName()), e.Message, sQry);
  580. return false;
  581. }
  582. }
  583. __finally {
  584. if (pADO) {
  585. pADO->Close();
  586. delete pADO;
  587. }
  588. TvForm->EndUpdate();
  589. }
  590. return true;
  591. }
  592. //---------------------------------------------------------------------------
  593. void __fastcall TFrmVmsMsgRespMngr::cxGridColumn172CustomDrawCell(TcxCustomGridTableView *Sender, TcxCanvas *ACanvas, TcxGridTableDataCellViewInfo *AViewInfo,
  594. bool &ADone)
  595. {
  596. int nRecordIdx = AViewInfo->GridRecord->RecordIndex;
  597. if (nRecordIdx < 0) {
  598. return;
  599. }
  600. try {
  601. int nItemIdx = AViewInfo->Item->Index;
  602. if (VarIsNull(AViewInfo->GridRecord->DisplayTexts[nItemIdx])) return;
  603. String sEndDt = AViewInfo->GridRecord->DisplayTexts[nItemIdx];
  604. if (sEndDt < Now().FormatString(STR_HHNN)) {
  605. ACanvas->Canvas->Brush->Color = clSilver;
  606. }
  607. }
  608. catch(Exception &e) {
  609. }
  610. }
  611. //---------------------------------------------------------------------------
  612. void __fastcall TFrmVmsMsgRespMngr::BtnUpClick(TObject *Sender)
  613. {
  614. try {
  615. TvSche->BeginUpdate();
  616. int nCurIdx = TvSche->DataController->FocusedRowIndex;//FocusedRecordIndex;
  617. if (nCurIdx <= 0) {
  618. return;
  619. }
  620. int nUpIdx = nCurIdx-1;
  621. try {
  622. int nCols = TvSche->ColumnCount;
  623. for (int ii = 0; ii < nCols; ii++) {
  624. Variant va = TvSche->DataController->Values[nCurIdx][ii];
  625. TvSche->DataController->Values[nCurIdx][ii] = TvSche->DataController->Values[nUpIdx][ii];
  626. TvSche->DataController->Values[nUpIdx][ii] = va;
  627. }
  628. TvSche->Controller->ClearSelection();
  629. TvSche->Controller->FocusedRowIndex = nUpIdx;
  630. TvSche->ViewData->Records[nUpIdx]->Focused = true;
  631. TvSche->ViewData->Records[nUpIdx]->Selected = true;
  632. CxSche->SetFocus();
  633. }
  634. catch(...) {
  635. }
  636. }
  637. __finally {
  638. TvSche->EndUpdate();
  639. }
  640. }
  641. //---------------------------------------------------------------------------
  642. void __fastcall TFrmVmsMsgRespMngr::BtnDownClick(TObject *Sender)
  643. {
  644. try {
  645. TvSche->BeginUpdate();
  646. int nCurIdx = TvSche->DataController->FocusedRowIndex;//FocusedRecordIndex;
  647. if (nCurIdx < 0) {
  648. return;
  649. }
  650. if (nCurIdx == TvSche->DataController->RecordCount-1) {
  651. return;
  652. }
  653. int nDnIdx = nCurIdx+1;
  654. try {
  655. int nCols = TvSche->ColumnCount;
  656. for (int ii = 0; ii < nCols; ii++) {
  657. Variant va = TvSche->DataController->Values[nCurIdx][ii];
  658. TvSche->DataController->Values[nCurIdx][ii] = TvSche->DataController->Values[nDnIdx][ii];
  659. TvSche->DataController->Values[nDnIdx][ii] = va;
  660. }
  661. TvSche->Controller->ClearSelection();
  662. TvSche->Controller->FocusedRowIndex = nDnIdx;
  663. TvSche->ViewData->Records[nDnIdx]->Focused = true;
  664. TvSche->ViewData->Records[nDnIdx]->Selected = true;
  665. CxSche->SetFocus();
  666. }
  667. catch(...) {
  668. }
  669. }
  670. __finally {
  671. TvSche->EndUpdate();
  672. }
  673. }
  674. //---------------------------------------------------------------------------
  675. void __fastcall TFrmVmsMsgRespMngr::TvScheFocusedRecordChanged(TcxCustomGridTableView *Sender, TcxCustomGridRecord *APrevFocusedRecord,
  676. TcxCustomGridRecord *AFocusedRecord, bool ANewItemRecordFocusingChanged)
  677. {
  678. if (!AFocusedRecord) return;
  679. int nSelIdx = CMM_GetRecordIndex(TvSche);
  680. if (nSelIdx < 0) return;
  681. String sVmsFormId = VarToStr(TvSche->DataController->Values[nSelIdx][Col00->Index]);
  682. LoadPreviewForm(sVmsFormId);
  683. }
  684. //---------------------------------------------------------------------------
  685. void __fastcall TFrmVmsMsgRespMngr::TvFormFocusedRecordChanged(TcxCustomGridTableView *Sender, TcxCustomGridRecord *APrevFocusedRecord,
  686. TcxCustomGridRecord *AFocusedRecord, bool ANewItemRecordFocusingChanged)
  687. {
  688. if (!AFocusedRecord) return;
  689. int nSelIdx = CMM_GetRecordIndex(TvForm);
  690. if (nSelIdx < 0) return;
  691. String sVmsFormId = VarToStr(TvForm->DataController->Values[nSelIdx][ColFrm00->Index]);
  692. LoadPreviewForm(sVmsFormId);
  693. }
  694. //---------------------------------------------------------------------------
  695. void __fastcall TFrmVmsMsgRespMngr::LoadPreviewForm(String AVmsFormId)
  696. {
  697. TFormImage *pImage = FFormLists.Find(AVmsFormId);
  698. LockWindowUpdate(GrpPreview->Handle);
  699. if (pImage != NULL && pImage->bitmap != NULL) {
  700. ImgPreview->Picture->Bitmap->Assign(pImage->bitmap);
  701. }
  702. else {
  703. APP_ImageClear(ImgPreview->Canvas, 0, 0, ImgPreview->Width, ImgPreview->Height, clBlack);
  704. }
  705. LockWindowUpdate(0);
  706. }
  707. //---------------------------------------------------------------------------
  708. void __fastcall TFrmVmsMsgRespMngr::ChkAutoWidthPropertiesChange(TObject *Sender)
  709. {
  710. try {
  711. LockWindowUpdate(Handle);
  712. TvView->BeginUpdate();
  713. TvView->OptionsView->ColumnAutoWidth = ChkAutoWidth->Checked;
  714. TvView->EndUpdate();
  715. }
  716. __finally {
  717. LockWindowUpdate(0);
  718. //BtnBestFit->Visible = !ChkAutoWidth->Checked;
  719. }
  720. }
  721. //---------------------------------------------------------------------------
  722. void __fastcall TFrmVmsMsgRespMngr::BtnBestFitClick(TObject *Sender)
  723. {
  724. try {
  725. LockWindowUpdate(Handle);
  726. TvView->BeginUpdate();
  727. TvView->ApplyBestFit(NULL, false, false);
  728. TvView->EndUpdate();
  729. }
  730. __finally {
  731. LockWindowUpdate(0);
  732. }
  733. }
  734. //---------------------------------------------------------------------------
  735. bool __fastcall TFrmVmsMsgRespMngr::LoadIncdType()
  736. {
  737. TIncdCode *code1 = new TIncdCode(1, "사고");
  738. code1->FLists.Push(0, new TIncdSubCode(0, "사고"));
  739. TIncdCode *code2 = new TIncdCode(2, "공사");
  740. code2->FLists.Push(0, new TIncdSubCode(0, "공사"));
  741. TIncdCode *code3 = new TIncdCode(3, "행사");
  742. code3->FLists.Push(0, new TIncdSubCode(0, "행사"));
  743. TIncdCode *code4 = new TIncdCode(4, "기상");
  744. code4->FLists.Push(0, new TIncdSubCode(0, "기상"));
  745. FIncdLists.Push(code1->INCD_TYPE, code1);
  746. FIncdLists.Push(code2->INCD_TYPE, code2);
  747. FIncdLists.Push(code3->INCD_TYPE, code3);
  748. FIncdLists.Push(code4->INCD_TYPE, code4);
  749. String sQry;
  750. TADOQuery *pADO = NULL;
  751. sQry = "SELECT B.CLSS_CD, B.CODE_NO AS INCD_TYPE, B.CD_NM AS INCD_NAME, \r\n"
  752. " A.CODE_NO AS INCD_DTL_TYPE, A.CD_NM AS INCD_DTL_NAME \r\n"
  753. " FROM TB_SYS_CD A, \r\n"
  754. " (SELECT CLSS_CD, CODE_NO, CD_NM, CD_VAL_1 \r\n"
  755. " FROM TB_SYS_CD \r\n"
  756. " WHERE CLSS_CD = 'INCD_TYPE_CD') B \r\n"
  757. " WHERE A.CLSS_CD = B.CD_VAL_1 \r\n"
  758. " ORDER BY B.CODE_NO, TO_NUMBER(A.CODE_NO) \r\n";
  759. try {
  760. try {
  761. pADO = new TADOQuery(NULL);
  762. pADO->Close();
  763. pADO->Connection = ITSDb_GetConnection();
  764. ITSDb_SQLText(pADO, sQry);
  765. ITSDb_SQLOpen(pADO);
  766. for( ; !pADO->Eof; pADO->Next()) {
  767. int INCD_TYPE = pADO->FieldByName("INCD_TYPE")->AsInteger;
  768. String INCD_NAME = pADO->FieldByName("INCD_NAME")->AsString;
  769. int INCD_DTL_TYPE = pADO->FieldByName("INCD_DTL_TYPE")->AsInteger;
  770. String INCD_DTL_NAME = pADO->FieldByName("INCD_DTL_NAME")->AsString;
  771. TIncdCode *pCode = FIncdLists.Find(INCD_TYPE);
  772. if (pCode == NULL) {
  773. pCode = new TIncdCode(INCD_TYPE, INCD_NAME);
  774. FIncdLists.Push(pCode->INCD_TYPE, pCode);
  775. }
  776. pCode->FLists.Push(INCD_DTL_TYPE, new TIncdSubCode(INCD_DTL_TYPE, INCD_DTL_NAME));
  777. }
  778. }
  779. catch(EDatabaseError &E)
  780. {
  781. DBERRORMSG("TFrmVmsMsgRespMngr::LoadIncdType", String(E.ClassName()), E.Message, sQry);
  782. return false;
  783. }
  784. catch(Exception &e)
  785. {
  786. DBERRORMSG("TFrmVmsMsgRespMngr::LoadIncdType", String(e.ClassName()), e.Message, sQry);
  787. return false;
  788. }
  789. }
  790. __finally {
  791. if (pADO) {
  792. pADO->Close();
  793. delete pADO;
  794. }
  795. }
  796. return true;
  797. }
  798. //---------------------------------------------------------------------------
  799. void __fastcall TFrmVmsMsgRespMngr::FillIncdTypeList()
  800. {
  801. CMM_ClearGridTableView(TvList);
  802. int nRow = 0;
  803. TcxDataController *pGDC = TvList->DataController;
  804. TvList->BeginUpdate();
  805. try {
  806. FOR_STL(TIncdCode*, pCode, FIncdLists) {
  807. FOR_STL(TIncdSubCode*, pSubCode, pCode->FLists) {
  808. nRow = pGDC->AppendRecord();
  809. pGDC->Values[nRow][ColIncd->Index] = String(pCode->INCD_TYPE) + ": " + pCode->INCD_NAME;
  810. pGDC->Values[nRow][ColIncdDtl->Index] = String(pSubCode->INCD_DTL_TYPE) + ": " + pSubCode->INCD_DTL_NAME;
  811. pGDC->Values[nRow][ColIncdType->Index] = pCode->INCD_TYPE;
  812. pGDC->Values[nRow][ColIncdDtlType->Index] = pSubCode->INCD_DTL_TYPE;
  813. pGDC->Values[nRow][Column99->Index] = (int)pSubCode;
  814. }
  815. }
  816. }
  817. __finally {
  818. TvList->EndUpdate();
  819. //TvList->DataController->GotoFirst();
  820. //TvList->DataController->FocusedRecordIndex = 0;
  821. CMM_ExpandCollapseChk(TvList, true);
  822. }
  823. }
  824. //---------------------------------------------------------------------------
  825. void __fastcall TFrmVmsMsgRespMngr::ChkExpandClick(TObject *Sender)
  826. {
  827. CMM_ExpandCollapseChk(TvList, ChkExpand->Checked);
  828. }
  829. //---------------------------------------------------------------------------
  830. void __fastcall TFrmVmsMsgRespMngr::TvListFocusedRecordChanged(TcxCustomGridTableView *Sender, TcxCustomGridRecord *APrevFocusedRecord,
  831. TcxCustomGridRecord *AFocusedRecord, bool ANewItemRecordFocusingChanged)
  832. {
  833. if (!AFocusedRecord) return;
  834. DisplayInfo();
  835. }
  836. //---------------------------------------------------------------------------