FrmVmsMsgDfltMngrF.cpp 33 KB

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