FrmVmsMsgEmgrMngrF.cpp 42 KB

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