FrmVmsMsgDfltMngrF.cpp 31 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914
  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. #include "VMSM610MF.h"
  13. #include "VMSM620MF.h"
  14. #include "VMSM630MF.h"
  15. #include "VMSSEL0MF.h"
  16. #include "VMSEDT0MF.h"
  17. //---------------------------------------------------------------------------
  18. #pragma package(smart_init)
  19. #pragma link "cxButtons"
  20. #pragma link "cxCalendar"
  21. #pragma link "cxContainer"
  22. #pragma link "cxControls"
  23. #pragma link "cxDropDownEdit"
  24. #pragma link "cxEdit"
  25. #pragma link "cxGraphics"
  26. #pragma link "cxGroupBox"
  27. #pragma link "cxLabel"
  28. #pragma link "cxLookAndFeelPainters"
  29. #pragma link "cxLookAndFeels"
  30. #pragma link "cxMaskEdit"
  31. #pragma link "cxPC"
  32. #pragma link "cxPCdxBarPopupMenu"
  33. #pragma link "cxSpinEdit"
  34. #pragma link "cxSplitter"
  35. #pragma link "cxTextEdit"
  36. #pragma link "cxTimeEdit"
  37. #pragma link "dxSkinBlack"
  38. #pragma link "dxSkinBlue"
  39. #pragma link "dxSkinCaramel"
  40. #pragma link "dxSkinCoffee"
  41. #pragma link "dxSkinDarkRoom"
  42. #pragma link "dxSkinDarkSide"
  43. #pragma link "dxSkinFoggy"
  44. #pragma link "dxSkinGlassOceans"
  45. #pragma link "dxSkiniMaginary"
  46. #pragma link "dxSkinLilian"
  47. #pragma link "dxSkinLiquidSky"
  48. #pragma link "dxSkinLondonLiquidSky"
  49. #pragma link "dxSkinMcSkin"
  50. #pragma link "dxSkinMoneyTwins"
  51. #pragma link "dxSkinOffice2007Black"
  52. #pragma link "dxSkinOffice2007Blue"
  53. #pragma link "dxSkinOffice2007Green"
  54. #pragma link "dxSkinOffice2007Pink"
  55. #pragma link "dxSkinOffice2007Silver"
  56. #pragma link "dxSkinOffice2010Black"
  57. #pragma link "dxSkinOffice2010Blue"
  58. #pragma link "dxSkinOffice2010Silver"
  59. #pragma link "dxSkinsCore"
  60. #pragma link "dxSkinscxPCPainter"
  61. #pragma link "dxSkinSeven"
  62. #pragma link "dxSkinSharp"
  63. #pragma link "dxSkinSilver"
  64. #pragma link "dxSkinStardust"
  65. #pragma link "cxRadioGroup"
  66. #pragma link "cxClasses"
  67. #pragma link "cxCustomData"
  68. #pragma link "cxData"
  69. #pragma link "cxDataStorage"
  70. #pragma link "cxDBData"
  71. #pragma link "cxFilter"
  72. #pragma link "cxGrid"
  73. #pragma link "cxGridCustomTableView"
  74. #pragma link "cxGridCustomView"
  75. #pragma link "cxGridDBTableView"
  76. #pragma link "cxGridLevel"
  77. #pragma link "cxGridTableView"
  78. #pragma link "cxStyles"
  79. #pragma link "cxCheckBox"
  80. #pragma link "cxImage"
  81. #pragma link "cxButtonEdit"
  82. #pragma link "cxBlobEdit"
  83. #pragma link "cxColorComboBox"
  84. #pragma link "cxCalc"
  85. #pragma link "VmsDesignerF"
  86. #pragma link "FRAME_VmsSchListF"
  87. #pragma link "cxHint"
  88. #pragma link "dxCustomHint"
  89. #pragma link "dxScreenTip"
  90. #pragma link "dxSkinsForm"
  91. #pragma link "dxGDIPlusClasses"
  92. #pragma resource "*.dfm"
  93. TFrmVmsMsgDfltMngr *FrmVmsMsgDfltMngr = NULL;
  94. //---------------------------------------------------------------------------
  95. __fastcall TFrmVmsMsgDfltMngr::TFrmVmsMsgDfltMngr(TComponent* Owner)
  96. : TForm(Owner)
  97. {
  98. //CMM_SetFormPosition(g_AppCfg.bSaveForm);
  99. ITSSkin_Initialize(Application, g_AppCfg.sLang);
  100. ITSSkin_Caption(false);
  101. ITSSkin_Load(this);
  102. //CMM_LoadForm(g_sFormsDir, this);
  103. SetColorScheme(g_AppCfg.sSkinName);
  104. FUpdate= false;
  105. FTitle = Caption;//"VMS 자동 스케줄 관리";
  106. FListSymb = new TList;
  107. EditMode = false;
  108. FRAMEVmsSchList1->PnlTop->Visible = false;
  109. FRAMEVmsSchList1->PnlBottom->Visible = false;
  110. PgVmsSch->Properties->ActivePage = TsEdit;
  111. }
  112. //---------------------------------------------------------------------------
  113. void __fastcall TFrmVmsMsgDfltMngr::SetColorScheme(String ASkinName)
  114. {
  115. dxSkinController1->SkinName = ASkinName;
  116. dxSkinController1->Refresh();
  117. PnlPreview->ParentColor = false;
  118. PnlPreview->Color = clBlack;
  119. }
  120. //---------------------------------------------------------------------------
  121. void __fastcall TFrmVmsMsgDfltMngr::CommClose()
  122. {
  123. try {
  124. #if 0
  125. if (m_pEdtDesigner) {
  126. delete m_pEdtDesigner;
  127. m_pEdtDesigner = NULL;
  128. }
  129. #endif
  130. APP_DelVmsSizeCombo(CbSizeType);
  131. ClearSymbloList();
  132. SAFE_DELETE(FListSymb);
  133. ITSSkin_Term();
  134. //CMM_SaveForm(g_sFormsDir, this);
  135. }
  136. catch(...) {
  137. }
  138. }
  139. //---------------------------------------------------------------------------
  140. void __fastcall TFrmVmsMsgDfltMngr::FormCreate(TObject *Sender)
  141. {
  142. InitDbLoading();
  143. //m_pEdtDesigner = new TVmsFormDesigner(PnlEditForm);
  144. //FOR_STL(TCDSFontColor*, pObj, CDSFontManager->FFontColors) {
  145. // m_pEdtDesigner->InitFontColor(pObj->VMS_FONT_COLR_CD, (TColor)pObj->VMS_FONT_COLR_VAL);
  146. //}
  147. }
  148. //---------------------------------------------------------------------------
  149. void __fastcall TFrmVmsMsgDfltMngr::InitDbLoading()
  150. {
  151. Application->ProcessMessages();
  152. if (!VmsCtlrManager) {
  153. VmsCtlrManager = new TVmsCtlrManager();
  154. }
  155. VmsCtlrManager->LoadVmsModlSize();
  156. VmsCtlrManager->LoadFromDb();
  157. #if 0
  158. if (SysCodeManager == NULL) {
  159. SysCodeManager = new TSysCodeManager();
  160. }
  161. SysCodeManager->LoadFromDb();
  162. if (!VmsTextItemManager) {
  163. VmsTextItemManager = new TVmsTextItemManager();
  164. }
  165. VmsTextItemManager->LoadFromDb();
  166. #endif
  167. if(!CDSFontManager) {
  168. CDSFontManager = new TCDSFontManager();
  169. }
  170. CDSFontManager->LoadFontInfo();
  171. }
  172. //---------------------------------------------------------------------------
  173. void __fastcall TFrmVmsMsgDfltMngr::FormShow(TObject *Sender)
  174. {
  175. Refresh();
  176. FormInit();
  177. TmrShow->Enabled = true;
  178. }
  179. //---------------------------------------------------------------------------
  180. void __fastcall TFrmVmsMsgDfltMngr::FormInit()
  181. {
  182. TNotifyEvent evt = CbSizeType->Properties->OnChange;
  183. CbSizeType->Properties->OnChange = NULL;
  184. APP_FillVmsSizeType(CbSizeType, false);
  185. CbSizeType->Properties->OnChange = evt;
  186. FNewDb = false;
  187. }
  188. //---------------------------------------------------------------------------
  189. void __fastcall TFrmVmsMsgDfltMngr::TmrShowTimer(TObject *Sender)
  190. {
  191. TmrShow->Enabled = false;
  192. CbSizeType->ItemIndex = -1;
  193. CbSizeType->ItemIndex = 0;
  194. }
  195. //---------------------------------------------------------------------------
  196. void __fastcall TFrmVmsMsgDfltMngr::BtnCloseClick(TObject *Sender)
  197. {
  198. Close();
  199. }
  200. //---------------------------------------------------------------------------
  201. void __fastcall TFrmVmsMsgDfltMngr::FormClose(TObject *Sender, TCloseAction &Action)
  202. {
  203. CommClose();
  204. FrmVmsMsgDfltMngr = NULL;
  205. Action = caFree;
  206. }
  207. //---------------------------------------------------------------------------
  208. void __fastcall TFrmVmsMsgDfltMngr::FormCloseQuery(TObject *Sender, bool &CanClose)
  209. {
  210. if (FUpdate)
  211. {
  212. POST_MSG(Application->MainForm->Handle, WM_DATABASE_REFRESH, WP_MSG_14, 0);
  213. }
  214. }
  215. //---------------------------------------------------------------------------
  216. void __fastcall TFrmVmsMsgDfltMngr::ClearSymbloList()
  217. {
  218. FFormLists.Clear();
  219. for(int ii = 0; ii < FListSymb->Count; ii++)
  220. {
  221. Graphics::TBitmap *bitmap = (Graphics::TBitmap *)FListSymb->Items[ii];
  222. delete bitmap;
  223. }
  224. FListSymb->Clear();
  225. }
  226. //---------------------------------------------------------------------------
  227. void __fastcall TFrmVmsMsgDfltMngr::FRAMEVmsSchList1TvListCellDblClick(TcxCustomGridTableView *Sender,
  228. TcxGridTableDataCellViewInfo *ACellViewInfo, TMouseButton AButton,
  229. TShiftState AShift, bool &AHandled)
  230. {
  231. if (!ACellViewInfo) return;
  232. DisplayInfo();
  233. }
  234. //---------------------------------------------------------------------------
  235. void __fastcall TFrmVmsMsgDfltMngr::FRAMEVmsSchList1TvListFocusedRecordChanged(TcxCustomGridTableView *Sender,
  236. TcxCustomGridRecord *APrevFocusedRecord, TcxCustomGridRecord *AFocusedRecord,
  237. bool ANewItemRecordFocusingChanged)
  238. {
  239. if (!AFocusedRecord) return;
  240. DisplayInfo();
  241. }
  242. //---------------------------------------------------------------------------
  243. void __fastcall TFrmVmsMsgDfltMngr::CbSizeTypePropertiesChange(TObject *Sender)
  244. {
  245. if (CbSizeType->ItemIndex < 0) return;
  246. EdFocus->SetFocus();
  247. BtnSearchClick(NULL);
  248. FRAMEVmsSchList1->CxList->SetFocus();
  249. LockWindowUpdate(PnlPreview->Handle);
  250. PnlPreview->Width = FVmsWidth+4;
  251. PnlPreview->Height= FVmsHeight+4;
  252. ImgPreview->Align = alNone;
  253. ImgPreview->Picture->Bitmap->Width = FVmsWidth;
  254. ImgPreview->Picture->Bitmap->Height= FVmsHeight;
  255. APP_ImageClear(ImgPreview->Canvas, 0, 0, ImgPreview->Width, ImgPreview->Height, clBlack);
  256. ImgPreview->Align = alClient;
  257. LockWindowUpdate(0);
  258. }
  259. //---------------------------------------------------------------------------
  260. void __fastcall TFrmVmsMsgDfltMngr::BtnSearchClick(TObject *Sender)
  261. {
  262. RefreshData();
  263. EdFocus->SetFocus();
  264. }
  265. //---------------------------------------------------------------------------
  266. void __fastcall TFrmVmsMsgDfltMngr::RefreshData()
  267. {
  268. FormClear();
  269. TVmsSizeType *pVmsSizeType = APP_GetVmsSizeTypeObject(CbSizeType);
  270. if (pVmsSizeType == NULL) return;
  271. FVmsTypeCd = pVmsSizeType->TypeCd;
  272. FVmsWidth = pVmsSizeType->Width;
  273. FVmsHeight = pVmsSizeType->Height;
  274. #if 0
  275. PnlEdtBack->Width = FVmsWidth+4;
  276. PnlEdtBack->Height= FVmsHeight+4;
  277. m_pEdtDesigner->Clear();
  278. m_pEdtDesigner->SizeType = FVmsTypeCd;
  279. m_pEdtDesigner->SetSize(FVmsWidth, FVmsHeight);
  280. m_pEdtDesigner->SetPos(0, 0);
  281. m_pEdtDesigner->BkColorCode = "0";
  282. m_pEdtDesigner->EditMode = true;
  283. m_pEdtDesigner->Show();
  284. #endif
  285. FRAMEVmsSchList1->UpdateList(FVmsTypeCd);
  286. LoadVmsFormList(FVmsTypeCd);
  287. }
  288. //---------------------------------------------------------------------------
  289. void __fastcall TFrmVmsMsgDfltMngr::FormClear()
  290. {
  291. FSelIdx = -1;
  292. EdVmsNmbr->Clear();
  293. GrpSchedule->Caption = lblTitle->Caption;//"▶ 자동 스케줄 설정";
  294. CMM_ClearGridTableView(TvSche);
  295. LockWindowUpdate(GrpPreview->Handle);
  296. APP_ImageClear(ImgPreview->Canvas, 0, 0, ImgPreview->Width, ImgPreview->Height, clBlack);
  297. LockWindowUpdate(0);
  298. FNewDb = false;
  299. }
  300. //---------------------------------------------------------------------------
  301. void __fastcall TFrmVmsMsgDfltMngr::DisplayInfo()
  302. {
  303. FormClear();
  304. FSelIdx = CMM_GetRecordIndex(FRAMEVmsSchList1->TvList);
  305. if (FSelIdx < 0) return;
  306. TcxDataController *pGDC = FRAMEVmsSchList1->TvList->DataController;
  307. String sVmsCtlrId = VarToStr(pGDC->Values[FSelIdx][FRAMEVmsSchList1->Column01->Index]);
  308. EdVmsNmbr->Text = sVmsCtlrId;
  309. GrpSchedule->Caption = lblTitle->Caption + " (" + VarToStr(pGDC->Values[FSelIdx][FRAMEVmsSchList1->Column02->Index]) + ": " + VarToStr(pGDC->Values[FSelIdx][FRAMEVmsSchList1->Column03->Index]) + ")";
  310. LoadVmsScheduleInfo(sVmsCtlrId);
  311. }
  312. //---------------------------------------------------------------------------
  313. void __fastcall TFrmVmsMsgDfltMngr::BtnListAddClick(TObject *Sender)
  314. {
  315. String sUse = "N";
  316. String sTime= "4";
  317. int nSelIdx = CMM_GetRecordIndex(FRAMEVmsSchList1->TvList);
  318. if (nSelIdx < 0) return;
  319. TcxGridDataController *pDcFrm = TvForm->DataController;
  320. TcxGridDataController *pDcSch = TvSche->DataController;
  321. int nFormIdx = CMM_GetRecordIndex(TvForm);
  322. if (nFormIdx < 0) return;
  323. int nRow = pDcSch->AppendRecord();
  324. pDcSch->Values[nRow][Col00->Index] = VarToStr(pDcFrm->Values[nFormIdx][ColFrm00->Index]); //ID
  325. pDcSch->Values[nRow][Col02->Index] = VarToStr(pDcFrm->Values[nFormIdx][ColFrm02->Index]); //명칭
  326. pDcSch->Values[nRow][Col03->Index] = VarToStr(pDcFrm->Values[nFormIdx][ColFrm03->Index]); //표출(초)
  327. //pDcSch->Values[nRow][Col01->Index] = pDcFrm->Values[nFormIdx][ColFrm01->Index]; //이미지데이터임
  328. }
  329. //---------------------------------------------------------------------------
  330. void __fastcall TFrmVmsMsgDfltMngr::BtnListDeleteClick(TObject *Sender)
  331. {
  332. int nSelIdx = CMM_GetRecordIndex(FRAMEVmsSchList1->TvList);
  333. if (nSelIdx < 0) return;
  334. TcxGridDataController *pDcSch = TvSche->DataController;
  335. nSelIdx = CMM_GetRecordIndex(TvSche);
  336. if (nSelIdx < 0) return;
  337. TvSche->DataController->DeleteRecord(nSelIdx);
  338. }
  339. //---------------------------------------------------------------------------
  340. void __fastcall TFrmVmsMsgDfltMngr::BtnSaveClick(TObject *Sender)
  341. {
  342. //작업한 스케줄 정보를 저장한다.
  343. if (EdVmsNmbr->Text.Trim().IsEmpty())
  344. {
  345. Application->MessageBox(lblErr2->Caption.c_str(),//L"VMS 기본 스케줄 관리\r\nVMS 목록에서 VMS를 먼저 선택한 후 작업을 진행하세요.",
  346. FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  347. return;
  348. }
  349. bool bUpdate = true;
  350. String sVmsCtlrId = EdVmsNmbr->Text.Trim();
  351. if (bUpdate)
  352. {
  353. String sMsg;
  354. sMsg = "VMS: " + sVmsCtlrId;
  355. sMsg+= "\r\n" + lblErr3->Caption;//선택한 VMS의 기본 스케줄 정보를 저장하시겠습니까?";
  356. if (Application->MessageBox(sMsg.c_str(), FTitle.c_str(), MB_YESNO|MB_ICONQUESTION|MB_APPLMODAL) != IDYES) return;
  357. }
  358. ITSDb_GetConnection()->BeginTrans();
  359. if (!DeleteVmsScenario(sVmsCtlrId)) {
  360. ITSDb_GetConnection()->RollbackTrans();
  361. return;
  362. }
  363. if (!SaveVmsScenario(sVmsCtlrId)) {
  364. ITSDb_GetConnection()->RollbackTrans();
  365. return;
  366. }
  367. ITSDb_GetConnection()->CommitTrans();
  368. Application->MessageBox(lblErr4->Caption.c_str(),//L"VMS 기본 스케줄 관리\r\nVMS 기본 스케줄 정보를 저장 하였습니다.",
  369. FTitle.c_str(), MB_OK|MB_ICONINFORMATION|MB_APPLMODAL);
  370. CMM_SetGridRow(FRAMEVmsSchList1->CxList, FRAMEVmsSchList1->TvList, sVmsCtlrId, FRAMEVmsSchList1->Column01->Index);
  371. //DisplayInfo();
  372. }
  373. //---------------------------------------------------------------------------
  374. bool __fastcall TFrmVmsMsgDfltMngr::SaveVmsScenario(String AVmsCtlrId)
  375. {
  376. String sQry;
  377. TADOQuery *pADO = NULL;
  378. TcxDataController *pGDC = TvSche->DataController;
  379. sQry = "INSERT INTO TB_VMS_DFLT_FORM ( \r\n"
  380. " VMS_CTLR_ID, \r\n"
  381. " SN, \r\n"
  382. " VMS_FORM_ID, \r\n"
  383. " DSPL_IMG, \r\n"
  384. " DSPL_IMG_SZ, \r\n"
  385. " DFLT_FORM_GRPHC_PCKT, \r\n"
  386. " DFLT_FORM_GRPHC_PCKT_SZ, \r\n"
  387. " RGSTR_ID, \r\n"
  388. " REG_DT, \r\n"
  389. " CTL_RSLT, \r\n"
  390. " RES_DT ) \r\n"
  391. " VALUES ( \r\n"
  392. " :p01, \r\n"
  393. " :p02, \r\n"
  394. " :p03, \r\n"
  395. " :p04, \r\n"
  396. " :p05, \r\n"
  397. " NULL, \r\n"
  398. " NULL, \r\n"
  399. " :p08, \r\n"
  400. " SYSDATE, \r\n"
  401. " NULL, \r\n"
  402. " NULL ) \r\n";
  403. try {
  404. TvSche->BeginUpdate();
  405. int nRows = pGDC->RecordCount;
  406. try {
  407. pADO = new TADOQuery(NULL);
  408. pADO->Close();
  409. pADO->Connection = ITSDb_GetConnection();
  410. ITSDb_SQLText(pADO, sQry);
  411. for (int ii = 0; ii < nRows; ii++) {
  412. String VMS_CTLR_ID = AVmsCtlrId;
  413. int SN = ii+1;
  414. String VMS_FORM_ID = VarToStr(pGDC->Values[ii][Col00->Index]);
  415. int DSPL_IMG_SZ = 0;
  416. String RGSTR_ID = g_AppCfg.OPER_ID;
  417. TMemoryStream *dataStream = new TMemoryStream();
  418. TFormImage *pImage = FFormLists.Find(VMS_FORM_ID);
  419. if (pImage != NULL && pImage->bitmap != NULL) {
  420. pImage->bitmap->SaveToStream(dataStream);
  421. DSPL_IMG_SZ = dataStream->Size;
  422. }
  423. pADO->Parameters->ParamByName("p01")->Value = VMS_CTLR_ID;
  424. pADO->Parameters->ParamByName("p02")->Value = SN;
  425. pADO->Parameters->ParamByName("p03")->Value = VMS_FORM_ID;
  426. if (DSPL_IMG_SZ > 0) {
  427. pADO->Parameters->ParamByName("p04")->LoadFromStream(dataStream, ftBlob);
  428. }
  429. else {
  430. pADO->Parameters->ParamByName("p04")->Value = "";
  431. }
  432. pADO->Parameters->ParamByName("p05")->Value = DSPL_IMG_SZ;
  433. pADO->Parameters->ParamByName("p08")->Value = RGSTR_ID;
  434. pADO->ExecSQL();
  435. SAFE_DELETE(dataStream);
  436. }
  437. }
  438. catch(EDatabaseError &E) {
  439. DBERRORMSG("TFrmVmsMsgDfltMngr::SaveVmsScenario", String(E.ClassName()), E.Message, sQry);
  440. return false;
  441. }
  442. catch(Exception &e) {
  443. DBERRORMSG("TFrmVmsMsgDfltMngr::SaveVmsScenario", String(e.ClassName()), e.Message, sQry);
  444. return false;
  445. }
  446. }
  447. __finally {
  448. if (pADO) {
  449. pADO->Close();
  450. delete pADO;
  451. }
  452. TvSche->EndUpdate();
  453. }
  454. return true;
  455. }
  456. //---------------------------------------------------------------------------
  457. bool __fastcall TFrmVmsMsgDfltMngr::DeleteVmsScenario(String AVmsCtlrId)
  458. {
  459. String sQry;
  460. TADOQuery *pADO = NULL;
  461. sQry = "DELETE TB_VMS_DFLT_FORM \r\n"
  462. " WHERE 1=1 \r\n"
  463. " AND VMS_CTLR_ID = :p01 \r\n";
  464. try {
  465. try {
  466. pADO = new TADOQuery(NULL);
  467. pADO->Close();
  468. pADO->Connection = ITSDb_GetConnection();
  469. ITSDb_SQLText(pADO, sQry);
  470. ITSDb_SQLBind(pADO, "p01", AVmsCtlrId);
  471. pADO->ExecSQL();
  472. }
  473. catch(EDatabaseError &E) {
  474. DBERRORMSG("TFrmVmsMsgDfltMngr::DeleteVmsScenario", String(E.ClassName()), E.Message, sQry);
  475. return false;
  476. }
  477. catch(Exception &e) {
  478. DBERRORMSG("TFrmVmsMsgDfltMngr::DeleteVmsScenario", String(e.ClassName()), e.Message, sQry);
  479. return false;
  480. }
  481. }
  482. __finally {
  483. if (pADO) {
  484. pADO->Close();
  485. delete pADO;
  486. }
  487. }
  488. return true;
  489. }
  490. //---------------------------------------------------------------------------
  491. bool __fastcall TFrmVmsMsgDfltMngr::LoadVmsScheduleInfo(String AVmsCtlrId)
  492. {
  493. int ii;
  494. String sQry;
  495. TADOQuery *pADO = NULL;
  496. CMM_ClearGridTableView(TvSche);
  497. CMM_ClearGridTableView(TvView);
  498. TcxDataController *pDcSch = TvSche->DataController;
  499. TcxDataController *pDcViw = TvView->DataController;
  500. sQry = "SELECT A.VMS_CTLR_ID, A.SN, \r\n"
  501. " A.VMS_FORM_ID, B.VMS_FORM_NM, \r\n"
  502. " B.VMS_FORM_TYPE, B.DSPL_HR, \r\n"
  503. " B.VMS_FORM_IMG, \r\n"
  504. " A.DSPL_IMG, A.DSPL_IMG_SZ, \r\n"
  505. " A.DFLT_FORM_GRPHC_PCKT, \r\n"
  506. " A.DFLT_FORM_GRPHC_PCKT_SZ, \r\n"
  507. " A.CTL_RSLT, A.RES_DT \r\n"
  508. " FROM TB_VMS_DFLT_FORM A, \r\n"
  509. " TB_VMS_FORM B \r\n"
  510. " WHERE 1=1 \r\n"
  511. " AND A.VMS_CTLR_ID = :p01 \r\n"
  512. " AND A.VMS_FORM_ID = B.VMS_FORM_ID \r\n"
  513. " ORDER BY A.VMS_CTLR_ID, A.SN \r\n";
  514. try {
  515. TvSche->BeginUpdate();
  516. TvView->BeginUpdate();
  517. int nRowS, nRowV;
  518. try {
  519. pADO = new TADOQuery(NULL);
  520. pADO->Close();
  521. pADO->Connection = ITSDb_GetConnection();
  522. ITSDb_SQLText(pADO, sQry);
  523. ITSDb_SQLBind(pADO, "p01", AVmsCtlrId);
  524. ITSDb_SQLOpen(pADO);
  525. int nFormType;
  526. for( ; !pADO->Eof; pADO->Next()) {
  527. nRowS = pDcSch->AppendRecord();
  528. nRowV = pDcViw->AppendRecord();
  529. pDcSch->Values[nRowS][Col00->Index] = pADO->FieldByName("VMS_FORM_ID")->AsString;
  530. pDcSch->Values[nRowS][Col02->Index] = pADO->FieldByName("VMS_FORM_NM")->AsString;
  531. pDcSch->Values[nRowS][Col03->Index] = pADO->FieldByName("DSPL_HR")->AsString;
  532. //pDcSch->Values[nRowS][Col01->Index] = pADO->FieldByName("VMS_FORM_IMG")->AsVariant;
  533. pDcViw->Values[nRowV][ColView00->Index] = pADO->FieldByName("VMS_FORM_ID")->AsString;
  534. pDcViw->Values[nRowV][ColView02->Index] = pADO->FieldByName("VMS_FORM_NM")->AsString;
  535. pDcViw->Values[nRowV][ColView03->Index] = pADO->FieldByName("DSPL_HR")->AsString;
  536. pDcViw->Values[nRowV][ColView01->Index] = pADO->FieldByName("VMS_FORM_IMG")->AsVariant;
  537. }
  538. }
  539. catch(EDatabaseError &E) {
  540. DBERRORMSG("TFrmVmsMsgDfltMngr::LoadVmsScheduleInfo", String(E.ClassName()), E.Message, sQry);
  541. return false;
  542. //throw Exception(String(E.ClassName()) + E.Message);
  543. }
  544. catch(Exception &e) {
  545. DBERRORMSG("TFrmVmsMsgDfltMngr::LoadVmsScheduleInfo", String(e.ClassName()), e.Message, sQry);
  546. return false;
  547. //throw Exception(String(e.ClassName()) + e.Message);
  548. }
  549. }
  550. __finally {
  551. if (pADO) {
  552. pADO->Close();
  553. delete pADO;
  554. }
  555. TvSche->EndUpdate();
  556. TvView->EndUpdate();
  557. }
  558. return true;
  559. }
  560. //---------------------------------------------------------------------------
  561. bool __fastcall TFrmVmsMsgDfltMngr::LoadVmsFormList(String AFormSizeCd)
  562. {
  563. ClearSymbloList();
  564. CMM_ClearGridTableView(TvForm);
  565. String sQry;
  566. TADOQuery *pADO = NULL;
  567. // 홍보폼만 조회
  568. sQry = "SELECT A.VMS_FORM_ID, A.VMS_MODL_KIND, A.VMS_FORM_TYPE, A.VMS_FORM_NM, \r\n"
  569. " A.VMS_FORM_IMG, \r\n"
  570. " A.DSPL_EFF, NVL(A.DSPL_HR, 0) AS DSPL_HR, A.BACK_CLR, \r\n"
  571. " NVL(B.FORM_TYPE_NM, A.VMS_FORM_TYPE) AS FORM_TYPE_NM, \r\n"
  572. " NVL(C.FORM_TYPE_NM, A.DSPL_EFF) AS DSPL_EFF_NM, \r\n"
  573. " NVL(D.VMS_MODL_KIND_NM, A.VMS_MODL_KIND) AS VMS_MODL_KIND_NM \r\n"
  574. " FROM TB_VMS_FORM A, \r\n"
  575. " (SELECT CODE_NO, CD_NM AS FORM_TYPE_NM \r\n"
  576. " FROM TB_SYS_CD \r\n"
  577. " WHERE CLSS_CD = 'VMS_FORM_TYPE_CD') B, \r\n"
  578. " (SELECT CODE_NO, CD_NM AS FORM_TYPE_NM \r\n"
  579. " FROM TB_SYS_CD \r\n"
  580. " WHERE CLSS_CD = 'VMS_FORM_DSPL_EFF_CD') C, \r\n"
  581. " TB_VMS_MODL_KIND D \r\n"
  582. " WHERE 1=1 \r\n"
  583. " AND A.VMS_FORM_TYPE = 'P' \r\n"
  584. " AND A.VMS_FORM_TYPE = B.CODE_NO(+) \r\n"
  585. " AND A.DSPL_EFF = C.CODE_NO(+) \r\n"
  586. " AND A.VMS_MODL_KIND = D.VMS_MODL_KIND(+) \r\n"
  587. " AND A.VMS_MODL_KIND = :p01 \r\n"
  588. " ORDER BY A.VMS_MODL_KIND, A.VMS_FORM_ID \r\n";
  589. try {
  590. TvForm->BeginUpdate();
  591. TcxDataController *pGDC = TvForm->DataController;;
  592. int nRow;
  593. try {
  594. pADO = new TADOQuery(NULL);
  595. pADO->Close();
  596. pADO->Connection = ITSDb_GetConnection();
  597. ITSDb_SQLText(pADO, sQry);
  598. ITSDb_SQLBind(pADO, "p01", AFormSizeCd);
  599. ITSDb_SQLOpen(pADO);
  600. int nFormTypeCd, nFormIdx;
  601. for( ; !pADO->Eof; pADO->Next()) {
  602. nRow = pGDC->AppendRecord();
  603. String VMS_FORM_ID = pADO->FieldByName("VMS_FORM_ID")->AsString;
  604. pGDC->Values[nRow][ColFrm00->Index] = VMS_FORM_ID;
  605. pGDC->Values[nRow][ColFrm02->Index] = pADO->FieldByName("VMS_FORM_NM")->AsString;
  606. pGDC->Values[nRow][ColFrm03->Index] = pADO->FieldByName("DSPL_HR")->AsString;
  607. pGDC->Values[nRow][ColFrm09->Index] = pADO->FieldByName("FORM_TYPE_NM")->AsString;
  608. //pGDC->Values[nRow][ColFrm01->Index] = pADO->FieldByName("VMS_FORM_IMG")->AsVariant;
  609. TFormImage *pImage = new TFormImage();
  610. pImage->fromId = VMS_FORM_ID;
  611. pImage->bitmap = new Graphics::TBitmap;
  612. try {
  613. pImage->bitmap->LoadFromStream(pADO->CreateBlobStream(pADO->FieldByName("VMS_FORM_IMG"), bmRead));
  614. }
  615. catch(Exception &e) {
  616. delete pImage->bitmap;
  617. pImage->bitmap = NULL;
  618. }
  619. FFormLists.Push(pImage->fromId, pImage);
  620. }
  621. }
  622. catch(EDatabaseError &E)
  623. {
  624. DBERRORMSG("TFrmVmsMsgDfltMngr::LoadVmsFormList", String(E.ClassName()), E.Message, sQry);
  625. return false;
  626. //throw Exception(String(E.ClassName()) + E.Message);
  627. }
  628. catch(Exception &e)
  629. {
  630. DBERRORMSG("TFrmVmsMsgDfltMngr::LoadVmsFormList", String(e.ClassName()), e.Message, sQry);
  631. return false;
  632. //throw Exception(String(e.ClassName()) + e.Message);
  633. }
  634. }
  635. __finally {
  636. if (pADO) {
  637. pADO->Close();
  638. delete pADO;
  639. }
  640. TvForm->EndUpdate();
  641. }
  642. return true;
  643. }
  644. //---------------------------------------------------------------------------
  645. void __fastcall TFrmVmsMsgDfltMngr::cxGridColumn172CustomDrawCell(TcxCustomGridTableView *Sender, TcxCanvas *ACanvas, TcxGridTableDataCellViewInfo *AViewInfo,
  646. bool &ADone)
  647. {
  648. int nRecordIdx = AViewInfo->GridRecord->RecordIndex;
  649. if (nRecordIdx < 0) {
  650. return;
  651. }
  652. try {
  653. int nItemIdx = AViewInfo->Item->Index;
  654. if (VarIsNull(AViewInfo->GridRecord->DisplayTexts[nItemIdx])) return;
  655. String sEndDt = AViewInfo->GridRecord->DisplayTexts[nItemIdx];
  656. if (sEndDt < Now().FormatString(STR_HHNN)) {
  657. ACanvas->Canvas->Brush->Color = clSilver;
  658. }
  659. }
  660. catch(Exception &e) {
  661. }
  662. }
  663. //---------------------------------------------------------------------------
  664. void __fastcall TFrmVmsMsgDfltMngr::BtnUpClick(TObject *Sender)
  665. {
  666. try {
  667. TvSche->BeginUpdate();
  668. int nCurIdx = TvSche->DataController->FocusedRowIndex;//FocusedRecordIndex;
  669. if (nCurIdx <= 0) {
  670. return;
  671. }
  672. int nUpIdx = nCurIdx-1;
  673. try {
  674. int nCols = TvSche->ColumnCount;
  675. for (int ii = 0; ii < nCols; ii++) {
  676. Variant va = TvSche->DataController->Values[nCurIdx][ii];
  677. TvSche->DataController->Values[nCurIdx][ii] = TvSche->DataController->Values[nUpIdx][ii];
  678. TvSche->DataController->Values[nUpIdx][ii] = va;
  679. }
  680. TvSche->Controller->ClearSelection();
  681. TvSche->Controller->FocusedRowIndex = nUpIdx;
  682. TvSche->ViewData->Records[nUpIdx]->Focused = true;
  683. TvSche->ViewData->Records[nUpIdx]->Selected = true;
  684. CxSche->SetFocus();
  685. }
  686. catch(...) {
  687. }
  688. }
  689. __finally {
  690. TvSche->EndUpdate();
  691. }
  692. }
  693. //---------------------------------------------------------------------------
  694. void __fastcall TFrmVmsMsgDfltMngr::BtnDownClick(TObject *Sender)
  695. {
  696. try {
  697. TvSche->BeginUpdate();
  698. int nCurIdx = TvSche->DataController->FocusedRowIndex;//FocusedRecordIndex;
  699. if (nCurIdx < 0) {
  700. return;
  701. }
  702. if (nCurIdx == TvSche->DataController->RecordCount-1) {
  703. return;
  704. }
  705. int nDnIdx = nCurIdx+1;
  706. try {
  707. int nCols = TvSche->ColumnCount;
  708. for (int ii = 0; ii < nCols; ii++) {
  709. Variant va = TvSche->DataController->Values[nCurIdx][ii];
  710. TvSche->DataController->Values[nCurIdx][ii] = TvSche->DataController->Values[nDnIdx][ii];
  711. TvSche->DataController->Values[nDnIdx][ii] = va;
  712. }
  713. TvSche->Controller->ClearSelection();
  714. TvSche->Controller->FocusedRowIndex = nDnIdx;
  715. TvSche->ViewData->Records[nDnIdx]->Focused = true;
  716. TvSche->ViewData->Records[nDnIdx]->Selected = true;
  717. CxSche->SetFocus();
  718. }
  719. catch(...) {
  720. }
  721. }
  722. __finally {
  723. TvSche->EndUpdate();
  724. }
  725. }
  726. //---------------------------------------------------------------------------
  727. void __fastcall TFrmVmsMsgDfltMngr::TvScheFocusedRecordChanged(TcxCustomGridTableView *Sender, TcxCustomGridRecord *APrevFocusedRecord,
  728. TcxCustomGridRecord *AFocusedRecord, bool ANewItemRecordFocusingChanged)
  729. {
  730. if (!AFocusedRecord) return;
  731. int nSelIdx = CMM_GetRecordIndex(TvSche);
  732. if (nSelIdx < 0) return;
  733. String sVmsFormId = VarToStr(TvSche->DataController->Values[nSelIdx][Col00->Index]);
  734. LoadPreviewForm(sVmsFormId);
  735. }
  736. //---------------------------------------------------------------------------
  737. void __fastcall TFrmVmsMsgDfltMngr::TvFormFocusedRecordChanged(TcxCustomGridTableView *Sender, TcxCustomGridRecord *APrevFocusedRecord,
  738. TcxCustomGridRecord *AFocusedRecord, bool ANewItemRecordFocusingChanged)
  739. {
  740. if (!AFocusedRecord) return;
  741. int nSelIdx = CMM_GetRecordIndex(TvForm);
  742. if (nSelIdx < 0) return;
  743. String sVmsFormId = VarToStr(TvForm->DataController->Values[nSelIdx][ColFrm00->Index]);
  744. LoadPreviewForm(sVmsFormId);
  745. }
  746. //---------------------------------------------------------------------------
  747. void __fastcall TFrmVmsMsgDfltMngr::LoadPreviewForm(String AVmsFormId)
  748. {
  749. TFormImage *pImage = FFormLists.Find(AVmsFormId);
  750. LockWindowUpdate(GrpPreview->Handle);
  751. if (pImage != NULL && pImage->bitmap != NULL) {
  752. ImgPreview->Picture->Bitmap->Assign(pImage->bitmap);
  753. }
  754. else {
  755. APP_ImageClear(ImgPreview->Canvas, 0, 0, ImgPreview->Width, ImgPreview->Height, clBlack);
  756. }
  757. LockWindowUpdate(0);
  758. }
  759. //---------------------------------------------------------------------------
  760. void __fastcall TFrmVmsMsgDfltMngr::ChkAutoWidthPropertiesChange(TObject *Sender)
  761. {
  762. try {
  763. LockWindowUpdate(Handle);
  764. TvView->BeginUpdate();
  765. TvView->OptionsView->ColumnAutoWidth = ChkAutoWidth->Checked;
  766. TvView->EndUpdate();
  767. }
  768. __finally {
  769. LockWindowUpdate(0);
  770. //BtnBestFit->Visible = !ChkAutoWidth->Checked;
  771. }
  772. }
  773. //---------------------------------------------------------------------------
  774. void __fastcall TFrmVmsMsgDfltMngr::BtnBestFitClick(TObject *Sender)
  775. {
  776. try {
  777. LockWindowUpdate(Handle);
  778. TvView->BeginUpdate();
  779. TvView->ApplyBestFit(NULL, false, false);
  780. TvView->EndUpdate();
  781. }
  782. __finally {
  783. LockWindowUpdate(0);
  784. }
  785. }
  786. //---------------------------------------------------------------------------