VMSM530MF.cpp 43 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131
  1. //---------------------------------------------------------------------------
  2. #include <vcl.h>
  3. #include <IOUtils.hpp>
  4. #include "ITSSkinF.h"
  5. #include "ITSUtilF.h"
  6. #include "AppGlobalF.h"
  7. #pragma hdrstop
  8. #include "VMSM530MF.h"
  9. #include "FrmVmsMsgFormMngrF.h"
  10. //---------------------------------------------------------------------------
  11. #pragma package(smart_init)
  12. #pragma link "cxButtons"
  13. #pragma link "cxCalendar"
  14. #pragma link "cxContainer"
  15. #pragma link "cxControls"
  16. #pragma link "cxDropDownEdit"
  17. #pragma link "cxEdit"
  18. #pragma link "cxGraphics"
  19. #pragma link "cxGroupBox"
  20. #pragma link "cxLabel"
  21. #pragma link "cxLookAndFeelPainters"
  22. #pragma link "cxLookAndFeels"
  23. #pragma link "cxMaskEdit"
  24. #pragma link "cxPC"
  25. #pragma link "cxPCdxBarPopupMenu"
  26. #pragma link "cxSpinEdit"
  27. #pragma link "cxSplitter"
  28. #pragma link "cxTextEdit"
  29. #pragma link "cxTimeEdit"
  30. #pragma link "dxSkinBlack"
  31. #pragma link "dxSkinBlue"
  32. #pragma link "dxSkinCaramel"
  33. #pragma link "dxSkinCoffee"
  34. #pragma link "dxSkinDarkRoom"
  35. #pragma link "dxSkinDarkSide"
  36. #pragma link "dxSkinFoggy"
  37. #pragma link "dxSkinGlassOceans"
  38. #pragma link "dxSkiniMaginary"
  39. #pragma link "dxSkinLilian"
  40. #pragma link "dxSkinLiquidSky"
  41. #pragma link "dxSkinLondonLiquidSky"
  42. #pragma link "dxSkinMcSkin"
  43. #pragma link "dxSkinMoneyTwins"
  44. #pragma link "dxSkinOffice2007Black"
  45. #pragma link "dxSkinOffice2007Blue"
  46. #pragma link "dxSkinOffice2007Green"
  47. #pragma link "dxSkinOffice2007Pink"
  48. #pragma link "dxSkinOffice2007Silver"
  49. #pragma link "dxSkinOffice2010Black"
  50. #pragma link "dxSkinOffice2010Blue"
  51. #pragma link "dxSkinOffice2010Silver"
  52. #pragma link "dxSkinsCore"
  53. #pragma link "dxSkinscxPCPainter"
  54. #pragma link "dxSkinSeven"
  55. #pragma link "dxSkinSharp"
  56. #pragma link "dxSkinSilver"
  57. #pragma link "dxSkinStardust"
  58. #pragma link "cxRadioGroup"
  59. #pragma link "cxClasses"
  60. #pragma link "cxCustomData"
  61. #pragma link "cxData"
  62. #pragma link "cxDataStorage"
  63. #pragma link "cxDBData"
  64. #pragma link "cxFilter"
  65. #pragma link "cxGrid"
  66. #pragma link "cxGridCustomTableView"
  67. #pragma link "cxGridCustomView"
  68. #pragma link "cxGridDBTableView"
  69. #pragma link "cxGridLevel"
  70. #pragma link "cxGridTableView"
  71. #pragma link "cxStyles"
  72. #pragma link "cxCheckBox"
  73. #pragma link "cxImage"
  74. #pragma link "cxButtonEdit"
  75. #pragma link "cxBlobEdit"
  76. #pragma link "VmsDesignerF"
  77. #pragma link "cxCalc"
  78. #pragma resource "*.dfm"
  79. TVMSM530M *VMSM530M = NULL;
  80. //---------------------------------------------------------------------------
  81. __fastcall TVMSM530M::TVMSM530M(TComponent* Owner)
  82. : TForm(Owner)
  83. {
  84. ITSSkin_Load(this);
  85. ////CMM_LoadForm(g_sFormsDir, this);
  86. FTitle = Caption;
  87. m_bSelected = false;
  88. PnlOrg->ParentColor = false;
  89. PnlCopy1->ParentColor = false;
  90. PnlOrg->Color = clBlack;
  91. PnlCopy1->Color = clBlack;
  92. //PnlCopyForm1->ParentColor = false;
  93. //PnlCopyForm1->Color = clBlack;
  94. }
  95. //---------------------------------------------------------------------------
  96. void __fastcall TVMSM530M::CommClose()
  97. {
  98. try {
  99. ////CMM_SaveForm(g_sFormsDir, this);
  100. SAFE_DELETE(m_pEdtDesigner1);
  101. SAFE_DELETE(m_pEdtDesigner2);
  102. CComm_Terminate();
  103. }
  104. catch(...) {
  105. }
  106. }
  107. //---------------------------------------------------------------------------
  108. void __fastcall TVMSM530M::FormShow(TObject *Sender)
  109. {
  110. int nResult = CComm_Initialize((long)Handle, g_AppCfg.PRCS_ID, "P04010", 0);
  111. m_pEdtDesigner1 = new TVmsFormDesigner(PnlCopyForm1);
  112. m_pEdtDesigner1->ApplicationHandle = (long)Handle;
  113. FOR_STL(TCDSFontColor*, pObj, CDSFontManager->FFontColors)
  114. {
  115. m_pEdtDesigner1->InitFontColor(pObj->VMS_FONT_COLR_CD, (TColor)pObj->VMS_FONT_COLR_VAL);
  116. }
  117. FOR_STL(TCDSBackColor*, pObj, CDSFontManager->FBackColors)
  118. {
  119. m_pEdtDesigner1->InitBackColor(pObj->VMS_BACK_COLR_CD, (TColor)pObj->VMS_BACK_COLR_VAL);
  120. }
  121. FOR_STL(TCDSFontName*, pObj, CDSFontManager->FFontNames)
  122. {
  123. m_pEdtDesigner1->InitFontName(pObj->VMS_FONT_NAME_CD, pObj->VMS_FONT_NAME_NM);
  124. }
  125. m_pEdtDesigner2 = new TVmsFormDesigner(PnlCopyForm2);
  126. m_pEdtDesigner2->ApplicationHandle = (long)Handle;
  127. FOR_STL(TCDSFontColor*, pObj, CDSFontManager->FFontColors)
  128. {
  129. m_pEdtDesigner2->InitFontColor(pObj->VMS_FONT_COLR_CD, (TColor)pObj->VMS_FONT_COLR_VAL);
  130. }
  131. FOR_STL(TCDSBackColor*, pObj, CDSFontManager->FBackColors)
  132. {
  133. m_pEdtDesigner2->InitBackColor(pObj->VMS_BACK_COLR_CD, (TColor)pObj->VMS_BACK_COLR_VAL);
  134. }
  135. FOR_STL(TCDSFontName*, pObj, CDSFontManager->FFontNames)
  136. {
  137. m_pEdtDesigner2->InitFontName(pObj->VMS_FONT_NAME_CD, pObj->VMS_FONT_NAME_NM);
  138. }
  139. Refresh();
  140. FormInit();
  141. TmrShow->Enabled = true;
  142. }
  143. //---------------------------------------------------------------------------
  144. void __fastcall TVMSM530M::FormInit()
  145. {
  146. if (!CenterCommManager) {
  147. CenterCommManager = new TCenterCommManager();
  148. }
  149. CenterCommManager->LoadFromDb(g_AppCfg.PRCS_ID);
  150. FCommCtrlTarget = CenterCommManager->FLists.Find("24"); // 긴급문안등록
  151. if (FVmsFormType == FORM_TYPE_EMER) {
  152. GrpMessage->Caption = "▶ 메시지 수동표출 *** 긴급메시지";
  153. }
  154. else {
  155. GrpMessage->Caption = "▶ 메시지 수동표출 *** 홍보메시지";
  156. }
  157. TDateTime dtEnd = Now() + ((double)1 / (double)24);
  158. DtStrDate->Date = Now();
  159. DtEndDate->Date = dtEnd;
  160. DtStrTime->Time = Now();
  161. DtEndTime->Time = dtEnd;
  162. BtnSaveMessage->Enabled = false;
  163. ChkCopy1->Checked = false;
  164. ChkCopy1->Enabled = false;
  165. BtnCenter1->Enabled = false;
  166. BtnFit1->Enabled = false;
  167. ChkCopy2->Checked = false;
  168. ChkCopy2->Enabled = false;
  169. BtnCenter2->Enabled = false;
  170. BtnFit2->Enabled = false;
  171. if (FVmsModlKind == "C0312_32") {
  172. GrpOrg->Caption = "▶ 폼 원본 (C0312_32) - " + FVmsFormId;
  173. GrpCopy1->Caption = "▶ 복사할 모듈 폼 (F0312_32)";
  174. GrpCopy2->Caption = "▶ 복사할 모듈 폼 (F0315_32)";
  175. formW = 384;
  176. formH = 96;
  177. copyW1 = 384;
  178. copyH1 = 96;
  179. copyW2 = 480;
  180. copyH2 = 96;
  181. FVmsModlKind_1 = "F0312_32";
  182. FVmsModlKind_2 = "F0315_32";
  183. }
  184. else
  185. if (FVmsModlKind == "F0312_32") {
  186. GrpOrg->Caption = "▶ 폼 원본 (F0312_32)";
  187. GrpCopy1->Caption = "▶ 복사할 모듈 폼 (C0312_32)";
  188. GrpCopy2->Caption = "▶ 복사할 모듈 폼 (F0315_32)";
  189. formW = 384;
  190. formH = 96;
  191. copyW1 = 384;
  192. copyH1 = 96;
  193. copyW2 = 480;
  194. copyH2 = 96;
  195. FVmsModlKind_1 = "C0312_32";
  196. FVmsModlKind_2 = "F0315_32";
  197. }
  198. else
  199. if (FVmsModlKind == "F0315_32") {
  200. GrpOrg->Caption = "▶ 폼 원본 (F0315_32)";
  201. GrpCopy1->Caption = "▶ 복사할 모듈 폼 (C0312_32)";
  202. GrpCopy2->Caption = "▶ 복사할 모듈 폼 (F0312_32)";
  203. formW = 480;
  204. formH = 96;
  205. copyW1 = 384;
  206. copyH1 = 96;
  207. copyW2 = 384;
  208. copyH2 = 96;
  209. FVmsModlKind_1 = "C0312_32";
  210. FVmsModlKind_2 = "F0312_32";
  211. }
  212. PnlOrg->Width = formW+4;
  213. PnlOrg->Height= formH+4;
  214. PnlCopy1->Width = copyW1+4;
  215. PnlCopy1->Height= copyH1+4;
  216. PnlCopy2->Width = copyW2+4;
  217. PnlCopy2->Height= copyH2+4;
  218. ImgOrg->Width = formW;
  219. ImgOrg->Height = formH;
  220. ImgOrg->Picture->Bitmap->Width = formW;
  221. ImgOrg->Picture->Bitmap->Height = formH;
  222. ImgOrg->Picture->Bitmap->Assign(ImgForm->Picture->Bitmap);
  223. m_pEdtDesigner1->Clear();
  224. m_pEdtDesigner1->SizeType = FVmsModlKind;
  225. m_pEdtDesigner1->SetSize(copyW1, copyH1);
  226. m_pEdtDesigner1->SetPos(0, 0);
  227. m_pEdtDesigner1->BkColorCode = FBkColorCode;
  228. m_pEdtDesigner1->SetBkColor(m_pEdtDesigner1->BkColorCode);
  229. m_pEdtDesigner1->EditMode = false;
  230. m_pEdtDesigner1->Show();
  231. m_pObj1 = m_pEdtDesigner1->AddObject(odtBmp);
  232. if (!m_pObj1) {
  233. String errMsg = "폼 복사 객체 처리 중에 오류가 발생했습니다.";
  234. Application->MessageBox(errMsg.c_str(), L"폼 복사 객체 추가 실패", MB_OK|MB_ICONERROR|MB_APPLMODAL);
  235. return;
  236. }
  237. m_pObj1->ObjSeq = 1;
  238. m_pObj1->ObjId = "1";
  239. m_pObj1->ObjKind = FORM_OBJ_KIND_IMAGE;
  240. m_pObj1->ObjType = m_pObj1->ObjKind;
  241. m_pObj1->ObjSize = 0;
  242. m_pObj1->ObjSize = ImgForm->Picture->Bitmap->Width * ImgForm->Picture->Bitmap->Height;
  243. m_pObj1->BkColorCode = m_pEdtDesigner1->BkColorCode;
  244. m_pObj1->Blink = false;
  245. m_pObj1->Tag = "N";
  246. m_pObj1->Text = "폼이미지";
  247. m_pObj1->ImageId = m_pObj1->ObjId;
  248. m_pObj1->SetSize(copyW1, copyH1);
  249. m_pObj1->GetImage()->AutoSize= false;
  250. m_pObj1->GetImage()->Stretch = true;
  251. m_pObj1->GetImage()->Width = copyW1;
  252. m_pObj1->GetImage()->Height = copyH1;
  253. m_pObj1->SetSize(copyW1, copyH1);
  254. m_pObj1->SetPos(0, 0);
  255. m_pObj1->GetImage()->Picture->LoadFromFile(FImageFileName);
  256. if (m_pObj1->Left < 0) m_pObj1->Left = 0;
  257. if (m_pObj1->Top < 0) m_pObj1->Top = 0;
  258. m_pObj1->Show();
  259. m_pObj1->BringToFront();
  260. m_pEdtDesigner2->Clear();
  261. m_pEdtDesigner2->SizeType = FVmsModlKind;
  262. m_pEdtDesigner2->SetSize(copyW2, copyH2);
  263. m_pEdtDesigner2->SetPos(0, 0);
  264. m_pEdtDesigner2->BkColorCode = FBkColorCode;
  265. m_pEdtDesigner2->SetBkColor(m_pEdtDesigner2->BkColorCode);
  266. m_pEdtDesigner2->EditMode = false;
  267. m_pEdtDesigner2->Show();
  268. m_pObj2 = m_pEdtDesigner2->AddObject(odtBmp);
  269. if (!m_pObj2) {
  270. String errMsg = "폼 복사 객체 처리 중에 오류가 발생했습니다.";
  271. Application->MessageBox(errMsg.c_str(), L"폼 복사 객체 추가 실패", MB_OK|MB_ICONERROR|MB_APPLMODAL);
  272. return;
  273. }
  274. m_pObj2->ObjSeq = 1;
  275. m_pObj2->ObjId = "1";
  276. m_pObj2->ObjKind = FORM_OBJ_KIND_IMAGE;
  277. m_pObj2->ObjType = m_pObj2->ObjKind;
  278. m_pObj2->ObjSize = 0;
  279. m_pObj2->ObjSize = ImgForm->Picture->Bitmap->Width * ImgForm->Picture->Bitmap->Height;
  280. m_pObj2->BkColorCode = m_pEdtDesigner2->BkColorCode;
  281. m_pObj2->Blink = false;
  282. m_pObj2->Tag = "N";
  283. m_pObj2->Text = "폼이미지";
  284. m_pObj2->ImageId = m_pObj2->ObjId;
  285. m_pObj2->SetSize(copyW2, copyH2);
  286. m_pObj2->GetImage()->AutoSize= false;
  287. m_pObj2->GetImage()->Stretch = true;
  288. m_pObj2->GetImage()->Width = copyW2;
  289. m_pObj2->GetImage()->Height = copyH2;
  290. m_pObj2->SetSize(copyW2, copyH2);
  291. m_pObj2->SetPos(0, 0);
  292. m_pObj2->GetImage()->Picture->LoadFromFile(FImageFileName);
  293. if (m_pObj2->Left < 0) m_pObj2->Left = 0;
  294. if (m_pObj2->Top < 0) m_pObj2->Top = 0;
  295. m_pObj2->Show();
  296. m_pObj2->BringToFront();
  297. ChkCopy1->Checked = true;
  298. ChkCopy1->Enabled = true;
  299. BtnCenter1->Enabled = true;
  300. BtnFit1->Enabled = true;
  301. ChkCopy2->Checked = true;
  302. ChkCopy2->Enabled = true;
  303. BtnCenter2->Enabled = true;
  304. BtnFit2->Enabled = true;
  305. m_pGDC = TvList->DataController;
  306. CMM_ClearGridTableView(TvList);
  307. TvList->BeginUpdate();
  308. try {
  309. VmsCtlrManager->FLists.Lock();
  310. FillVmsListByModlType(FVmsModlKind, FVmsFormId);
  311. FillVmsListByModlType(FVmsModlKind_1, "");
  312. FillVmsListByModlType(FVmsModlKind_2, "");
  313. }
  314. __finally
  315. {
  316. VmsCtlrManager->FLists.UnLock();
  317. TvList->EndUpdate();
  318. TvList->DataController->GotoFirst();
  319. TvList->DataController->FocusedRecordIndex = 0;
  320. }
  321. }
  322. //---------------------------------------------------------------------------
  323. void __fastcall TVMSM530M::FillVmsListByModlType(String AModlType, String AFormId)
  324. {
  325. int nRow = 0;
  326. FOR_STL(TVmsCtlr*, pObj, VmsCtlrManager->FLists)
  327. {
  328. if (pObj->USE_YN != "Y") continue;
  329. if (pObj->VMS_MODL_KIND != AModlType) continue;
  330. nRow = m_pGDC->AppendRecord();
  331. m_pGDC->Values[nRow][ColumnSel->Index] = true;
  332. m_pGDC->Values[nRow][Column00->Index] = "-";
  333. m_pGDC->Values[nRow][Column01->Index] = pObj->VMS_CTLR_ID;
  334. m_pGDC->Values[nRow][Column02->Index] = pObj->VMS_NM;
  335. m_pGDC->Values[nRow][Column03->Index] = pObj->VMS_TYPE_NM;
  336. m_pGDC->Values[nRow][Column11->Index] = pObj->LCS_CTLR_ID;
  337. m_pGDC->Values[nRow][Column12->Index] = pObj->VMS_MODL_KIND;
  338. m_pGDC->Values[nRow][Column13->Index] = AFormId;
  339. m_pGDC->Values[nRow][Column99->Index] = (int)pObj;
  340. }
  341. }
  342. //---------------------------------------------------------------------------
  343. void __fastcall TVMSM530M::UpdateVmsFormId(String AModlType, String AFormId)
  344. {
  345. try {
  346. TvList->BeginUpdate();
  347. try {
  348. for(int nRow = 0; nRow < m_pGDC->RecordCount; nRow++) {
  349. String sVmsModlKind = VarToStr(m_pGDC->Values[nRow][Column12->Index]);
  350. if (AModlType == sVmsModlKind) {
  351. m_pGDC->Values[nRow][Column13->Index] = AFormId;
  352. }
  353. }
  354. }
  355. catch(Exception &e) {
  356. }
  357. }
  358. __finally {
  359. TvList->EndUpdate();
  360. }
  361. }
  362. //---------------------------------------------------------------------------
  363. void __fastcall TVMSM530M::TmrShowTimer(TObject *Sender)
  364. {
  365. TmrShow->Enabled = false;
  366. }
  367. //---------------------------------------------------------------------------
  368. void __fastcall TVMSM530M::BtnCloseClick(TObject *Sender)
  369. {
  370. Close();
  371. }
  372. //---------------------------------------------------------------------------
  373. void __fastcall TVMSM530M::FormClose(TObject *Sender, TCloseAction &Action)
  374. {
  375. CommClose();
  376. VMSM530M = NULL;
  377. Action = caFree;
  378. }
  379. //---------------------------------------------------------------------------
  380. void __fastcall TVMSM530M::BtnCenter1Click(TObject *Sender)
  381. {
  382. TcxButton *pBtn = (TcxButton*)Sender;
  383. if (pBtn->Tag == 0) {
  384. m_pObj1->GetImage()->AutoSize= false;
  385. m_pObj1->GetImage()->Stretch = false;
  386. m_pObj1->GetImage()->Center = true;
  387. }
  388. else {
  389. m_pObj2->GetImage()->AutoSize= false;
  390. m_pObj2->GetImage()->Stretch = false;
  391. m_pObj2->GetImage()->Center = true;
  392. }
  393. EdFocus->SetFocus();
  394. }
  395. //---------------------------------------------------------------------------
  396. void __fastcall TVMSM530M::BtnFit1Click(TObject *Sender)
  397. {
  398. TcxButton *pBtn = (TcxButton*)Sender;
  399. if (pBtn->Tag == 0) {
  400. m_pObj1->GetImage()->AutoSize= false;
  401. m_pObj1->GetImage()->Stretch = true;
  402. m_pObj1->GetImage()->Transparent = false;
  403. }
  404. else {
  405. m_pObj2->GetImage()->AutoSize= false;
  406. m_pObj2->GetImage()->Stretch = true;
  407. m_pObj2->GetImage()->Transparent = false;
  408. }
  409. EdFocus->SetFocus();
  410. }
  411. //---------------------------------------------------------------------------
  412. int __fastcall TVMSM530M::GetImageFileSize(String AFileName)
  413. {
  414. int nImageSize = 0;
  415. TMemoryStream *pPicStream = new TMemoryStream();
  416. try {
  417. try {
  418. pPicStream->LoadFromFile(AFileName);
  419. nImageSize = pPicStream->Size;
  420. }
  421. catch(Exception &e) {
  422. String errMsg = "이미지 파일 처리 중에 오류가 발생했습니다.\r\n" + e.Message;
  423. Application->MessageBox(errMsg.c_str(), L"이미지 파일 크기 확인 실패", MB_OK|MB_ICONERROR|MB_APPLMODAL);
  424. return nImageSize;
  425. }
  426. }
  427. __finally {
  428. SAFE_DELETE(pPicStream);
  429. }
  430. return nImageSize;
  431. }
  432. //---------------------------------------------------------------------------
  433. void __fastcall TVMSM530M::BtnSaveClick(TObject *Sender)
  434. {
  435. if (!ChkCopy1->Checked && !ChkCopy2->Checked) {
  436. String errMsg = "폼을 복사 할 모듈이 선택 되지 않았습니다.\r\n복사할 모듈 폼에서 '폼 저장' 을 체크해 주세요.";
  437. Application->MessageBox(errMsg.c_str(), L"모듈 폼 복사 추가", MB_OK|MB_ICONERROR|MB_APPLMODAL);
  438. return;
  439. }
  440. bool bResult = false;
  441. ITSDb_GetConnection()->BeginTrans();
  442. if (ChkCopy1->Checked) {
  443. m_pEdtDesigner1->GetVmsFormImage(ImgCopy1);
  444. VMS_FORM_ID_1 = FrmVmsMsgFormMngr->GetNextVmsFormId(FVmsFormType);
  445. PICT_VMS_FORM_OBJ_ID_1 = FrmVmsMsgFormMngr->GetNewVmsFormPictObjId();
  446. String imageFileName;
  447. String saveDirPath = TPath::GetTempPath() + "VMS\\";
  448. ForceDirectories(saveDirPath.c_str());
  449. imageFileName = saveDirPath + VMS_FORM_ID_1 + "_8.bmp";
  450. ImgCopy1->Picture->SaveToFile(imageFileName);
  451. int nImageSize = GetImageFileSize(imageFileName);
  452. if (!FrmVmsMsgFormMngr->InsertVmsSymbLib(PICT_VMS_FORM_OBJ_ID_1, VMS_FORM_ID_1, "B", nImageSize, copyW1, copyH1, "Y", imageFileName)) {
  453. Application->MessageBox(L"VMS 모듈 폼 오브젝트 추가 실패\r\nVMS 모듈 폼 정보를 복사 추가 하는데 실패 하였습니다.",
  454. FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  455. ITSDb_GetConnection()->RollbackTrans();
  456. return;
  457. }
  458. bResult = SaveVmsForm(VMS_FORM_ID_1, FVmsModlKind_1, ImgCopy1);
  459. if (bResult) {
  460. bResult = SaveVmsFormObject(VMS_FORM_ID_1, FVmsModlKind_1, PICT_VMS_FORM_OBJ_ID_1, copyW1, copyH1, ChkBlinking1->Checked ? "Y" : "N");
  461. }
  462. }
  463. if (ChkCopy2->Checked) {
  464. m_pEdtDesigner2->GetVmsFormImage(ImgCopy2);
  465. VMS_FORM_ID_2 = FrmVmsMsgFormMngr->GetNextVmsFormId(FVmsFormType);
  466. PICT_VMS_FORM_OBJ_ID_2 = FrmVmsMsgFormMngr->GetNewVmsFormPictObjId();
  467. String imageFileName;
  468. String saveDirPath = TPath::GetTempPath() + "VMS\\";
  469. ForceDirectories(saveDirPath.c_str());
  470. imageFileName = saveDirPath + VMS_FORM_ID_2 + "_8.bmp";
  471. ImgCopy2->Picture->SaveToFile(imageFileName);
  472. int nImageSize = GetImageFileSize(imageFileName);
  473. if (!FrmVmsMsgFormMngr->InsertVmsSymbLib(PICT_VMS_FORM_OBJ_ID_2, VMS_FORM_ID_2, "B", nImageSize, copyW2, copyH2, "Y", imageFileName)) {
  474. Application->MessageBox(L"VMS 모듈 폼 오브젝트 추가 실패\r\nVMS 모듈 폼 정보를 복사 추가 하는데 실패 하였습니다.",
  475. FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  476. ITSDb_GetConnection()->RollbackTrans();
  477. return;
  478. }
  479. bResult = SaveVmsForm(VMS_FORM_ID_2, FVmsModlKind_2, ImgCopy2);
  480. if (bResult) {
  481. bResult = SaveVmsFormObject(VMS_FORM_ID_2, FVmsModlKind_2, PICT_VMS_FORM_OBJ_ID_2, copyW2, copyH2, ChkBlinking2->Checked ? "Y" : "N");
  482. }
  483. }
  484. if (bResult) {
  485. ITSDb_GetConnection()->CommitTrans();
  486. Application->MessageBox(L"VMS 모듈 폼 복사 추가\r\nVMS 모듈 폼 정보를 복사 추가 하였습니다.",
  487. FTitle.c_str(),
  488. MB_OK|MB_ICONINFORMATION|MB_APPLMODAL);
  489. if (ChkCopy1->Checked) {
  490. GrpCopy1->Caption = GrpCopy1->Caption + " - " + VMS_FORM_ID_1;
  491. UpdateVmsFormId(FVmsModlKind_1, VMS_FORM_ID_1);
  492. }
  493. if (ChkCopy2->Checked) {
  494. GrpCopy2->Caption = GrpCopy2->Caption + " - " + VMS_FORM_ID_2;
  495. UpdateVmsFormId(FVmsModlKind_2, VMS_FORM_ID_2);
  496. }
  497. BtnSave->Enabled = false;
  498. BtnSaveMessage->Enabled = true;
  499. }
  500. else {
  501. ITSDb_GetConnection()->RollbackTrans();
  502. Application->MessageBox(L"VMS 모듈 폼 복사 추가 실패\r\nVMS 모듈 폼 정보를 복사 추가 하는데 실패 하였습니다.",
  503. FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  504. }
  505. }
  506. //---------------------------------------------------------------------------
  507. bool __fastcall TVMSM530M::SaveVmsForm(String AVMS_FORM_ID, String AVMS_MODL_KIND, TImage *AImgForm)
  508. {
  509. String sQry;
  510. TADOQuery *pADO = NULL;
  511. String VMS_FORM_ID = AVMS_FORM_ID;
  512. String VMS_MODL_KIND = AVMS_MODL_KIND;
  513. String VMS_FORM_TYPE = FVmsFormType;
  514. String VMS_FORM_NM = FVmsFormNm;
  515. String DSPL_EFF = FDsplEff;
  516. int DSPL_HR = FDsplHr;
  517. String BACK_CLR = FBkColorCode;
  518. String OPER_ID = g_AppCfg.OPER_ID;
  519. if (BACK_CLR == "0") BACK_CLR = "00";
  520. sQry = "MERGE INTO TB_VMS_FORM L \r\n"
  521. "USING (SELECT :p01 AS VMS_FORM_ID, \r\n"
  522. " :p02 AS VMS_MODL_KIND, \r\n"
  523. " :p03 AS VMS_FORM_TYPE, \r\n"
  524. " :p04 AS VMS_FORM_NM, \r\n"
  525. " :p05 AS DSPL_EFF, \r\n"
  526. " :p06 AS DSPL_HR, \r\n"
  527. " :p07 AS BACK_CLR, \r\n"
  528. " :p08 AS OPER_ID \r\n"
  529. " FROM DUAL) M \r\n"
  530. " ON (L.VMS_FORM_ID = M.VMS_FORM_ID) \r\n"
  531. "WHEN MATCHED THEN \r\n"
  532. " UPDATE SET L.VMS_MODL_KIND = M.VMS_MODL_KIND, \r\n"
  533. " L.VMS_FORM_TYPE = M.VMS_FORM_TYPE, \r\n"
  534. " L.VMS_FORM_NM = M.VMS_FORM_NM, \r\n"
  535. " L.DSPL_EFF = M.DSPL_EFF, \r\n"
  536. " L.DSPL_HR = M.DSPL_HR, \r\n"
  537. " L.BACK_CLR = M.BACK_CLR, \r\n"
  538. " L.CHNGR_ID = M.OPER_ID, \r\n"
  539. " L.CHG_DT = SYSDATE \r\n"
  540. "WHEN NOT MATCHED THEN \r\n"
  541. " INSERT (VMS_FORM_ID, \r\n"
  542. " VMS_MODL_KIND, \r\n"
  543. " VMS_FORM_TYPE, \r\n"
  544. " VMS_FORM_NM, \r\n"
  545. " DSPL_EFF, \r\n"
  546. " DSPL_HR, \r\n"
  547. " BACK_CLR, \r\n"
  548. " RGSTR_ID, \r\n"
  549. " REG_DT ) \r\n"
  550. " VALUES (M.VMS_FORM_ID, \r\n"
  551. " M.VMS_MODL_KIND, \r\n"
  552. " M.VMS_FORM_TYPE, \r\n"
  553. " M.VMS_FORM_NM, \r\n"
  554. " M.DSPL_EFF, \r\n"
  555. " M.DSPL_HR, \r\n"
  556. " M.BACK_CLR, \r\n"
  557. " M.OPER_ID, \r\n"
  558. " SYSDATE ) \r\n";
  559. TMemoryStream *dataStream = new TMemoryStream();
  560. AImgForm->Picture->Bitmap->SaveToStream(dataStream);
  561. try {
  562. try {
  563. pADO = new TADOQuery(NULL);
  564. pADO->Close();
  565. pADO->Connection = ITSDb_GetConnection();
  566. ITSDb_SQLText(pADO, sQry);
  567. pADO->Parameters->ParamByName("p01")->Value = VMS_FORM_ID;
  568. pADO->Parameters->ParamByName("p02")->Value = VMS_MODL_KIND;
  569. pADO->Parameters->ParamByName("p03")->Value = VMS_FORM_TYPE;
  570. pADO->Parameters->ParamByName("p04")->Value = VMS_FORM_NM;
  571. pADO->Parameters->ParamByName("p05")->DataType = ftString;
  572. pADO->Parameters->ParamByName("p05")->Value = DSPL_EFF;
  573. pADO->Parameters->ParamByName("p06")->Value = DSPL_HR;
  574. pADO->Parameters->ParamByName("p07")->DataType = ftString;
  575. pADO->Parameters->ParamByName("p07")->Value = BACK_CLR;
  576. pADO->Parameters->ParamByName("p08")->DataType = ftString;
  577. pADO->Parameters->ParamByName("p08")->Value = OPER_ID;
  578. ITSDb_SQLExec(pADO);
  579. sQry = "UPDATE TB_VMS_FORM \r\n"
  580. " SET VMS_FORM_IMG = :p02 \r\n"
  581. " WHERE VMS_FORM_ID = :p01 \r\n";
  582. ITSDb_SQLText(pADO, sQry);
  583. ITSDb_SQLBind(pADO, "p01", VMS_FORM_ID);
  584. if (dataStream->Size == 0) {
  585. ITSDb_SQLBind(pADO, "p01", "");
  586. }
  587. else {
  588. pADO->Parameters->ParamByName("p02")->LoadFromStream(dataStream, ftBlob);
  589. }
  590. ITSDb_SQLExec(pADO);
  591. return true;
  592. }
  593. catch(EDatabaseError &E) {
  594. DBERRORMSG("TVMSM530M::SaveVmsForm", String(E.ClassName()), E.Message, sQry);
  595. return false;
  596. }
  597. catch(Exception &e)
  598. {
  599. DBERRORMSG("TVMSM530M::SaveVmsForm", String(e.ClassName()), e.Message, sQry);
  600. return false;
  601. }
  602. }
  603. __finally
  604. {
  605. if (pADO)
  606. {
  607. pADO->Close();
  608. delete pADO;
  609. }
  610. if (dataStream) delete dataStream;
  611. dataStream = NULL;
  612. }
  613. return true;
  614. }
  615. //---------------------------------------------------------------------------
  616. bool __fastcall TVMSM530M::SaveVmsFormObject(String AVMS_FORM_ID, String AVMS_MODL_KIND, String AVMS_FORM_OBJ_ID, int AWdth, int AHght, String AFORM_OBJ_BLNK_YN)
  617. {
  618. String sQry;
  619. TADOQuery *pADO = NULL;
  620. String VMS_FORM_ID = AVMS_FORM_ID;
  621. int SN = 1;
  622. String VMS_FORM_OBJ_KIND = FORM_OBJ_KIND_IMAGE;
  623. String VMS_FORM_OBJ_ID = AVMS_FORM_OBJ_ID;
  624. String BACK_CLR = "00";
  625. int FORM_OBJ_PSTN_X = 0;
  626. int FORM_OBJ_PSTN_Y = 0;
  627. int FORM_OBJ_DSPL_WDTH = AWdth;
  628. int FORM_OBJ_DSPL_HGHT = AHght;
  629. String FORM_OBJ_BLNK_YN = AFORM_OBJ_BLNK_YN;
  630. try {
  631. try {
  632. pADO = new TADOQuery(NULL);
  633. pADO->Close();
  634. pADO->Connection = ITSDb_GetConnection();
  635. // 폼 오브젝트 구성정보 저장
  636. sQry = "INSERT INTO TB_VMS_FORM_VMS_FORM_OBJ ( \r\n"
  637. " VMS_FORM_ID, \r\n"
  638. " SN, \r\n"
  639. " VMS_FORM_OBJ_KIND, \r\n"
  640. " VMS_FORM_OBJ_ID, \r\n"
  641. " BACK_CLR, \r\n"
  642. " FORM_OBJ_PSTN_X, \r\n"
  643. " FORM_OBJ_PSTN_Y, \r\n"
  644. " FORM_OBJ_DSPL_WDTH, \r\n"
  645. " FORM_OBJ_DSPL_HGHT, \r\n"
  646. " FORM_OBJ_BLNK_YN ) \r\n"
  647. " VALUES ( \r\n"
  648. " :p01, \r\n"
  649. " :p02, \r\n"
  650. " :p03, \r\n"
  651. " :p04, \r\n"
  652. " :p05, \r\n"
  653. " :p06, \r\n"
  654. " :p07, \r\n"
  655. " :p08, \r\n"
  656. " :p09, \r\n"
  657. " :p10 ) \r\n";
  658. ITSDb_SQLText(pADO, sQry);
  659. pADO->Parameters->ParamByName("p01")->Value = VMS_FORM_ID;
  660. pADO->Parameters->ParamByName("p02")->Value = SN;
  661. pADO->Parameters->ParamByName("p03")->Value = VMS_FORM_OBJ_KIND;
  662. pADO->Parameters->ParamByName("p04")->Value = VMS_FORM_OBJ_ID;
  663. pADO->Parameters->ParamByName("p05")->Value = BACK_CLR;
  664. pADO->Parameters->ParamByName("p06")->Value = FORM_OBJ_PSTN_X;
  665. pADO->Parameters->ParamByName("p07")->Value = FORM_OBJ_PSTN_Y;
  666. pADO->Parameters->ParamByName("p08")->Value = FORM_OBJ_DSPL_WDTH;
  667. pADO->Parameters->ParamByName("p09")->Value = FORM_OBJ_DSPL_HGHT;
  668. pADO->Parameters->ParamByName("p10")->Value = FORM_OBJ_BLNK_YN;
  669. ITSDb_SQLExec(pADO);
  670. }
  671. catch(EDatabaseError &E) {
  672. DBERRORMSG("TVMSM530M::SaveVmsFormObject", String(E.ClassName()), E.Message, sQry);
  673. return false;
  674. }
  675. catch(Exception &e) {
  676. DBERRORMSG("TVMSM530M::SaveVmsFormObject", String(e.ClassName()), e.Message, sQry);
  677. return false;
  678. }
  679. }
  680. __finally {
  681. if (pADO) {
  682. pADO->Close();
  683. delete pADO;
  684. }
  685. }
  686. return true;
  687. }
  688. //---------------------------------------------------------------------------
  689. void __fastcall TVMSM530M::BtnAllSelectClick(TObject *Sender)
  690. {
  691. TcxButton *pBtn = (TcxButton*)Sender;
  692. CMM_CheckAllListItem(TvList, ColumnSel->Index, pBtn->Tag);
  693. }
  694. //---------------------------------------------------------------------------
  695. void __fastcall TVMSM530M::BtnSaveMessageClick(TObject *Sender)
  696. {
  697. int nSelCnt = GetSelListItems();
  698. if (0 == nSelCnt)
  699. {
  700. Application->MessageBox(L"VMS가 선택되지 않았거나 선택된 VMS에서 VMS 폼 ID 정보가 없습니다.\r\nVMS 목록에서 선택한 VMS와 VMS 폼 ID를 확인 하십시요.",
  701. FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  702. CxList->SetFocus();
  703. return;
  704. }
  705. FStrDay = DtStrDate->Date.FormatString("yyyymmdd");
  706. FStrTime = DtStrTime->DateTime.FormatString("HHnn");
  707. FEndDay = DtEndDate->Date.FormatString("yyyymmdd");
  708. FEndTime = DtEndTime->DateTime.FormatString("HHnn");
  709. String sStrTime = FStrDay + FStrTime;
  710. String sEndTime = FEndDay + FEndTime;
  711. if (sStrTime > sEndTime) {
  712. Application->MessageBox(L"표출 시작시각이 표출 종료시각 보다 큽니다.",
  713. FTitle.c_str(),
  714. MB_OK|MB_ICONWARNING|MB_APPLMODAL);
  715. ActiveControl = DtStrDate;
  716. return;
  717. }
  718. FWeek = "";
  719. FWeek = FWeek + (ChkWeek0->Checked ? "1" : "0");
  720. FWeek = FWeek + (ChkWeek1->Checked ? "1" : "0");
  721. FWeek = FWeek + (ChkWeek2->Checked ? "1" : "0");
  722. FWeek = FWeek + (ChkWeek3->Checked ? "1" : "0");
  723. FWeek = FWeek + (ChkWeek4->Checked ? "1" : "0");
  724. FWeek = FWeek + (ChkWeek5->Checked ? "1" : "0");
  725. FWeek = FWeek + (ChkWeek6->Checked ? "1" : "0");
  726. bool bResult;
  727. if (FVmsFormType == FORM_TYPE_EMER) {
  728. if (Application->MessageBox(L"[[[ 메시지 수동표출 *** 긴급메시지 *** ]]]\r\n긴급메시지를 수동으로 표출하는 경우 현재 메시지가 단독으로 표출됩니다.\r\n긴급메시지 수동표출을 진행하시겠습니까?",
  729. FTitle.c_str(), MB_YESNO|MB_ICONQUESTION|MB_APPLMODAL) != IDYES) return;
  730. }
  731. BtnSaveMessage->Enabled = false;
  732. ITSDb_GetConnection()->BeginTrans();
  733. if (FVmsFormType == FORM_TYPE_EMER) {
  734. FCommCtrlTarget = CenterCommManager->FLists.Find("24"); // 긴급문안등록
  735. bResult = SaveEmerForm();
  736. }
  737. else {
  738. FCommCtrlTarget = CenterCommManager->FLists.Find("22"); // VMS표출문안 등록 알림
  739. bResult = SavePubrForm();
  740. }
  741. if (!bResult) {
  742. ITSDb_GetConnection()->RollbackTrans();
  743. return;
  744. }
  745. ITSDb_GetConnection()->CommitTrans();
  746. if (FVmsFormType == FORM_TYPE_PUBR) {
  747. if (FCommCtrlTarget != NULL) {
  748. FOR_STL(TCommInfo*, pCommInfo, FCommCtrlTarget->FLists) {
  749. int sendResult = CComm_VmsNotiRegDsplMsg(pCommInfo->SRVR_IP, pCommInfo->CMNC_PORT);
  750. if (VERR_NONE == sendResult) {
  751. }
  752. Sleep(200);
  753. }
  754. }
  755. }
  756. // OK
  757. Application->MessageBox(L"VMS 메시지 수동표출을 정상적으로 저장 하였습니다",
  758. FTitle.c_str(), MB_OK|MB_ICONINFORMATION|MB_APPLMODAL);
  759. }
  760. //---------------------------------------------------------------------------
  761. bool __fastcall TVMSM530M::SavePubrForm()
  762. {
  763. String sQry;
  764. TADOQuery *pADO = NULL;
  765. try {
  766. TvList->BeginUpdate();
  767. int nRows = TvList->ViewData->RecordCount;
  768. try {
  769. pADO = new TADOQuery(NULL);
  770. pADO->Close();
  771. pADO->Connection = ITSDb_GetConnection();
  772. #if 0
  773. sQry = "INSERT INTO TB_VMS_PUBRL_FORM ( \r\n"
  774. " VMS_CTLR_ID, \r\n"
  775. " VMS_FORM_ID, \r\n"
  776. " DSPL_BGN_YMD, \r\n"
  777. " DSPL_FNSH_YMD, \r\n"
  778. " DSPL_WEEK, \r\n"
  779. " DSPL_BGN_HM, \r\n"
  780. " DSPL_FNSH_HM, \r\n"
  781. " RGSTR_ID, \r\n"
  782. " REG_DT ) \r\n"
  783. " VALUES ( \r\n"
  784. " :p01, \r\n"
  785. " :p02, \r\n"
  786. " :p03, \r\n"
  787. " :p04, \r\n"
  788. " :p05, \r\n"
  789. " :p06, \r\n"
  790. " :p07, \r\n"
  791. " :p08, \r\n"
  792. " SYSDATE ) \r\n";
  793. #else
  794. sQry = "MERGE INTO TB_VMS_PUBRL_FORM L \r\n"
  795. "USING (SELECT \r\n"
  796. " :p01 AS VMS_CTLR_ID, \r\n"
  797. " :p02 AS VMS_FORM_ID, \r\n"
  798. " :p03 AS DSPL_BGN_YMD, \r\n"
  799. " :p04 AS DSPL_FNSH_YMD, \r\n"
  800. " :p05 AS DSPL_WEEK, \r\n"
  801. " :p06 AS DSPL_BGN_HM, \r\n"
  802. " :p07 AS DSPL_FNSH_HM, \r\n"
  803. " :p08 AS RGSTR_ID, \r\n"
  804. " SYSDATE AS REG_DT \r\n"
  805. " FROM DUAL) M \r\n"
  806. " ON (L.VMS_CTLR_ID = M.VMS_CTLR_ID \r\n"
  807. " AND L.VMS_FORM_ID = M.VMS_FORM_ID) \r\n"
  808. "WHEN MATCHED THEN \r\n"
  809. " UPDATE SET \r\n"
  810. " L.DSPL_BGN_YMD = M.DSPL_BGN_YMD, \r\n"
  811. " L.DSPL_FNSH_YMD = M.DSPL_FNSH_YMD, \r\n"
  812. " L.DSPL_WEEK = M.DSPL_WEEK, \r\n"
  813. " L.DSPL_BGN_HM = M.DSPL_BGN_HM, \r\n"
  814. " L.DSPL_FNSH_HM = M.DSPL_FNSH_HM, \r\n"
  815. " L.CHNGR_ID = M.RGSTR_ID, \r\n"
  816. " L.CHG_DT = M.REG_DT \r\n"
  817. "WHEN NOT MATCHED THEN \r\n"
  818. " INSERT ( \r\n"
  819. " VMS_CTLR_ID, \r\n"
  820. " VMS_FORM_ID, \r\n"
  821. " DSPL_BGN_YMD, \r\n"
  822. " DSPL_FNSH_YMD, \r\n"
  823. " DSPL_WEEK, \r\n"
  824. " DSPL_BGN_HM, \r\n"
  825. " DSPL_FNSH_HM, \r\n"
  826. " RGSTR_ID, \r\n"
  827. " REG_DT ) \r\n"
  828. " VALUES ( \r\n"
  829. " M.VMS_CTLR_ID, \r\n"
  830. " M.VMS_FORM_ID, \r\n"
  831. " M.DSPL_BGN_YMD, \r\n"
  832. " M.DSPL_FNSH_YMD, \r\n"
  833. " M.DSPL_WEEK, \r\n"
  834. " M.DSPL_BGN_HM, \r\n"
  835. " M.DSPL_FNSH_HM, \r\n"
  836. " M.RGSTR_ID, \r\n"
  837. " M.REG_DT ) \r\n";
  838. #endif
  839. ITSDb_SQLText(pADO, sQry);
  840. for (int ii = 0; ii < nRows; ii++) {
  841. String VMS_FORM_ID;
  842. TcxCustomGridRow* ARow = TvList->ViewData->Rows[ii];
  843. bool bSelected = (bool)ARow->Values[ColumnSel->Index];
  844. if (bSelected) {
  845. VMS_FORM_ID = VarToStr(ARow->Values[Column13->Index]);
  846. if (VMS_FORM_ID == "") {
  847. continue;
  848. }
  849. }
  850. String VMS_CTLR_ID = VarToStr(ARow->Values[Column01->Index]);
  851. pADO->Parameters->ParamByName("p01")->Value = VMS_CTLR_ID;
  852. pADO->Parameters->ParamByName("p02")->Value = VMS_FORM_ID;
  853. pADO->Parameters->ParamByName("p03")->Value = FStrDay;
  854. pADO->Parameters->ParamByName("p04")->Value = FEndDay;
  855. pADO->Parameters->ParamByName("p05")->Value = FWeek;
  856. pADO->Parameters->ParamByName("p06")->Value = FStrTime;
  857. pADO->Parameters->ParamByName("p07")->Value = FEndTime;
  858. pADO->Parameters->ParamByName("p08")->Value = g_AppCfg.OPER_ID;
  859. ITSDb_SQLExec(pADO);
  860. }
  861. }
  862. catch(EDatabaseError &E) {
  863. DBERRORMSG("TVMSM530M::SavePubrForm", String(E.ClassName()), E.Message, sQry);
  864. return false;
  865. }
  866. catch(Exception &e)
  867. {
  868. DBERRORMSG("TVMSM530M::SavePubrForm", String(e.ClassName()), e.Message, sQry);
  869. return false;
  870. }
  871. }
  872. __finally {
  873. TvList->EndUpdate();
  874. if (pADO) {
  875. pADO->Close();
  876. delete pADO;
  877. }
  878. }
  879. return true;
  880. }
  881. //---------------------------------------------------------------------------
  882. bool __fastcall TVMSM530M::SaveEmerForm()
  883. {
  884. String sQry;
  885. TADOQuery *pADO = NULL;
  886. try {
  887. TvList->BeginUpdate();
  888. int nRows = TvList->ViewData->RecordCount;
  889. try {
  890. pADO = new TADOQuery(NULL);
  891. pADO->Close();
  892. pADO->Connection = ITSDb_GetConnection();
  893. #if 0
  894. sQry = "INSERT INTO TB_VMS_EMGNC_FORM ( \r\n"
  895. " VMS_CTLR_ID, \r\n"
  896. " VMS_FORM_ID, \r\n"
  897. " DSPL_BGN_DT, \r\n"
  898. " DSPL_FNSH_DT, \r\n"
  899. " RGSTR_ID, \r\n"
  900. " REG_DT ) \r\n"
  901. " VALUES ( \r\n"
  902. " :p01, \r\n"
  903. " :p02, \r\n"
  904. " :p03, \r\n"
  905. " :p04, \r\n"
  906. " :p08, \r\n"
  907. " SYSDATE ) \r\n";
  908. #else
  909. sQry = "MERGE INTO TB_VMS_EMGNC_FORM L \r\n"
  910. "USING (SELECT \r\n"
  911. " :p01 AS VMS_CTLR_ID, \r\n"
  912. " :p02 AS VMS_FORM_ID, \r\n"
  913. " :p03 AS DSPL_BGN_DT, \r\n"
  914. " :p04 AS DSPL_FNSH_DT, \r\n"
  915. " :p08 AS RGSTR_ID, \r\n"
  916. " SYSDATE AS REG_DT \r\n"
  917. " FROM DUAL) M \r\n"
  918. " ON (L.VMS_CTLR_ID = M.VMS_CTLR_ID \r\n"
  919. " AND L.VMS_FORM_ID = M.VMS_FORM_ID \r\n"
  920. " AND TO_CHAR(L.DSPL_BGN_DT, \r\n"
  921. " 'YYYYMMDDHH24MISS') = M.DSPL_BGN_DT) \r\n"
  922. "WHEN MATCHED THEN \r\n"
  923. " UPDATE SET \r\n"
  924. " L.DSPL_FNSH_DT = \r\n"
  925. " TO_DATE(M.DSPL_FNSH_DT, 'YYYYMMDDHH24MISS'), \r\n"
  926. " L.RGSTR_ID = M.RGSTR_ID, \r\n"
  927. " L.REG_DT = M.REG_DT \r\n"
  928. "WHEN NOT MATCHED THEN \r\n"
  929. " INSERT ( \r\n"
  930. " VMS_CTLR_ID, \r\n"
  931. " VMS_FORM_ID, \r\n"
  932. " DSPL_BGN_DT, \r\n"
  933. " DSPL_FNSH_DT, \r\n"
  934. " RGSTR_ID, \r\n"
  935. " REG_DT ) \r\n"
  936. " VALUES ( \r\n"
  937. " M.VMS_CTLR_ID, \r\n"
  938. " M.VMS_FORM_ID, \r\n"
  939. " TO_DATE(M.DSPL_BGN_DT, 'YYYYMMDDHH24MISS'), \r\n"
  940. " TO_DATE(M.DSPL_FNSH_DT, 'YYYYMMDDHH24MISS'), \r\n"
  941. " M.RGSTR_ID, \r\n"
  942. " M.REG_DT ) \r\n";
  943. #endif
  944. ITSDb_SQLText(pADO, sQry);
  945. for (int ii = 0; ii < nRows; ii++) {
  946. String VMS_FORM_ID;
  947. TcxCustomGridRow* ARow = TvList->ViewData->Rows[ii];
  948. bool bSelected = (bool)ARow->Values[ColumnSel->Index];
  949. if (bSelected) {
  950. VMS_FORM_ID = VarToStr(ARow->Values[Column13->Index]);
  951. if (VMS_FORM_ID == "") {
  952. continue;
  953. }
  954. }
  955. String VMS_CTLR_ID = VarToStr(ARow->Values[Column01->Index]);
  956. pADO->Parameters->ParamByName("p01")->Value = VMS_CTLR_ID;
  957. pADO->Parameters->ParamByName("p02")->Value = VMS_FORM_ID;
  958. pADO->Parameters->ParamByName("p03")->Value = FStrDay + FStrTime + "00";
  959. pADO->Parameters->ParamByName("p04")->Value = FEndDay + FEndTime + "00";
  960. pADO->Parameters->ParamByName("p08")->Value = g_AppCfg.OPER_ID;
  961. ITSDb_SQLExec(pADO);
  962. if (FCommCtrlTarget != NULL) {
  963. FOR_STL(TCommInfo*, pCommInfo, FCommCtrlTarget->FLists) {
  964. int sendResult = CComm_VmsNotiRegEmgnMsg(pCommInfo->SRVR_IP, pCommInfo->CMNC_PORT, VMS_CTLR_ID);
  965. if (VERR_NONE == sendResult) {
  966. }
  967. Sleep(200);
  968. }
  969. }
  970. }
  971. }
  972. catch(EDatabaseError &E) {
  973. DBERRORMSG("TVMSM530M::SaveEmerForm", String(E.ClassName()), E.Message, sQry);
  974. return false;
  975. }
  976. catch(Exception &e)
  977. {
  978. DBERRORMSG("TVMSM530M::SaveEmerForm", String(e.ClassName()), e.Message, sQry);
  979. return false;
  980. }
  981. }
  982. __finally {
  983. TvList->EndUpdate();
  984. if (pADO) {
  985. pADO->Close();
  986. delete pADO;
  987. }
  988. }
  989. return true;
  990. }
  991. //---------------------------------------------------------------------------
  992. int __fastcall TVMSM530M::GetSelListItems()
  993. {
  994. int nSelected = 0;
  995. try {
  996. bool bSelected;
  997. TvList->BeginUpdate();
  998. int nRows = TvList->ViewData->RecordCount;
  999. for (int ii = 0; ii < nRows; ii++) {
  1000. TcxCustomGridRow* ARow = TvList->ViewData->Rows[ii];
  1001. bSelected = (bool)ARow->Values[ColumnSel->Index];
  1002. if (bSelected) {
  1003. String sVmsFormId = VarToStr(ARow->Values[Column13->Index]);
  1004. if (sVmsFormId != "") {
  1005. nSelected++;
  1006. }
  1007. }
  1008. }
  1009. }
  1010. __finally {
  1011. TvList->EndUpdate();
  1012. }
  1013. return nSelected;
  1014. }
  1015. //---------------------------------------------------------------------------