FrmVmsMsgScheMngrF.cpp 79 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276
  1. //---------------------------------------------------------------------------
  2. #include <vcl.h>
  3. #include "ITSSkinF.h"
  4. #include "ITSUtilF.h"
  5. #include "AppGlobalF.h"
  6. #include "CDSVmsIfscF.h"
  7. #include "ITSLangTransF.h"
  8. #include "CDSFontF.h"
  9. #include "CDSAtmpF.h"
  10. #include "CDSVmsFormF.h"
  11. #include "CDSVmsIfscF.h"
  12. #include "CDSVmsDsplCndtF.h"
  13. #pragma hdrstop
  14. #include "FrmVmsMsgScheMngrF.h"
  15. #include "VMSM610MF.h"
  16. //---------------------------------------------------------------------------
  17. #pragma package(smart_init)
  18. #pragma link "cxButtons"
  19. #pragma link "cxCalendar"
  20. #pragma link "cxContainer"
  21. #pragma link "cxControls"
  22. #pragma link "cxDropDownEdit"
  23. #pragma link "cxEdit"
  24. #pragma link "cxGraphics"
  25. #pragma link "cxGroupBox"
  26. #pragma link "cxLabel"
  27. #pragma link "cxLookAndFeelPainters"
  28. #pragma link "cxLookAndFeels"
  29. #pragma link "cxMaskEdit"
  30. #pragma link "cxPC"
  31. #pragma link "cxPCdxBarPopupMenu"
  32. #pragma link "cxSpinEdit"
  33. #pragma link "cxSplitter"
  34. #pragma link "cxTextEdit"
  35. #pragma link "cxTimeEdit"
  36. #pragma link "dxSkinBlack"
  37. #pragma link "dxSkinBlue"
  38. #pragma link "dxSkinCaramel"
  39. #pragma link "dxSkinCoffee"
  40. #pragma link "dxSkinDarkRoom"
  41. #pragma link "dxSkinDarkSide"
  42. #pragma link "dxSkinFoggy"
  43. #pragma link "dxSkinGlassOceans"
  44. #pragma link "dxSkiniMaginary"
  45. #pragma link "dxSkinLilian"
  46. #pragma link "dxSkinLiquidSky"
  47. #pragma link "dxSkinLondonLiquidSky"
  48. #pragma link "dxSkinMcSkin"
  49. #pragma link "dxSkinMoneyTwins"
  50. #pragma link "dxSkinOffice2007Black"
  51. #pragma link "dxSkinOffice2007Blue"
  52. #pragma link "dxSkinOffice2007Green"
  53. #pragma link "dxSkinOffice2007Pink"
  54. #pragma link "dxSkinOffice2007Silver"
  55. #pragma link "dxSkinOffice2010Black"
  56. #pragma link "dxSkinOffice2010Blue"
  57. #pragma link "dxSkinOffice2010Silver"
  58. #pragma link "dxSkinsCore"
  59. #pragma link "dxSkinscxPCPainter"
  60. #pragma link "dxSkinSeven"
  61. #pragma link "dxSkinSharp"
  62. #pragma link "dxSkinSilver"
  63. #pragma link "dxSkinStardust"
  64. #pragma link "cxRadioGroup"
  65. #pragma link "cxClasses"
  66. #pragma link "cxCustomData"
  67. #pragma link "cxData"
  68. #pragma link "cxDataStorage"
  69. #pragma link "cxDBData"
  70. #pragma link "cxFilter"
  71. #pragma link "cxGrid"
  72. #pragma link "cxGridCustomTableView"
  73. #pragma link "cxGridCustomView"
  74. #pragma link "cxGridDBTableView"
  75. #pragma link "cxGridLevel"
  76. #pragma link "cxGridTableView"
  77. #pragma link "cxStyles"
  78. #pragma link "cxCheckBox"
  79. #pragma link "cxImage"
  80. #pragma link "cxButtonEdit"
  81. #pragma link "cxBlobEdit"
  82. #pragma link "cxColorComboBox"
  83. #pragma link "cxCalc"
  84. #pragma link "VmsDesignerF"
  85. #pragma link "FRAME_VmsSchListF"
  86. #pragma link "cxHint"
  87. #pragma link "dxCustomHint"
  88. #pragma link "dxGDIPlusClasses"
  89. #pragma link "dxScreenTip"
  90. #pragma link "dxSkinsForm"
  91. #pragma resource "*.dfm"
  92. TFrmVmsMsgScheMngr *FrmVmsMsgScheMngr = NULL;
  93. //---------------------------------------------------------------------------
  94. __fastcall TFrmVmsMsgScheMngr::TFrmVmsMsgScheMngr(TComponent* Owner)
  95. : TForm(Owner)
  96. {
  97. //CMM_SetFormPosition(g_AppCfg.bSaveForm);
  98. ITSSkin_Initialize(Application, g_AppCfg.sLang);
  99. ITSSkin_Caption(false);
  100. ITSSkin_Load(this);
  101. //CMM_LoadForm(g_sFormsDir, this);
  102. SetColorScheme(g_AppCfg.sSkinName);
  103. FUpdate= false;
  104. FTitle = Caption;//"VMS 자동 스케줄 관리";
  105. FListSymb = new TList;
  106. EditMode = false;
  107. FSelVmsModlType = "";
  108. FSelVmsCtlrId = "";
  109. FVMS_SCH_TYPE = "B"; //기본스케쥴
  110. FEN_DSPL_SCH_TYPE = enScheduleBase;
  111. PgSchedule->ActivePage = TsEdit;
  112. //GrpPreview->Height = 368;
  113. }
  114. //---------------------------------------------------------------------------
  115. void __fastcall TFrmVmsMsgScheMngr::SetColorScheme(String ASkinName)
  116. {
  117. dxSkinController1->SkinName = ASkinName;
  118. dxSkinController1->Refresh();
  119. }
  120. //---------------------------------------------------------------------------
  121. void __fastcall TFrmVmsMsgScheMngr::InitTcxList(TcxGridTableView *AView)
  122. {
  123. AView->OptionsView->DataRowHeight = 0;
  124. AView->OptionsView->CellAutoHeight = true;
  125. AView->OptionsView->Indicator = false;
  126. AView->OptionsCustomize->ColumnMoving = false;
  127. AView->OptionsCustomize->ColumnSorting = false;
  128. AView->Columns[0]->Width = 40;
  129. AView->Columns[0]->Options->HorzSizing = false;
  130. AView->Columns[1]->Width = 330;
  131. }
  132. //---------------------------------------------------------------------------
  133. void __fastcall TFrmVmsMsgScheMngr::CommClose()
  134. {
  135. try
  136. {
  137. if (m_pEdtDesigner)
  138. {
  139. delete m_pEdtDesigner;
  140. m_pEdtDesigner = NULL;
  141. }
  142. APP_DelVmsSizeCombo(CbSizeType);
  143. ClearSymbloList();
  144. SAFE_DELETE(FListSymb);
  145. ITSSkin_Term();
  146. //CMM_SaveForm(g_sFormsDir, this);
  147. }
  148. catch(...)
  149. {
  150. }
  151. }
  152. //---------------------------------------------------------------------------
  153. void __fastcall TFrmVmsMsgScheMngr::FormCreate(TObject *Sender)
  154. {
  155. InitDbLoading();
  156. m_pEdtDesigner = new TVmsFormDesigner(PnlEditForm);
  157. FOR_STL(TCDSFontColor*, pObj, CDSFontManager->FFontColors)
  158. {
  159. m_pEdtDesigner->InitFontColor(pObj->VMS_FONT_COLR_CD, (TColor)pObj->VMS_FONT_COLR_VAL);
  160. }
  161. FOR_STL(TCDSBackColor*, pObj, CDSFontManager->FBackColors)
  162. {
  163. m_pEdtDesigner->InitBackColor(pObj->VMS_BACK_COLR_CD, (TColor)pObj->VMS_BACK_COLR_VAL);
  164. }
  165. FOR_STL(TCDSFontName*, pObj, CDSFontManager->FFontNames)
  166. {
  167. m_pEdtDesigner->InitFontName(pObj->VMS_FONT_NAME_CD, pObj->VMS_FONT_NAME_NM);
  168. }
  169. }
  170. //---------------------------------------------------------------------------
  171. void __fastcall TFrmVmsMsgScheMngr::InitDbLoading()
  172. {
  173. Application->ProcessMessages();
  174. if (!VmsCtlrManager) {
  175. VmsCtlrManager = new TVmsCtlrManager();
  176. }
  177. VmsCtlrManager->LoadVmsModlSize();
  178. VmsCtlrManager->LoadFromDb();
  179. if(!CDSFontManager) {
  180. CDSFontManager = new TCDSFontManager();
  181. }
  182. CDSFontManager->LoadFontInfo();
  183. if (!VmsIfscManager) {
  184. VmsIfscManager = new TVmsIfscManager();
  185. }
  186. VmsIfscManager->LoadFromDb();
  187. if (!VmsDsplCndtManager) {
  188. VmsDsplCndtManager = new TVmsDsplCndtManager();
  189. }
  190. VmsDsplCndtManager->LoadFromDb();
  191. LoadVmsFormDsplCndt();
  192. }
  193. //---------------------------------------------------------------------------
  194. void __fastcall TFrmVmsMsgScheMngr::FormShow(TObject *Sender)
  195. {
  196. Refresh();
  197. FormInit();
  198. ChangeEditMode(1);
  199. TmrShow->Enabled = true;
  200. }
  201. //---------------------------------------------------------------------------
  202. void __fastcall TFrmVmsMsgScheMngr::FormInit()
  203. {
  204. TvVmsSche->OptionsView->NoDataToDisplayInfoText = "<등록되어 있는 VMS 시나리오 정보가 없습니다>";
  205. TvSche->OptionsView->NoDataToDisplayInfoText = "<등록되어 있는 VMS 시나리오 구성 정보가 없습니다>";
  206. TvForm->OptionsView->NoDataToDisplayInfoText = "<등록되어 있는 메시지 폼 정보가 없습니다>";
  207. //VMS사이즈
  208. APP_FillVmsSizeType(CbSizeType, false);
  209. FNewDb = false;
  210. }
  211. //---------------------------------------------------------------------------
  212. void __fastcall TFrmVmsMsgScheMngr::TmrShowTimer(TObject *Sender)
  213. {
  214. TmrShow->Enabled = false;
  215. RefreshData();
  216. CbSizeType->ItemIndex = -1;
  217. CbSizeType->ItemIndex = 0;
  218. }
  219. //---------------------------------------------------------------------------
  220. void __fastcall TFrmVmsMsgScheMngr::BtnCloseClick(TObject *Sender)
  221. {
  222. Close();
  223. }
  224. //---------------------------------------------------------------------------
  225. void __fastcall TFrmVmsMsgScheMngr::FormClose(TObject *Sender, TCloseAction &Action)
  226. {
  227. CommClose();
  228. FrmVmsMsgScheMngr = NULL;
  229. Action = caFree;
  230. }
  231. //---------------------------------------------------------------------------
  232. void __fastcall TFrmVmsMsgScheMngr::FormCloseQuery(TObject *Sender, bool &CanClose)
  233. {
  234. if (FUpdate)
  235. {
  236. POST_MSG(Application->MainForm->Handle, WM_DATABASE_REFRESH, WP_MSG_14, 0);
  237. }
  238. }
  239. //---------------------------------------------------------------------------
  240. void __fastcall TFrmVmsMsgScheMngr::ChangeEditMode(int AEdit)
  241. {
  242. bool bEnabled = false;
  243. switch(AEdit)
  244. {
  245. case 0: //편집버튼클릭
  246. {
  247. BtnEdit->Enabled = true;
  248. BtnInsert->Enabled = false;
  249. BtnDelete->Enabled = false;
  250. //BtnCopyAdd->Enabled = false;
  251. //BtnCopyAdd212->Enabled = false;
  252. BtnSave->Enabled = true;
  253. BtnEdit->Caption = "취소";//"취소";
  254. BtnEdit->Hint = "데이터 편집 취소";//데이터 편집 취소";
  255. EditMode = true;
  256. }
  257. break;
  258. case 1: //편집[취소]버튼클릭
  259. {
  260. FormClear(); //화면을 모두 지운다.
  261. BtnEdit->Enabled = false;
  262. BtnInsert->Enabled = true;
  263. BtnDelete->Enabled = false;
  264. //BtnCopyAdd->Enabled = false;
  265. //BtnCopyAdd212->Enabled = false;
  266. BtnSave->Enabled = false;
  267. BtnEdit->Caption = "편집";//"편집";
  268. BtnEdit->Hint = "데이터 편집";//데이터 편집";
  269. //bEnabled = true;
  270. EditMode = false;
  271. }
  272. break;
  273. case 2: //추가
  274. {
  275. BtnEdit->Enabled = true;
  276. BtnInsert->Enabled = false;
  277. BtnDelete->Enabled = false;
  278. //BtnCopyAdd->Enabled = false;
  279. //BtnCopyAdd212->Enabled = false;
  280. BtnSave->Enabled = true;
  281. BtnEdit->Caption = "취소";//"취소";
  282. BtnEdit->Hint = "데이터 편집 취소";//데이터 편집 취소";
  283. EditMode = true;
  284. //CbVms->Enabled = true;
  285. }
  286. break;
  287. case 3: //수정모드
  288. {
  289. BtnEdit->Enabled = true;
  290. BtnInsert->Enabled = true;
  291. BtnDelete->Enabled = true;
  292. //BtnCopyAdd->Enabled = true;
  293. //BtnCopyAdd212->Enabled = true;
  294. BtnSave->Enabled = false;
  295. BtnEdit->Caption = "편집";//"편집";
  296. BtnEdit->Hint = "데이터 편집";//데이터 편집";
  297. bEnabled = true;
  298. EditMode = false;
  299. }
  300. break;
  301. }
  302. if (AEdit == 0 || AEdit == 2) {
  303. }
  304. else {
  305. }
  306. GrpList->Enabled = !EditMode;
  307. PnlScnrEdit->Enabled = EditMode;
  308. //PnlFormInfo->Enabled = EditMode;
  309. //PnlObjProperty->Enabled = EditMode;
  310. //PnlFormObjCmd->Enabled = EditMode;
  311. //BtnReApply->Enabled = EditMode;
  312. }
  313. //---------------------------------------------------------------------------
  314. void __fastcall TFrmVmsMsgScheMngr::ClearSymbloList()
  315. {
  316. FFormLists.Clear();
  317. for(int ii = 0; ii < FListSymb->Count; ii++)
  318. {
  319. Graphics::TBitmap *bitmap = (Graphics::TBitmap *)FListSymb->Items[ii];
  320. delete bitmap;
  321. }
  322. FListSymb->Clear();
  323. }
  324. //---------------------------------------------------------------------------
  325. void __fastcall TFrmVmsMsgScheMngr::CbSizeTypePropertiesChange(TObject *Sender)
  326. {
  327. //
  328. }
  329. //---------------------------------------------------------------------------
  330. void __fastcall TFrmVmsMsgScheMngr::BtnSearchClick(TObject *Sender)
  331. {
  332. RefreshData();
  333. EdFocus->SetFocus();
  334. ChangeEditMode(1);
  335. }
  336. //---------------------------------------------------------------------------
  337. void __fastcall TFrmVmsMsgScheMngr::ChangeEditFormPanel()
  338. {
  339. TVmsSizeType *pVmsSizeType = APP_GetVmsSizeTypeObject(CbSizeType);
  340. if (pVmsSizeType == NULL) return;
  341. FVmsTypeCd = pVmsSizeType->TypeCd;
  342. FVmsWidth = pVmsSizeType->Width;
  343. FVmsHeight = pVmsSizeType->Height;
  344. LockWindowUpdate(PnlPreview->Handle);
  345. PnlPreview->Width = FVmsWidth+4;
  346. PnlPreview->Height= FVmsHeight+4;
  347. ImgPreview->Align = alNone;
  348. ImgPreview->Picture->Bitmap->Width = FVmsWidth;
  349. ImgPreview->Picture->Bitmap->Height= FVmsHeight;
  350. APP_ImageClear(ImgPreview->Canvas, 0, 0, ImgPreview->Width, ImgPreview->Height, clBlack);
  351. ImgPreview->Align = alClient;
  352. LockWindowUpdate(0);
  353. PnlEdtBack->Width = FVmsWidth+4;
  354. PnlEdtBack->Height= FVmsHeight+4;
  355. m_pEdtDesigner->Clear();
  356. m_pEdtDesigner->SizeType = FVmsTypeCd;
  357. m_pEdtDesigner->SetSize(FVmsWidth, FVmsHeight);
  358. m_pEdtDesigner->SetPos(0, 0);
  359. m_pEdtDesigner->BkColorCode = "0";
  360. m_pEdtDesigner->EditMode = true;
  361. m_pEdtDesigner->Show();
  362. }
  363. //---------------------------------------------------------------------------
  364. void __fastcall TFrmVmsMsgScheMngr::RefreshData()
  365. {
  366. FormClear();
  367. FillVmsCombo();
  368. ChangeEditFormPanel();
  369. //LoadVmsFormList(FVmsTypeCd);
  370. //ChkAutoWidthPropertiesChange((TObject*)ChkAutoWidth);
  371. }
  372. //---------------------------------------------------------------------------
  373. void __fastcall TFrmVmsMsgScheMngr::FillVmsCombo()
  374. {
  375. TNotifyEvent evt = CbVms->Properties->OnChange;
  376. CbVms->Properties->OnChange = NULL;
  377. CbVms->Properties->Items->Clear();
  378. FOR_STL(TVmsCtlr*, pObj, VmsCtlrManager->FLists) {
  379. CbVms->Properties->Items->Add(" [" + pObj->VMS_CTLR_ID + "] " + pObj->VMS_NM);
  380. }
  381. CbVms->ItemIndex = -1;
  382. CbVms->Properties->OnChange = evt;
  383. CbVms->ItemIndex = 0;
  384. }
  385. //---------------------------------------------------------------------------
  386. void __fastcall TFrmVmsMsgScheMngr::FormClear()
  387. {
  388. FSelIdx = -1;
  389. EdScnrId->Clear();
  390. EdScnrNm->Clear();
  391. CMM_ClearGridTableView(TvSche);
  392. CMM_ClearGridTableView(TvPreview);
  393. LockWindowUpdate(GrpPreview->Handle);
  394. APP_ImageClear(ImgPreview->Canvas, 0, 0, ImgPreview->Width, ImgPreview->Height, clBlack);
  395. LockWindowUpdate(0);
  396. GrpSchedule->Caption = "▶ VMS 시나리오 설정";
  397. FNewDb = false;
  398. }
  399. //---------------------------------------------------------------------------
  400. void __fastcall TFrmVmsMsgScheMngr::DisplayInfo()
  401. {
  402. FormClear();
  403. FSelIdx = CMM_GetRecordIndex(TvVmsSche);
  404. if (FSelIdx < 0) return;
  405. TcxDataController *pGDC = TvVmsSche->DataController;
  406. String sScnrId = VarToStr(pGDC->Values[FSelIdx][ColScnrId->Index]);
  407. String sScnrNm = VarToStr(pGDC->Values[FSelIdx][ColScnrNm->Index]);
  408. EdScnrId->Text = sScnrId;
  409. EdScnrNm->Text = sScnrNm;
  410. GrpSchedule->Caption = "▶ VMS 시나리오 설정 (" + sScnrId + ": " + sScnrNm + ")";
  411. LoadVmsScenarionForm(FSelVmsCtlrId, sScnrId);
  412. ChangeEditMode(3);
  413. }
  414. //---------------------------------------------------------------------------
  415. void __fastcall TFrmVmsMsgScheMngr::BtnListAdd0Click(TObject *Sender)
  416. {
  417. String sScnrId = EdScnrId->Text;
  418. if (sScnrId.IsEmpty()) return;
  419. int nSelIdx = CMM_GetRecordIndex(TvVmsSche);
  420. if (nSelIdx < 0) return;
  421. TcxGridDataController *pDcFrm = TvForm->DataController;
  422. TcxGridDataController *pDcSch = TvSche->DataController;
  423. int nFormIdx = CMM_GetRecordIndex(TvForm);
  424. if (nFormIdx < 0) return;
  425. int nRowS = pDcSch->AppendRecord();
  426. String VMS_SCNR_ID = sScnrId;
  427. int FORM_SN = nRowS+1;
  428. String VMS_FORM_ID = VarToStr(pDcFrm->Values[nFormIdx][ColFrm00->Index]);
  429. String TXT_FORM_APLY_VMS_SECT_ID = "";
  430. String VMS_FORM_DSPL_CNDT_ID = "";
  431. int DSPL_HR = VarToStr(pDcFrm->Values[nFormIdx][ColFrm03->Index]).ToIntDef(5);
  432. String VMS_MODL_KIND = VarToStr(pDcFrm->Values[nFormIdx][ColFrm08->Index]);
  433. String VMS_FORM_TYPE = VarToStr(pDcFrm->Values[nFormIdx][ColFrm07->Index]);
  434. String VMS_FORM_NM = VarToStr(pDcFrm->Values[nFormIdx][ColFrm02->Index]);
  435. String VMS_FORM_DSPL_CNDT_NM = "";
  436. pDcSch->Values[nRowS][Col00->Index] = VMS_FORM_ID;
  437. pDcSch->Values[nRowS][Col01->Index] = pDcFrm->Values[nFormIdx][ColFrm01->Index];
  438. pDcSch->Values[nRowS][Col02->Index] = VMS_FORM_NM;
  439. pDcSch->Values[nRowS][Col03->Index] = DSPL_HR;
  440. pDcSch->Values[nRowS][Col04->Index] = TXT_FORM_APLY_VMS_SECT_ID;
  441. pDcSch->Values[nRowS][Col05->Index] = VMS_FORM_DSPL_CNDT_ID;
  442. pDcSch->Values[nRowS][Col06->Index] = VMS_MODL_KIND;
  443. pDcSch->Values[nRowS][Col07->Index] = VMS_FORM_TYPE;
  444. pDcSch->Values[nRowS][ColDsplCndtId->Index] = VMS_FORM_DSPL_CNDT_ID;
  445. pDcSch->Values[nRowS][ColDsplCndtNm->Index] = VMS_FORM_DSPL_CNDT_NM;
  446. }
  447. //---------------------------------------------------------------------------
  448. void __fastcall TFrmVmsMsgScheMngr::BtnListDelete0Click(TObject *Sender)
  449. {
  450. TcxButton *pBtn = (TcxButton*)Sender;
  451. int nTag = pBtn->Tag;
  452. if (nTag >= eSchTp_max) return;
  453. int nSelIdx = CMM_GetRecordIndex(TvVmsSche);
  454. if (nSelIdx < 0) return;
  455. TcxGridDataController *pDcSch = TvSche->DataController;
  456. nSelIdx = CMM_GetRecordIndex(TvSche);
  457. if (nSelIdx < 0) return;
  458. TvSche->DataController->DeleteRecord(nSelIdx);
  459. }
  460. //---------------------------------------------------------------------------
  461. void __fastcall TFrmVmsMsgScheMngr::TvScheCellDblClick(TcxCustomGridTableView *Sender, TcxGridTableDataCellViewInfo *ACellViewInfo,
  462. TMouseButton AButton, TShiftState AShift,
  463. bool &AHandled)
  464. {
  465. if (!ACellViewInfo) return;
  466. int nSelIdx = CMM_GetRecordIndex(TvSche);
  467. if (nSelIdx < 0) return;
  468. TcxDataController *pGDC = TvSche->DataController;
  469. String sVmsCtlrId = FSelVmsCtlrId;
  470. String sVmsScnrId = EdScnrId->Text;
  471. String sVmsFormId = VarToStr(pGDC->Values[nSelIdx][Col00->Index]);
  472. String sVmsFormNm = VarToStr(pGDC->Values[nSelIdx][Col02->Index]);
  473. String sDsplCndtId = VarToStr(pGDC->Values[nSelIdx][Col02->Index]);
  474. TVMSM610M *pIfscFrm = new TVMSM610M(this);
  475. #if 0
  476. pIfscFrm->FVmsCtlrId = FSelVmsCtlrId;
  477. pIfscFrm->FFormId = sFormId;
  478. pIfscFrm->FVmsTypeCd = FVmsTypeCd;
  479. pIfscFrm->FVmsWidth = FVmsWidth;
  480. pIfscFrm->FVmsHeight = FVmsHeight;
  481. pIfscFrm->FIfscId[0] = VarToStr(pGDC->Values[nRow][9]);
  482. pIfscFrm->FIfscId[1] = VarToStr(pGDC->Values[nRow][10]);
  483. pIfscFrm->FIfscId[2] = VarToStr(pGDC->Values[nRow][11]);
  484. pIfscFrm->FIfscId[3] = VarToStr(pGDC->Values[nRow][12]);
  485. pIfscFrm->FIfscId[4] = VarToStr(pGDC->Values[nRow][16]);
  486. pIfscFrm->FIfscId[5] = VarToStr(pGDC->Values[nRow][17]);
  487. pIfscFrm->FIfscId[6] = VarToStr(pGDC->Values[nRow][18]);
  488. pIfscFrm->FIfscId[7] = VarToStr(pGDC->Values[nRow][19]);
  489. //pIfscFrm->FVmsType = VarToStr(pGDC->Values[nRow][13]).ToIntDef(0);
  490. pIfscFrm->FFormColor = VarToStr(pGDC->Values[nRow][14]);
  491. pIfscFrm->FFormType = VarToStr(pGDC->Values[nRow][15]).ToIntDef(0);
  492. #endif
  493. pIfscFrm->ShowModal();
  494. if (pIfscFrm->FSelected)
  495. {
  496. #if 0
  497. TStream *pImgStream = new TMemoryStream();
  498. try
  499. {
  500. void *p;
  501. Variant v;
  502. pIfscFrm->ImgForm->Picture->Bitmap->SaveToStream(pImgStream);
  503. int aBound[]={0, pImgStream->Size - 1};
  504. v = VarArrayCreate(aBound, 1, varByte);
  505. p = VarArrayLock(v);
  506. pImgStream->Position = 0;
  507. pImgStream->Read(p, pImgStream->Size);
  508. VarArrayUnlock(v);
  509. pGDC->Values[nRow][1] = v;
  510. }
  511. __finally
  512. {
  513. SAFE_DELETE(pImgStream);
  514. }
  515. pGDC->Values[nRow][ 9] = pIfscFrm->FIfscId[0];
  516. pGDC->Values[nRow][10] = pIfscFrm->FIfscId[1];
  517. pGDC->Values[nRow][11] = pIfscFrm->FIfscId[2];
  518. pGDC->Values[nRow][12] = pIfscFrm->FIfscId[3];
  519. pGDC->Values[nRow][16] = pIfscFrm->FIfscId[4];
  520. pGDC->Values[nRow][17] = pIfscFrm->FIfscId[5];
  521. pGDC->Values[nRow][18] = pIfscFrm->FIfscId[6];
  522. pGDC->Values[nRow][19] = pIfscFrm->FIfscId[7];
  523. #endif
  524. }
  525. delete pIfscFrm;
  526. pIfscFrm = NULL;
  527. }
  528. //---------------------------------------------------------------------------
  529. void __fastcall TFrmVmsMsgScheMngr::BtnSaveClick(TObject *Sender)
  530. {
  531. if (FSelVmsCtlrId.IsEmpty()) {
  532. Application->MessageBox(L"VMS 스케줄 저장\r\nVMS 정보를 선택하세요.",
  533. FTitle.c_str(),
  534. MB_OK|MB_ICONERROR|MB_APPLMODAL);
  535. return;
  536. }
  537. String sMsg;
  538. String sScnrId = EdScnrId->Text.Trim();
  539. if (sScnrId.IsEmpty()) {
  540. Application->MessageBox(L"VMS 스케줄 저장\r\nVMS 시나리오 ID를 입력하세요.",
  541. FTitle.c_str(),
  542. MB_OK|MB_ICONERROR|MB_APPLMODAL);
  543. ActiveControl = EdScnrId;
  544. return;
  545. }
  546. String sScnrNm = EdScnrNm->Text.Trim();
  547. if (sScnrNm.IsEmpty()) {
  548. Application->MessageBox(L"VMS 스케줄 저장\r\nVMS 시나리오 이름을 입력하세요.",
  549. FTitle.c_str(),
  550. MB_OK|MB_ICONERROR|MB_APPLMODAL);
  551. ActiveControl = EdScnrNm;
  552. return;
  553. }
  554. if (AnsiString(sScnrNm).Length() > 32) {
  555. Application->MessageBox(L"VMS 스케줄 저장\r\n시나리오 명칭은 32Byte를 초과할 수 없습니다.",
  556. FTitle.c_str(),
  557. MB_OK|MB_ICONERROR|MB_APPLMODAL);
  558. ActiveControl = EdScnrNm;
  559. return;
  560. }
  561. TcxGridDataController *pGDC = TvSche->DataController;
  562. if (pGDC->DataRowCount <= 0) {
  563. sMsg = "*************************************************************\r\n"
  564. "VMS 시나리오 구성 정보가 없습니다.\r\n"
  565. "VMS 시나리오 정보를 저장 하시겠습니까?\r\n"
  566. "*************************************************************";
  567. if (Application->MessageBox(sMsg.c_str(), FTitle.c_str(), MB_YESNO|MB_ICONERROR|MB_APPLMODAL) != IDYES) return;
  568. }
  569. bool bResult;
  570. /////////////////////////////////// 시나리오 정보 저장
  571. ITSDb_GetConnection()->BeginTrans();
  572. bResult = SaveVmsScnr(FSelVmsCtlrId, sScnrId, sScnrNm);
  573. if (!bResult) {
  574. ITSDb_GetConnection()->RollbackTrans();
  575. return;
  576. }
  577. if (bResult) {
  578. ITSDb_GetConnection()->CommitTrans();
  579. Application->MessageBox(L"VMS 스케줄 저장\r\nVMS n시나리오 정보를 저장 하였습니다.",
  580. FTitle.c_str(),
  581. MB_OK|MB_ICONINFORMATION|MB_APPLMODAL);
  582. FUpdate = true;
  583. LoadVmsScenario(FSelVmsCtlrId);
  584. CMM_SetGridRow(CxVmsSche, TvVmsSche, sScnrId, ColScnrId->Index);
  585. //DisplayInfo();
  586. }
  587. else {
  588. ITSDb_GetConnection()->RollbackTrans();
  589. }
  590. }
  591. //---------------------------------------------------------------------------
  592. bool __fastcall TFrmVmsMsgScheMngr::SaveVmsScnr(String AVmsCtlrId, String AScnrId, String AScnrNm)
  593. {
  594. bool bResult = false;
  595. String sQry;
  596. TADOQuery *pADO = NULL;
  597. sQry = "MERGE INTO TB_VMS_SCNR L \r\n"
  598. "USING (SELECT \r\n"
  599. " :p01 AS VMS_CTLR_ID, \r\n"
  600. " :p02 AS VMS_SCNR_ID, \r\n"
  601. " :p03 AS VMS_SCNR_NM, \r\n"
  602. " :p04 AS OPER_ID \r\n"
  603. " FROM DUAL) M \r\n"
  604. " ON (L.VMS_CTLR_ID = M.VMS_CTLR_ID \r\n"
  605. " AND L.VMS_SCNR_ID = M.VMS_SCNR_ID) \r\n"
  606. "WHEN MATCHED THEN \r\n"
  607. " UPDATE SET \r\n"
  608. " L.VMS_SCNR_NM = M.VMS_SCNR_NM, \r\n"
  609. " L.CHNGR_ID = M.OPER_ID, \r\n"
  610. " L.CHG_DT = SYSDATE \r\n"
  611. "WHEN NOT MATCHED THEN \r\n"
  612. " INSERT ( \r\n"
  613. " VMS_CTLR_ID, \r\n"
  614. " VMS_SCNR_ID, \r\n"
  615. " VMS_SCNR_NM, \r\n"
  616. " RGSTR_ID, \r\n"
  617. " REG_DT ) \r\n"
  618. " VALUES ( \r\n"
  619. " M.VMS_CTLR_ID, \r\n"
  620. " M.VMS_SCNR_ID, \r\n"
  621. " M.VMS_SCNR_NM, \r\n"
  622. " M.OPER_ID, \r\n"
  623. " SYSDATE ) \r\n";
  624. try {
  625. try {
  626. pADO = new TADOQuery(NULL);
  627. pADO->Close();
  628. pADO->Connection = ITSDb_GetConnection();
  629. ITSDb_SQLText(pADO, sQry);
  630. pADO->Parameters->ParamByName("p01")->Value = AVmsCtlrId;
  631. pADO->Parameters->ParamByName("p02")->Value = AScnrId;
  632. pADO->Parameters->ParamByName("p03")->Value = AScnrNm;
  633. pADO->Parameters->ParamByName("p04")->Value = g_AppCfg.OPER_ID;
  634. pADO->ExecSQL();
  635. }
  636. catch(EDatabaseError &E) {
  637. DBERRORMSG("TFrmVmsMsgScheMngr::SaveVmsScnr", String(E.ClassName()), E.Message, sQry);
  638. return false;
  639. }
  640. catch(Exception &e) {
  641. DBERRORMSG("TFrmVmsMsgScheMngr::SaveVmsScnr", String(e.ClassName()), e.Message, sQry);
  642. return false;
  643. }
  644. }
  645. __finally {
  646. if (pADO) {
  647. pADO->Close();
  648. delete pADO;
  649. }
  650. }
  651. return true;
  652. }
  653. //---------------------------------------------------------------------------
  654. bool __fastcall TFrmVmsMsgScheMngr::SaveVmsScenario(String AVmsNmbr, TcxGridTableView *AListSch)
  655. {
  656. bool bResult = false;
  657. #if 0
  658. String sQry;
  659. TADOQuery *pADO = NULL;
  660. TcxDataController *pGDC = AListSch->DataController;
  661. String sTypeCd = "";
  662. sQry = "INSERT INTO TB_VMS_DSPL_SCH ( \r\n"
  663. " VMS_CTLR_NMBR, \r\n"
  664. " VMS_SCH_TYPE, \r\n"
  665. " VMS_SCH_FORM_TYPE, \r\n"
  666. " PHASE, \r\n"
  667. " VMS_FORM_ID, \r\n"
  668. " DSPL_STRT_HH, \r\n"
  669. " DSPL_END_HH, \r\n"
  670. " DSPL_HH, \r\n"
  671. " FRST_VMS_IFSC_ID, \r\n"
  672. " SECD_VMS_IFSC_ID, \r\n"
  673. " THIR_VMS_IFSC_ID, \r\n"
  674. " FOUR_VMS_IFSC_ID, \r\n"
  675. " FRST_IMG_IFSC_ID, \r\n"
  676. " SECD_IMG_IFSC_ID, \r\n"
  677. " THIR_IMG_IFSC_ID, \r\n"
  678. " FOUR_IMG_IFSC_ID, \r\n"
  679. " SYMB_LIB_NMBR, \r\n"
  680. " STRM_ADDR, \r\n"
  681. " USE_YN, \r\n"
  682. " SCH_WEEK1, \r\n"
  683. " SCH_WEEK2, \r\n"
  684. " SCH_WEEK3, \r\n"
  685. " SCH_WEEK4, \r\n"
  686. " SCH_WEEK5, \r\n"
  687. " SCH_WEEK6, \r\n"
  688. " SCH_WEEK7, \r\n"
  689. " DSPL_CNGS_YN \r\n"
  690. " ) \r\n"
  691. " VALUES( \r\n"
  692. " :p01, :p02, :p03, \r\n"
  693. " :p04, :p05, :p06, \r\n"
  694. " :p07, :p08, :p09, \r\n"
  695. " :p10, :p11, :p12, \r\n"
  696. " :p13, :p14, :p15, \r\n"
  697. " :p16, :p17, :p18, \r\n"
  698. " :p19, \r\n"
  699. " :p20, \r\n"
  700. " :p21, \r\n"
  701. " :p22, \r\n"
  702. " :p23, \r\n"
  703. " :p24, \r\n"
  704. " :p25, \r\n"
  705. " :p26, \r\n"
  706. " :p27 \r\n"
  707. " ) \r\n";
  708. try
  709. {
  710. AListSch->BeginUpdate();
  711. pGDC->BeginUpdate();
  712. int nRows = pGDC->RecordCount;
  713. try
  714. {
  715. pADO = new TADOQuery(NULL);
  716. pADO->Close();
  717. pADO->Connection = ITSDb_GetConnection();
  718. ITSDb_SQLText(pADO, sQry);
  719. int ii;
  720. for (ii = 0; ii < nRows; ii++)
  721. {
  722. String sFormId = VarToStr(pGDC->Values[ii][ 0]);
  723. String sUseYn = VarToStr(pGDC->Values[ii][ 6]);
  724. if (sUseYn == "Y")
  725. {
  726. if (!CDSVmsFormManager->IsValid(sFormId))
  727. {
  728. pGDC->Values[ii][ 6] = "N";
  729. }
  730. }
  731. }
  732. for (ii = 0; ii < nRows; ii++)
  733. {
  734. String sFormId = VarToStr(pGDC->Values[ii][Col00->Index]);
  735. String sDispHH = VarToStr(pGDC->Values[ii][Col03->Index]);
  736. String sUseYn = VarToStr(pGDC->Values[ii][Col06->Index]);
  737. String sStrTime = VarToStr(pGDC->Values[ii][Col07->Index]);
  738. String sEndTime = VarToStr(pGDC->Values[ii][Col08->Index]);
  739. String sIfscId1 = VarToStr(pGDC->Values[ii][Col09->Index]);
  740. String sIfscId2 = VarToStr(pGDC->Values[ii][Col10->Index]);
  741. String sIfscId3 = VarToStr(pGDC->Values[ii][Col11->Index]);
  742. String sIfscId4 = VarToStr(pGDC->Values[ii][Col12->Index]);
  743. String sImgIfscId1 = VarToStr(pGDC->Values[ii][Col16->Index]);
  744. String sImgIfscId2 = VarToStr(pGDC->Values[ii][Col17->Index]);
  745. String sImgIfscId3 = VarToStr(pGDC->Values[ii][Col18->Index]);
  746. String sImgIfscId4 = VarToStr(pGDC->Values[ii][Col19->Index]);
  747. String sSymbLibNmbr = VarToStr(pGDC->Values[ii][Col20->Index]);
  748. String sStrmAddr = VarToStr(pGDC->Values[ii][Col21->Index]);
  749. sTypeCd = VarToStr(pGDC->Values[ii][Col23->Index]);
  750. String sSchWeek1 = VarToStr(pGDC->Values[ii][ColWeek1->Index]);
  751. String sSchWeek2 = VarToStr(pGDC->Values[ii][ColWeek2->Index]);
  752. String sSchWeek3 = VarToStr(pGDC->Values[ii][ColWeek3->Index]);
  753. String sSchWeek4 = VarToStr(pGDC->Values[ii][ColWeek4->Index]);
  754. String sSchWeek5 = VarToStr(pGDC->Values[ii][ColWeek5->Index]);
  755. String sSchWeek6 = VarToStr(pGDC->Values[ii][ColWeek6->Index]);
  756. String sSchWeek7 = VarToStr(pGDC->Values[ii][ColWeek7->Index]);
  757. String sDsplCngsYn = VarToStr(pGDC->Values[ii][Col25->Index]);
  758. if (sDsplCngsYn == "") sDsplCngsYn = "Y";
  759. if (sTypeCd == String(eSchTp_congest)) sDsplCngsYn = "Y";
  760. ITSDb_SQLBind(pADO, "p01", AVmsNmbr);
  761. ITSDb_SQLBind(pADO, "p02", FVMS_SCH_TYPE);
  762. ITSDb_SQLBind(pADO, "p03", sTypeCd);
  763. ITSDb_SQLBind(pADO, "p04", String(ii+1));
  764. ITSDb_SQLBind(pADO, "p05", sFormId);
  765. ITSDb_SQLBind(pADO, "p06", sStrTime);
  766. ITSDb_SQLBind(pADO, "p07", sEndTime);
  767. ITSDb_SQLBind(pADO, "p08", sDispHH);
  768. ITSDb_SQLBind(pADO, "p09", sIfscId1);
  769. ITSDb_SQLBind(pADO, "p10", sIfscId2);
  770. ITSDb_SQLBind(pADO, "p11", sIfscId3);
  771. ITSDb_SQLBind(pADO, "p12", sIfscId4);
  772. ITSDb_SQLBind(pADO, "p13", sImgIfscId1);
  773. ITSDb_SQLBind(pADO, "p14", sImgIfscId2);
  774. ITSDb_SQLBind(pADO, "p15", sImgIfscId3);
  775. ITSDb_SQLBind(pADO, "p16", sImgIfscId4);
  776. ITSDb_SQLBind(pADO, "p17", sSymbLibNmbr);
  777. ITSDb_SQLBind(pADO, "p18", sStrmAddr);
  778. ITSDb_SQLBind(pADO, "p19", sUseYn);
  779. ITSDb_SQLBind(pADO, "p20", sSchWeek1);
  780. ITSDb_SQLBind(pADO, "p21", sSchWeek2);
  781. ITSDb_SQLBind(pADO, "p22", sSchWeek3);
  782. ITSDb_SQLBind(pADO, "p23", sSchWeek4);
  783. ITSDb_SQLBind(pADO, "p24", sSchWeek5);
  784. ITSDb_SQLBind(pADO, "p25", sSchWeek6);
  785. ITSDb_SQLBind(pADO, "p26", sSchWeek7);
  786. ITSDb_SQLBind(pADO, "p27", sDsplCngsYn);
  787. pADO->ExecSQL();
  788. }
  789. bResult = true;
  790. }
  791. catch(EDatabaseError &E)
  792. {
  793. ITSDb_GetConnection()->RollbackTrans();
  794. DBERRORMSG("TVMSM600M::SaveVmsScenario", String(E.ClassName()), E.Message, sQry);
  795. throw Exception(String(E.ClassName()) + E.Message);
  796. }
  797. catch(Exception &e)
  798. {
  799. ITSDb_GetConnection()->RollbackTrans();
  800. DBERRORMSG("TVMSM600M::SaveVmsScenario", String(e.ClassName()), e.Message, sQry);
  801. throw Exception(String(e.ClassName()) + e.Message);
  802. }
  803. }
  804. __finally
  805. {
  806. if (pADO)
  807. {
  808. pADO->Close();
  809. delete pADO;
  810. }
  811. pGDC->EndUpdate();
  812. AListSch->EndUpdate();
  813. }
  814. #endif
  815. return bResult;
  816. }
  817. //---------------------------------------------------------------------------
  818. bool __fastcall TFrmVmsMsgScheMngr::DeleteVmsScenario(String AVmsNmbr)
  819. {
  820. bool bResult = false;
  821. #if 0
  822. String sQry;
  823. TADOQuery *pADO = NULL;
  824. sQry = "DELETE TB_VMS_DSPL_SCH \r\n"
  825. " WHERE VMS_SCH_TYPE = :p01 \r\n"
  826. " AND VMS_CTLR_NMBR = :p02 \r\n";
  827. try
  828. {
  829. try
  830. {
  831. pADO = new TADOQuery(NULL);
  832. pADO->Close();
  833. pADO->Connection = ITSDb_GetConnection();
  834. ITSDb_SQLText(pADO, sQry);
  835. ITSDb_SQLBind(pADO, "p01", FVMS_SCH_TYPE);
  836. ITSDb_SQLBind(pADO, "p02", AVmsNmbr);
  837. pADO->ExecSQL();
  838. bResult = true;
  839. }
  840. catch(EDatabaseError &E)
  841. {
  842. ITSDb_GetConnection()->RollbackTrans();
  843. DBERRORMSG("TVMSM600M::DeleteVmsScenario", String(E.ClassName()), E.Message, sQry);
  844. throw Exception(String(E.ClassName()) + E.Message);
  845. }
  846. catch(Exception &e)
  847. {
  848. ITSDb_GetConnection()->RollbackTrans();
  849. DBERRORMSG("TVMSM600M::DeleteVmsScenario", String(e.ClassName()), e.Message, sQry);
  850. throw Exception(String(e.ClassName()) + e.Message);
  851. }
  852. }
  853. __finally
  854. {
  855. if (pADO)
  856. {
  857. pADO->Close();
  858. delete pADO;
  859. }
  860. }
  861. #endif
  862. return bResult;
  863. }
  864. //---------------------------------------------------------------------------
  865. void __fastcall TFrmVmsMsgScheMngr::DrawTrafficScenarioForm()
  866. {
  867. #if 0
  868. TcxGridTableView *pGrid = TvSche;
  869. if (!pGrid) return;
  870. TcxDataController *pGDC = pGrid->DataController;
  871. try
  872. {
  873. pGrid->BeginUpdate();
  874. pGDC->BeginUpdate();
  875. int nRows = pGDC->RecordCount;
  876. try
  877. {
  878. for (int ii = 0; ii < nRows; ii++)
  879. {
  880. int nSchFormType = pGDC->Values[ii][Col23->Index];
  881. if (nSchFormType != eSchTp_traffic) continue;
  882. String sFormId = VarToStr(pGDC->Values[ii][Col00->Index]);
  883. String sFormClr = VarToStr(pGDC->Values[ii][Col14->Index]);
  884. int nFormType = VarToStr(pGDC->Values[ii][Col15->Index]).ToIntDef(0);
  885. FIfscId[0] = VarToStr(pGDC->Values[ii][Col09->Index]);
  886. FIfscId[1] = VarToStr(pGDC->Values[ii][Col10->Index]);
  887. FIfscId[2] = VarToStr(pGDC->Values[ii][Col11->Index]);
  888. FIfscId[3] = VarToStr(pGDC->Values[ii][Col12->Index]);
  889. FIfscId[4] = VarToStr(pGDC->Values[ii][Col16->Index]);
  890. FIfscId[5] = VarToStr(pGDC->Values[ii][Col17->Index]);
  891. FIfscId[6] = VarToStr(pGDC->Values[ii][Col18->Index]);
  892. FIfscId[7] = VarToStr(pGDC->Values[ii][Col19->Index]);
  893. switch(nFormType)
  894. {
  895. case 11:// ' 소통상황(1단)
  896. case 12:// ' 소통상황(2단)
  897. case 13:// ' 소통상황(3단)
  898. case 14:// ' 소통상황(4단)
  899. if (LoadTrafficFormObjectInfo(sFormId, sFormClr, m_pEdtDesigner))
  900. {
  901. m_pEdtDesigner->GetVmsFormImage(ImgForm);
  902. TStream *pImgStream = new TMemoryStream();
  903. try
  904. {
  905. void *p;
  906. Variant v;
  907. ImgForm->Picture->Bitmap->SaveToStream(pImgStream);
  908. int aBound[]={0, pImgStream->Size - 1};
  909. v = VarArrayCreate(aBound, 1, varByte);
  910. p = VarArrayLock(v);
  911. pImgStream->Position = 0;
  912. pImgStream->Read(p, pImgStream->Size);
  913. VarArrayUnlock(v);
  914. pGDC->Values[ii][1] = v;
  915. }
  916. __finally
  917. {
  918. SAFE_DELETE(pImgStream);
  919. }
  920. }
  921. break;
  922. }
  923. }
  924. }
  925. catch(Exception &e)
  926. {
  927. }
  928. }
  929. __finally
  930. {
  931. pGDC->EndUpdate();
  932. pGrid->EndUpdate();
  933. }
  934. #endif
  935. }
  936. //---------------------------------------------------------------------------
  937. void __fastcall TFrmVmsMsgScheMngr::DrawAtmpScenarioForm()
  938. {
  939. #if 0
  940. TcxGridTableView *pGrid = TvSche;
  941. if (!pGrid) return;
  942. TcxDataController *pGDC = pGrid->DataController;
  943. try
  944. {
  945. pGrid->BeginUpdate();
  946. pGDC->BeginUpdate();
  947. int nRows = pGDC->RecordCount;
  948. try
  949. {
  950. for (int ii = 0; ii < nRows; ii++)
  951. {
  952. int nSchFormType = pGDC->Values[ii][Col23->Index];
  953. if (nSchFormType != eSchTp_atmp) continue;
  954. String sFormId = VarToStr(pGDC->Values[ii][Col00->Index]);
  955. String sFormClr = VarToStr(pGDC->Values[ii][Col14->Index]);
  956. int nFormType = VarToStr(pGDC->Values[ii][Col15->Index]).ToIntDef(0);
  957. FIfscId[0] = VarToStr(pGDC->Values[ii][9]);
  958. switch(nFormType)
  959. {
  960. case 90:// ' 소통상황(1단)
  961. if (LoadTrafficFormObjectInfo(sFormId, sFormClr, m_pEdtDesigner))
  962. {
  963. m_pEdtDesigner->GetVmsFormImage(ImgForm);
  964. TStream *pImgStream = new TMemoryStream();
  965. try
  966. {
  967. void *p;
  968. Variant v;
  969. ImgForm->Picture->Bitmap->SaveToStream(pImgStream);
  970. int aBound[]={0, pImgStream->Size - 1};
  971. v = VarArrayCreate(aBound, 1, varByte);
  972. p = VarArrayLock(v);
  973. pImgStream->Position = 0;
  974. pImgStream->Read(p, pImgStream->Size);
  975. VarArrayUnlock(v);
  976. pGDC->Values[ii][1] = v;
  977. }
  978. __finally
  979. {
  980. SAFE_DELETE(pImgStream);
  981. }
  982. }
  983. break;
  984. }
  985. }
  986. }
  987. catch(Exception &e)
  988. {
  989. }
  990. }
  991. __finally
  992. {
  993. pGDC->EndUpdate();
  994. pGrid->EndUpdate();
  995. }
  996. #endif
  997. }
  998. //---------------------------------------------------------------------------
  999. bool __fastcall TFrmVmsMsgScheMngr::LoadTrafficFormObjectInfo(String AFormId, String ABkColor, TVmsFormDesigner *ADesigner)
  1000. {
  1001. #if 0
  1002. ADesigner->Clear();
  1003. m_pEdtDesigner->BkColorCode = ABkColor;
  1004. String sQry;
  1005. TADOQuery *pADO = NULL;
  1006. sQry = "SELECT A.*, \r\n"
  1007. " C.VMS_FONT_NAME_NM, \r\n"
  1008. " B.IMAG_DATA AS SYMB_IMG, \r\n"
  1009. " B.SYMB_EXPL AS SYMB_IMG_NM, \r\n"
  1010. " D.VMS_FORM_TYPE_CD \r\n"
  1011. " FROM TB_VMS_FORM_OBJECT A, \r\n"
  1012. " TB_VMS_SYMB_LIB B, \r\n"
  1013. " TB_VMS_FONT_NAME C, \r\n"
  1014. " TB_VMS_FORM D \r\n"
  1015. " WHERE D.VMS_FORM_ID = :p01 \r\n"
  1016. " AND D.VMS_FORM_ID = A.VMS_FORM_ID \r\n"
  1017. " AND A.SYMB_LIB_NMBR = B.SYMB_LIB_NMBR(+) \r\n"
  1018. " AND A.VMS_FONT_NAME_CD = C.VMS_FONT_NAME_CD(+) \r\n"
  1019. " ORDER BY A.VMS_FORM_OBJECT_ID ASC \r\n";
  1020. int VMS_FORM_TYPE_CD = -1;
  1021. try
  1022. {
  1023. try
  1024. {
  1025. pADO = new TADOQuery(NULL);
  1026. pADO->Close();
  1027. pADO->Connection = ITSDb_GetConnection();
  1028. ITSDb_SQLText(pADO, sQry);
  1029. ITSDb_SQLBind(pADO, "p01", AFormId);
  1030. ITSDb_SQLOpen(pADO);
  1031. int nDrawType;
  1032. String sObjKind;
  1033. for( ; !pADO->Eof; pADO->Next())
  1034. {
  1035. VMS_FORM_TYPE_CD = pADO->FieldByName("VMS_FORM_TYPE_CD")->AsInteger;
  1036. int nFormId = pADO->FieldByName("VMS_FORM_ID")->AsInteger;
  1037. int nObjId = pADO->FieldByName("VMS_FORM_OBJECT_ID")->AsInteger;
  1038. int nObjType = pADO->FieldByName("VMS_FORM_OBJECT_TYPE_CD")->AsInteger;
  1039. if (nObjType == 1 || //심볼
  1040. nObjType == 2 || //이미지
  1041. nObjType == 3 || //배경이미지
  1042. nObjType == 17 || //@소통정보이미지 (1열)
  1043. nObjType == 27 || //@소통정보이미지2(2열)
  1044. nObjType == 37 || //@소통정보이미지3(3열)
  1045. nObjType == 47 || //소통이미지4
  1046. nObjType == 200 || //동영상
  1047. nObjType == 300 || //스트리밍영상
  1048. nObjType == 406 || //@통합대기등급 이미지
  1049. nObjType == 407 || //@미세먼지등급 이미지
  1050. nObjType == 408 || //@초미세먼지등급 이미지
  1051. nObjType == 413 //@오존등급이미지
  1052. )
  1053. {
  1054. if (nObjType == 1) sObjKind = OBJKIND_IMAGEID; //Image Id
  1055. else sObjKind = OBJKIND_IMAGE; //Image
  1056. nDrawType = 1; //이미지그리기
  1057. }
  1058. else
  1059. {
  1060. sObjKind = OBJKIND_TEXT; //문자열
  1061. nDrawType = 0; //문자열그리기
  1062. }
  1063. //실재 맵핑된 구간의 정보를 표출하도록 한다.
  1064. int nBlinking = pADO->FieldByName("VMS_DSPL_BLINKING")->AsInteger;
  1065. int nPosX = pADO->FieldByName("VMS_DSPL_XCRDN")->AsInteger;
  1066. int nPosY = pADO->FieldByName("VMS_DSPL_YCRDN")->AsInteger;
  1067. int nDsplW = pADO->FieldByName("VMS_DSPL_WIDTH")->AsInteger;
  1068. int nDsplH = pADO->FieldByName("VMS_DSPL_HEIGHT")->AsInteger;
  1069. TVmsFormObject *pObj = ADesigner->AddObject((VmsObjectDrawType)nDrawType);
  1070. if (!pObj) continue;
  1071. //11 , ' @구간명
  1072. //12 , ' @시점명
  1073. //13 , ' @종점명
  1074. //14 , ' @소통상황
  1075. //15 , ' @통행시간
  1076. //16 , ' @통행속도
  1077. //17 , ' @소통이미지
  1078. pObj->Text = pADO->FieldByName("VMS_DSPL_TXT")->AsString.Trim();
  1079. pObj->RunText = pObj->Text;
  1080. String sIfscId = "";
  1081. if (nObjType >= 11 && nObjType < 17)
  1082. sIfscId = FIfscId[0];
  1083. else
  1084. if (nObjType >= 21 && nObjType < 27)
  1085. sIfscId = FIfscId[1];
  1086. else
  1087. if (nObjType >= 31 && nObjType < 37)
  1088. sIfscId = FIfscId[2];
  1089. else
  1090. if (nObjType >= 41 && nObjType < 47)
  1091. sIfscId = FIfscId[3];
  1092. if (nObjType == 401)
  1093. sIfscId = FIfscId[0];
  1094. switch(nObjType)
  1095. {
  1096. case 17: sIfscId = FIfscId[4]; break;
  1097. case 27: sIfscId = FIfscId[5]; break;
  1098. case 37: sIfscId = FIfscId[6]; break;
  1099. case 47: sIfscId = FIfscId[7]; break;
  1100. }
  1101. if (sIfscId != "")
  1102. {
  1103. if (pADO->FieldByName("VMS_FORM_TYPE_CD")->AsInteger == 90)
  1104. {
  1105. TCDSAtmp *pAtmpObj = CDSAtmpManager->FLists.Find(sIfscId);
  1106. if (pAtmpObj)
  1107. {
  1108. pObj->RunText = pAtmpObj->VMS_DISP_NM;
  1109. }
  1110. }
  1111. else
  1112. {
  1113. TVmsIfsc *pIfscObj;
  1114. pIfscObj = VmsIfscManager->FLists.Find(sIfscId.ToIntDef(0));
  1115. if (pIfscObj)
  1116. {
  1117. switch(nObjType)
  1118. {
  1119. case 11: case 21: case 31: case 41:
  1120. pObj->RunText = pIfscObj->VMS_IFSC_NM;
  1121. break;
  1122. case 12: case 22: case 32: case 42:
  1123. pObj->RunText = pIfscObj->DSPL_STRT_NODE_NM;
  1124. break;
  1125. case 13: case 23: case 33: case 43:
  1126. pObj->RunText = pIfscObj->DSPL_END_NODE_NM;
  1127. break;
  1128. }
  1129. }
  1130. }
  1131. }
  1132. else
  1133. {
  1134. if (nObjType == 201)
  1135. {
  1136. }
  1137. else
  1138. if (nObjType == 301)
  1139. {
  1140. }
  1141. }
  1142. if (nObjType == 200 || nObjType == 300)
  1143. {
  1144. pObj->EditMode = false;
  1145. }
  1146. pObj->ObjSeq = nObjId;
  1147. pObj->ObjId = nObjId;
  1148. pObj->ObjKind = sObjKind;
  1149. pObj->Tag = pADO->FieldByName("VMS_IFSC_ID")->AsString;
  1150. pObj->ObjType = pADO->FieldByName("VMS_FORM_OBJECT_TYPE_CD")->AsString;
  1151. pObj->ObjSize = pADO->FieldByName("VMS_DSPL_SIZE")->AsInteger;
  1152. pObj->BkColorCode = pADO->FieldByName("VMS_DSPL_BKCOLOR")->AsString;
  1153. pObj->Blink = nBlinking == 1 ? true : false;
  1154. pObj->ImageId = pADO->FieldByName("SYMB_LIB_NMBR")->AsString;
  1155. pObj->SetPos(nPosX, nPosY);
  1156. if (pObj->ObjKind == OBJKIND_TEXT) // 문자열
  1157. {
  1158. int nFontBold = pADO->FieldByName("VMS_FONT_BOLD")->AsInteger;
  1159. pObj->FontName = pADO->FieldByName("VMS_FONT_NAME_NM")->AsString;
  1160. pObj->FontNameCode = pADO->FieldByName("VMS_FONT_NAME_CD")->AsString;
  1161. pObj->FontColorCode = pADO->FieldByName("VMS_FONT_COLR_CD")->AsString;
  1162. pObj->FontSize = pADO->FieldByName("VMS_FONT_SIZE")->AsInteger;
  1163. pObj->FontBold = nFontBold == 1 ? true : false;
  1164. pObj->TextAlign = pADO->FieldByName("VMS_FONT_ALIGN")->AsInteger;
  1165. //pObj->SetSize(pADO->FieldByName("VMS_DSPL_WIDTH")->AsInteger, pADO->FieldByName("VMS_DSPL_HEIGHT")->AsInteger);
  1166. pObj->SetRuntimeText(pObj->RunText);
  1167. #if 0
  1168. Label1->AutoSize = true;
  1169. Label1->Font->Name = pObj->FontName;
  1170. Label1->Font->Size = pObj->FontSize;
  1171. Label1->Caption = pObj->RunText;
  1172. if (pObj->FontBold)
  1173. Label1->Font->Style = TFontStyles() << fsBold;
  1174. else
  1175. Label1->Font->Style = TFontStyles();
  1176. //int nWidth = pADO->FieldByName("VMS_DSPL_WIDTH")->AsInteger;
  1177. //nWidth = Lavel1->Width;
  1178. #if 1
  1179. switch(pObj->TextAlign)
  1180. {
  1181. case 0://text_align_left:
  1182. //좌측정력인 경우 위치조정 필요 없음.
  1183. break;
  1184. case 1://text_align_right:
  1185. //좌측에서 글자길이를 뺀다음 만약 음수이면 0으로 설정
  1186. //pADO->FieldByName("VMS_DSPL_WIDTH")->AsInteger
  1187. nPosX = (nPosX+pADO->FieldByName("VMS_DSPL_WIDTH")->AsInteger) - Label1->Width;
  1188. break;
  1189. case 2://text_align_center:
  1190. //원래 글자의 중앙값을 얻은 다음에 조정된 글자의 1/2 크기를 뺀다음 음수이면 0으로 설정
  1191. nPosX = (nPosX+(pADO->FieldByName("VMS_DSPL_WIDTH")->AsInteger/2)) - (Label1->Width/2);
  1192. break;
  1193. }
  1194. if (nPosX < 0) nPosX = 0;
  1195. //AVmsObj->TextWidth = pLabel->Width;
  1196. #endif
  1197. pObj->SetSize(Label1->Width, pADO->FieldByName("VMS_DSPL_HEIGHT")->AsInteger);
  1198. #endif
  1199. }
  1200. else //if (sObjKind == "1" || sObjKind == "2") // 이미지(1), 이미지 ID(2)
  1201. {
  1202. if (pObj->ObjKind == OBJKIND_IMAGEID)
  1203. {
  1204. pObj->Text = pADO->FieldByName("SYMB_LIB_NMBR")->AsString;
  1205. }
  1206. TStream *pStream = NULL;
  1207. pStream = pADO->CreateBlobStream(pADO->FieldByName("VMS_DSPL_FIGR"), bmRead);
  1208. try
  1209. {
  1210. if (pStream && pStream->Size > 0)
  1211. {
  1212. Graphics::TBitmap *Bitmap = pObj->GetBitmap();
  1213. pStream->Position = 0;
  1214. Bitmap->LoadFromStream(pStream);
  1215. pObj->GetImage()->AutoSize= false;
  1216. pObj->GetImage()->Stretch = true;
  1217. pObj->GetImage()->Width = nDsplW;
  1218. pObj->GetImage()->Height = nDsplH;
  1219. pObj->SetSize(nDsplW, nDsplH);
  1220. pObj->SetPos(nPosX, nPosY);
  1221. //pObj->SetSize(Bitmap->Width, Bitmap->Height);
  1222. }
  1223. }
  1224. __finally
  1225. {
  1226. SAFE_DELETE(pStream);
  1227. }
  1228. }
  1229. //pObj->SetPos(nPosX, nPosY);
  1230. pObj->Show();
  1231. pObj->BringToFront();
  1232. }
  1233. if (VMS_FORM_TYPE_CD == eFormTp_traf_1 && FVmsTypeCd == "VMP2")
  1234. {
  1235. TVmsFormObject *pArw = NULL;
  1236. TVmsFormObject *pStr = NULL;
  1237. TVmsFormObject *pEnd = NULL;
  1238. int nObjCnt = ADesigner->GetObjectCount();
  1239. for(int ii = 0; ii < nObjCnt; ii++)
  1240. {
  1241. TVmsFormObject *pObj = ADesigner->GetObject(ii);
  1242. if (!pObj) continue;
  1243. int nObjType = pObj->ObjType.ToIntDef(0);
  1244. switch(nObjType)
  1245. {
  1246. case 12: // @시점명 Y
  1247. pStr = pObj;
  1248. break;
  1249. case 13: // @종점명 Y
  1250. pEnd = pObj;
  1251. break;
  1252. }
  1253. }
  1254. for(int ii = 0; ii < nObjCnt; ii++)
  1255. {
  1256. TVmsFormObject *pObj = ADesigner->GetObject(ii);
  1257. if (!pObj) continue;
  1258. int nObjType = pObj->ObjType.ToIntDef(0);
  1259. switch(nObjType)
  1260. {
  1261. case 1: // @심볼 Y
  1262. case 2: // @이미지 Y
  1263. case 17: // @소통정보이미지 Y
  1264. //if (pFormObj->TRFC_FILL_CD == "T")
  1265. if (pStr && pObj->Top <= (pStr->Top+pStr->Height) )
  1266. {
  1267. pArw = pObj;
  1268. }
  1269. break;
  1270. }
  1271. }
  1272. if (pArw && pStr && pEnd)
  1273. {
  1274. int nRange = pStr->Top + pStr->Height;
  1275. if (pArw->Top <= nRange && pEnd->Top <= nRange)
  1276. {
  1277. int ARRAWGAP = 5;
  1278. int nLeft = 0;
  1279. int nTotW = pStr->Width + ARRAWGAP +
  1280. pArw->Width + ARRAWGAP +
  1281. pEnd->Width;
  1282. if (nTotW < ADesigner->Width)
  1283. {
  1284. nLeft = (ADesigner->Width - nTotW) / 2;
  1285. }
  1286. nLeft = (ADesigner->Width - nTotW) / 2;
  1287. pStr->Left = nLeft;
  1288. pArw->Left = pStr->Left + pStr->Width + ARRAWGAP;
  1289. pEnd->Left = pArw->Left + pArw->Width + ARRAWGAP;
  1290. }
  1291. }
  1292. }
  1293. }
  1294. catch(EDatabaseError &E)
  1295. {
  1296. DBERRORMSG("TVMSM600M::LoadTrafficFormObjectInfo", String(E.ClassName()), E.Message, sQry);
  1297. throw Exception(String(E.ClassName()) + E.Message);
  1298. }
  1299. catch(Exception &exception)
  1300. {
  1301. DBERRORMSG("TVMSM600M::LoadTrafficFormObjectInfo", String(exception.ClassName()), exception.Message, sQry);
  1302. throw Exception(String(exception.ClassName()) + exception.Message);
  1303. }
  1304. }
  1305. __finally
  1306. {
  1307. if (pADO)
  1308. {
  1309. pADO->Close();
  1310. delete pADO;
  1311. }
  1312. }
  1313. #endif
  1314. return true;
  1315. }
  1316. //---------------------------------------------------------------------------
  1317. void __fastcall TFrmVmsMsgScheMngr::DrawVideoStreamScenarioForm(int AFormScheType)
  1318. {
  1319. #if 0
  1320. TcxGridTableView *pGrid = TvSche;
  1321. if (!pGrid) return;
  1322. TcxDataController *pGDC = pGrid->DataController;
  1323. try
  1324. {
  1325. pGrid->BeginUpdate();
  1326. pGDC->BeginUpdate();
  1327. int nRows = pGDC->RecordCount;
  1328. try
  1329. {
  1330. for (int ii = 0; ii < nRows; ii++)
  1331. {
  1332. int nSchFormType = pGDC->Values[ii][Col23->Index];
  1333. if (nSchFormType != AFormScheType) continue;
  1334. String sFormId = VarToStr(pGDC->Values[ii][Col00->Index]);
  1335. String sFormClr = VarToStr(pGDC->Values[ii][Col14->Index]);
  1336. int nFormType = VarToStr(pGDC->Values[ii][Col15->Index]).ToIntDef(0);
  1337. String sSymbLibNmbr = VarToStr(pGDC->Values[ii][Col20->Index]);
  1338. String sStreamAddr = VarToStr(pGDC->Values[ii][Col21->Index]);
  1339. switch(nFormType)
  1340. {
  1341. case 70:// ' 동영상 Y
  1342. case 80:// ' 스트리밍영상 Y
  1343. if (LoadVideoStreamFormObjectInfo(sFormId, sFormClr, m_pEdtDesigner, sSymbLibNmbr, sStreamAddr))
  1344. {
  1345. m_pEdtDesigner->GetVmsFormImage(ImgForm);
  1346. TStream *pImgStream = new TMemoryStream();
  1347. try
  1348. {
  1349. void *p;
  1350. Variant v;
  1351. ImgForm->Picture->Bitmap->SaveToStream(pImgStream);
  1352. int aBound[]={0, pImgStream->Size - 1};
  1353. v = VarArrayCreate(aBound, 1, varByte);
  1354. p = VarArrayLock(v);
  1355. pImgStream->Position = 0;
  1356. pImgStream->Read(p, pImgStream->Size);
  1357. VarArrayUnlock(v);
  1358. pGDC->Values[ii][1] = v;
  1359. }
  1360. __finally
  1361. {
  1362. SAFE_DELETE(pImgStream);
  1363. }
  1364. }
  1365. break;
  1366. }
  1367. }
  1368. }
  1369. catch(Exception &e)
  1370. {
  1371. }
  1372. }
  1373. __finally
  1374. {
  1375. pGDC->EndUpdate();
  1376. pGrid->EndUpdate();
  1377. }
  1378. #endif
  1379. }
  1380. //---------------------------------------------------------------------------
  1381. bool __fastcall TFrmVmsMsgScheMngr::LoadVideoStreamFormObjectInfo(String AFormId, String ABkColor, TVmsFormDesigner *ADesigner, String ASymbLibNmbr, String AStreamAddr)
  1382. {
  1383. #if 0
  1384. ADesigner->Clear();
  1385. m_pEdtDesigner->BkColorCode = ABkColor;
  1386. String sQry;
  1387. TADOQuery *pADO = NULL;
  1388. sQry = "SELECT A.*, \r\n"
  1389. " C.VMS_FONT_NAME_NM, \r\n"
  1390. " B.IMAG_DATA AS SYMB_IMG, \r\n"
  1391. " B.SYMB_EXPL AS SYMB_IMG_NM, \r\n"
  1392. " B.SYMB_FILE_NM AS SYMB_FILE_NM \r\n"
  1393. " FROM TB_VMS_FORM_OBJECT A, \r\n"
  1394. " TB_VMS_SYMB_LIB B, \r\n"
  1395. " TB_VMS_FONT_NAME C, \r\n"
  1396. " TB_VMS_FORM D \r\n"
  1397. " WHERE D.VMS_FORM_ID = :p01 \r\n"
  1398. " AND D.VMS_FORM_ID = A.VMS_FORM_ID \r\n"
  1399. " AND B.SYMB_LIB_NMBR = :p02 \r\n"
  1400. " AND A.VMS_FONT_NAME_CD = C.VMS_FONT_NAME_CD(+) \r\n"
  1401. " ORDER BY A.VMS_FORM_OBJECT_ID ASC \r\n";
  1402. try
  1403. {
  1404. try
  1405. {
  1406. pADO = new TADOQuery(NULL);
  1407. pADO->Close();
  1408. pADO->Connection = ITSDb_GetConnection();
  1409. ITSDb_SQLText(pADO, sQry);
  1410. ITSDb_SQLBind(pADO, "p01", AFormId);
  1411. ITSDb_SQLBind(pADO, "p02", ASymbLibNmbr);
  1412. ITSDb_SQLOpen(pADO);
  1413. int nDrawType;
  1414. String sObjKind;
  1415. for( ; !pADO->Eof; pADO->Next())
  1416. {
  1417. int nFormId = pADO->FieldByName("VMS_FORM_ID")->AsInteger;
  1418. int nObjId = pADO->FieldByName("VMS_FORM_OBJECT_ID")->AsInteger;
  1419. int nObjType = pADO->FieldByName("VMS_FORM_OBJECT_TYPE_CD")->AsInteger;
  1420. if (nObjType == 1 || //심볼
  1421. nObjType == 2 || //이미지
  1422. nObjType == 3 || //배경이미지
  1423. nObjType == 17 || //@소통정보이미지 (1열)
  1424. nObjType == 27 || //@소통정보이미지2(2열)
  1425. nObjType == 37 || //@소통정보이미지3(3열)
  1426. nObjType == 47 || //소통이미지4
  1427. nObjType == 200 || //동영상
  1428. nObjType == 300 || //스트리밍영상
  1429. nObjType == 406 || //@통합대기등급 이미지
  1430. nObjType == 407 || //@미세먼지등급 이미지
  1431. nObjType == 408 || //@초미세먼지등급 이미지
  1432. nObjType == 413 //@오존등급이미지
  1433. )
  1434. {
  1435. sObjKind = OBJKIND_IMAGEID; //Image Id
  1436. nDrawType = 1; //이미지그리기
  1437. }
  1438. else
  1439. {
  1440. sObjKind = OBJKIND_TEXT; //문자열
  1441. nDrawType = 0; //문자열그리기
  1442. }
  1443. int nBlinking = pADO->FieldByName("VMS_DSPL_BLINKING")->AsInteger;
  1444. int nPosX = pADO->FieldByName("VMS_DSPL_XCRDN")->AsInteger;
  1445. int nPosY = pADO->FieldByName("VMS_DSPL_YCRDN")->AsInteger;
  1446. TVmsFormObject *pObj = ADesigner->AddObject((VmsObjectDrawType)nDrawType);
  1447. if (!pObj) continue;
  1448. pObj->Text = pADO->FieldByName("SYMB_IMG_NM")->AsString.Trim();
  1449. if (AStreamAddr == "") pObj->RunText = pObj->Text;
  1450. else pObj->RunText = AStreamAddr; //pObj->Text;
  1451. pObj->EditMode = false;
  1452. pObj->ObjSeq = nObjId;
  1453. pObj->ObjId = nObjId;
  1454. pObj->ObjKind = sObjKind;
  1455. pObj->Tag = pADO->FieldByName("VMS_IFSC_ID")->AsString;
  1456. pObj->ObjType = pADO->FieldByName("VMS_FORM_OBJECT_TYPE_CD")->AsString;
  1457. pObj->ObjSize = pADO->FieldByName("VMS_DSPL_SIZE")->AsInteger;
  1458. pObj->BkColorCode = pADO->FieldByName("VMS_DSPL_BKCOLOR")->AsString;
  1459. pObj->Blink = nBlinking == 1 ? true : false;
  1460. pObj->ImageId = ASymbLibNmbr; //pADO->FieldByName("SYMB_LIB_NMBR")->AsString;
  1461. pObj->SetPos(nPosX, nPosY);
  1462. if (pObj->ObjKind == OBJKIND_TEXT) // 문자열
  1463. {
  1464. int nFontBold = pADO->FieldByName("VMS_FONT_BOLD")->AsInteger;
  1465. pObj->FontName = pADO->FieldByName("VMS_FONT_NAME_NM")->AsString;
  1466. pObj->FontNameCode = pADO->FieldByName("VMS_FONT_NAME_CD")->AsString;
  1467. pObj->FontColorCode = pADO->FieldByName("VMS_FONT_COLR_CD")->AsString;
  1468. pObj->FontSize = pADO->FieldByName("VMS_FONT_SIZE")->AsInteger;
  1469. pObj->FontBold = nFontBold == 1 ? true : false;
  1470. pObj->TextAlign = pADO->FieldByName("VMS_FONT_ALIGN")->AsInteger;
  1471. pObj->SetSize(pADO->FieldByName("VMS_DSPL_WIDTH")->AsInteger, pADO->FieldByName("VMS_DSPL_HEIGHT")->AsInteger);
  1472. pObj->SetRuntimeText(pObj->RunText);
  1473. }
  1474. else //if (sObjKind == "1" || sObjKind == "2") // 이미지(1), 이미지 ID(2)
  1475. {
  1476. if (pObj->ObjKind == OBJKIND_IMAGEID)
  1477. {
  1478. pObj->Text = pADO->FieldByName("SYMB_LIB_NMBR")->AsString;
  1479. }
  1480. TStream *pStream = NULL;
  1481. //pStream = pADO->CreateBlobStream(pADO->FieldByName("VMS_DSPL_FIGR"), bmRead);
  1482. pStream = pADO->CreateBlobStream(pADO->FieldByName("SYMB_IMG"), bmRead);
  1483. try
  1484. {
  1485. if (pStream && pStream->Size > 0)
  1486. {
  1487. Graphics::TBitmap *Bitmap = pObj->GetBitmap();
  1488. pStream->Position = 0;
  1489. Bitmap->LoadFromStream(pStream);
  1490. pObj->SetSize(Bitmap->Width, Bitmap->Height);
  1491. if (ASymbLibNmbr != "200" && ASymbLibNmbr != "300")
  1492. pObj->SetPos(0, 0);
  1493. }
  1494. }
  1495. __finally
  1496. {
  1497. SAFE_DELETE(pStream);
  1498. }
  1499. }
  1500. #if 0
  1501. switch(nObjType)
  1502. {
  1503. case 200: pObj->Text = ASymbLibNmbr; break;
  1504. case 201: pObj->Text = AStreamAddr; break;
  1505. case 300: pObj->Text = ASymbLibNmbr; break;
  1506. case 301: pObj->Text = AStreamAddr; break;
  1507. }
  1508. #endif
  1509. pObj->Show();
  1510. pObj->BringToFront();
  1511. }
  1512. }
  1513. catch(EDatabaseError &E)
  1514. {
  1515. DBERRORMSG("TVMSM600M::LoadTrafficFormObjectInfo", String(E.ClassName()), E.Message, sQry);
  1516. throw Exception(String(E.ClassName()) + E.Message);
  1517. }
  1518. catch(Exception &exception)
  1519. {
  1520. DBERRORMSG("TVMSM600M::LoadTrafficFormObjectInfo", String(exception.ClassName()), exception.Message, sQry);
  1521. throw Exception(String(exception.ClassName()) + exception.Message);
  1522. }
  1523. }
  1524. __finally
  1525. {
  1526. if (pADO)
  1527. {
  1528. pADO->Close();
  1529. delete pADO;
  1530. }
  1531. }
  1532. #endif
  1533. return true;
  1534. }
  1535. //---------------------------------------------------------------------------
  1536. void __fastcall TFrmVmsMsgScheMngr::BtnUpClick(TObject *Sender)
  1537. {
  1538. try
  1539. {
  1540. TvSche->BeginUpdate();
  1541. int nCurIdx = TvSche->DataController->FocusedRowIndex;//FocusedRecordIndex;
  1542. if (nCurIdx <= 0)
  1543. {
  1544. return;
  1545. }
  1546. int nUpIdx = nCurIdx-1;
  1547. try
  1548. {
  1549. int nCols = TvSche->ColumnCount;
  1550. for (int ii = 0; ii < nCols; ii++)
  1551. {
  1552. Variant va = TvSche->DataController->Values[nCurIdx][ii];
  1553. TvSche->DataController->Values[nCurIdx][ii] = TvSche->DataController->Values[nUpIdx][ii];
  1554. TvSche->DataController->Values[nUpIdx][ii] = va;
  1555. }
  1556. TvSche->Controller->ClearSelection();
  1557. TvSche->Controller->FocusedRowIndex = nUpIdx;
  1558. TvSche->ViewData->Records[nUpIdx]->Focused = true;
  1559. TvSche->ViewData->Records[nUpIdx]->Selected = true;
  1560. CxSche->SetFocus();
  1561. }
  1562. catch(...)
  1563. {
  1564. }
  1565. }
  1566. __finally
  1567. {
  1568. TvSche->EndUpdate();
  1569. }
  1570. }
  1571. //---------------------------------------------------------------------------
  1572. void __fastcall TFrmVmsMsgScheMngr::BtnDownClick(TObject *Sender)
  1573. {
  1574. try
  1575. {
  1576. TvSche->BeginUpdate();
  1577. int nCurIdx = TvSche->DataController->FocusedRowIndex;//FocusedRecordIndex;
  1578. if (nCurIdx < 0)
  1579. {
  1580. return;
  1581. }
  1582. if (nCurIdx == TvSche->DataController->RecordCount-1)
  1583. {
  1584. return;
  1585. }
  1586. int nDnIdx = nCurIdx+1;
  1587. try
  1588. {
  1589. int nCols = TvSche->ColumnCount;
  1590. for (int ii = 0; ii < nCols; ii++)
  1591. {
  1592. Variant va = TvSche->DataController->Values[nCurIdx][ii];
  1593. TvSche->DataController->Values[nCurIdx][ii] = TvSche->DataController->Values[nDnIdx][ii];
  1594. TvSche->DataController->Values[nDnIdx][ii] = va;
  1595. }
  1596. TvSche->Controller->ClearSelection();
  1597. TvSche->Controller->FocusedRowIndex = nDnIdx;
  1598. TvSche->ViewData->Records[nDnIdx]->Focused = true;
  1599. TvSche->ViewData->Records[nDnIdx]->Selected = true;
  1600. CxSche->SetFocus();
  1601. }
  1602. catch(...)
  1603. {
  1604. }
  1605. }
  1606. __finally
  1607. {
  1608. TvSche->EndUpdate();
  1609. }
  1610. }
  1611. //---------------------------------------------------------------------------
  1612. void __fastcall TFrmVmsMsgScheMngr::ChkAutoWidthPropertiesChange(TObject *Sender)
  1613. {
  1614. try
  1615. {
  1616. LockWindowUpdate(Handle);
  1617. TvSche->BeginUpdate();
  1618. if (ChkAutoWidth->Checked)
  1619. {
  1620. TvSche->OptionsView->DataRowHeight = 58;
  1621. TvSche->OptionsView->CellAutoHeight = false;
  1622. }
  1623. else
  1624. {
  1625. TvSche->OptionsView->DataRowHeight = 0;
  1626. TvSche->OptionsView->CellAutoHeight = true;
  1627. }
  1628. TvSche->OptionsView->ColumnAutoWidth = ChkAutoWidth->Checked;
  1629. }
  1630. __finally
  1631. {
  1632. TvSche->EndUpdate();
  1633. LockWindowUpdate(0);
  1634. //BtnBestFit->Visible = !ChkAutoWidth->Checked;
  1635. }
  1636. }
  1637. //---------------------------------------------------------------------------
  1638. void __fastcall TFrmVmsMsgScheMngr::BtnBestFitClick(TObject *Sender)
  1639. {
  1640. try
  1641. {
  1642. LockWindowUpdate(Handle);
  1643. TvSche->BeginUpdate();
  1644. TvSche->ApplyBestFit(NULL, false, false);
  1645. }
  1646. __finally
  1647. {
  1648. TvSche->EndUpdate();
  1649. LockWindowUpdate(0);
  1650. }
  1651. }
  1652. //---------------------------------------------------------------------------
  1653. void __fastcall TFrmVmsMsgScheMngr::BtnSchWeekClick(TObject *Sender)
  1654. {
  1655. TcxGridTableView *pTvList = TvSche;
  1656. TcxGridDataController *pGDC;
  1657. pGDC = pTvList->DataController;
  1658. int nFormIdx = CMM_GetRecordIndex(pTvList);
  1659. if (nFormIdx < 0)
  1660. {
  1661. Application->MessageBox(L"목록에서 VMS 스케쥴을 선택하세요.",
  1662. L"요일별 스케쥴 편집", MB_OK|MB_ICONERROR|MB_APPLMODAL);
  1663. return;
  1664. }
  1665. //int PHASE = pGDC->Values[nFormIdx][Col24->Index];
  1666. int nIdx = ColWeek1->Index;
  1667. TVMSM650M *pFrm = new TVMSM650M(this);
  1668. for (int ii = 0; ii < 7; ii++)
  1669. {
  1670. pFrm->FSchWeek[ii] = pGDC->Values[nFormIdx][nIdx+ii];
  1671. }
  1672. pFrm->ShowModal();
  1673. if (pFrm->FSelected)
  1674. {
  1675. for (int ii = 0; ii < 7; ii++)
  1676. {
  1677. pGDC->Values[nFormIdx][nIdx+ii] = pFrm->FSchWeek[ii];
  1678. }
  1679. }
  1680. delete pFrm;
  1681. pFrm = NULL;
  1682. }
  1683. //---------------------------------------------------------------------------
  1684. void __fastcall TFrmVmsMsgScheMngr::Col05CustomDrawCell(TcxCustomGridTableView *Sender, TcxCanvas *ACanvas, TcxGridTableDataCellViewInfo *AViewInfo,
  1685. bool &ADone)
  1686. {
  1687. int nRecordIdx = AViewInfo->GridRecord->RecordIndex;
  1688. if (nRecordIdx < 0)
  1689. {
  1690. return;
  1691. }
  1692. try
  1693. {
  1694. int nItemIdx = AViewInfo->Item->Index;
  1695. if (VarIsNull(AViewInfo->GridRecord->DisplayTexts[nItemIdx])) return;
  1696. String sEndDt = AViewInfo->GridRecord->DisplayTexts[nItemIdx];
  1697. if (sEndDt < Now().FormatString(STR_HHNN))
  1698. {
  1699. ACanvas->Canvas->Brush->Color = clSilver;
  1700. }
  1701. }
  1702. catch(Exception &e)
  1703. {
  1704. }
  1705. }
  1706. //---------------------------------------------------------------------------
  1707. void __fastcall TFrmVmsMsgScheMngr::Col00CustomDrawCell(TcxCustomGridTableView *Sender, TcxCanvas *ACanvas, TcxGridTableDataCellViewInfo *AViewInfo,
  1708. bool &ADone)
  1709. {
  1710. #if 0
  1711. int nRecordIdx = AViewInfo->GridRecord->RecordIndex;
  1712. if (nRecordIdx < 0)
  1713. {
  1714. return;
  1715. }
  1716. try
  1717. {
  1718. if (VarToStr(AViewInfo->GridRecord->DisplayTexts[15]).ToIntDef(0) != eFormTp_congest)
  1719. {
  1720. return;
  1721. }
  1722. if (VarIsNull(AViewInfo->GridRecord->DisplayTexts[9]))
  1723. {
  1724. ACanvas->Canvas->Brush->Color = clRed;
  1725. }
  1726. else
  1727. {
  1728. String IFSC_ID = AViewInfo->GridRecord->DisplayTexts[9].Trim();
  1729. if (IFSC_ID == "" || IFSC_ID == "0")
  1730. {
  1731. ACanvas->Canvas->Brush->Color = clRed;
  1732. }
  1733. }
  1734. }
  1735. catch(Exception &e)
  1736. {
  1737. }
  1738. #endif
  1739. }
  1740. //---------------------------------------------------------------------------
  1741. void __fastcall TFrmVmsMsgScheMngr::Col06CustomDrawCell(TcxCustomGridTableView *Sender, TcxCanvas *ACanvas, TcxGridTableDataCellViewInfo *AViewInfo,
  1742. bool &ADone)
  1743. {
  1744. int nRecordIdx = AViewInfo->GridRecord->RecordIndex;
  1745. if (nRecordIdx < 0)
  1746. {
  1747. return;
  1748. }
  1749. try
  1750. {
  1751. int nItemIdx = AViewInfo->Item->Index;
  1752. if (VarIsNull(AViewInfo->GridRecord->DisplayTexts[nItemIdx])) return;
  1753. String sUseYn = AViewInfo->GridRecord->DisplayTexts[nItemIdx];
  1754. if (sUseYn == "N")
  1755. {
  1756. ACanvas->Canvas->Brush->Color = clRed;
  1757. }
  1758. }
  1759. catch(Exception &e)
  1760. {
  1761. }
  1762. }
  1763. //---------------------------------------------------------------------------
  1764. void __fastcall TFrmVmsMsgScheMngr::CbVmsPropertiesChange(TObject *Sender)
  1765. {
  1766. if (CbVms->ItemIndex < 0) return;
  1767. FSelVmsCtlrId = APP_GetCode(CbVms);
  1768. FormClear();
  1769. TVmsCtlr *pVmsCtlr = VmsCtlrManager->FLists.Find(FSelVmsCtlrId);
  1770. if (pVmsCtlr == NULL) {
  1771. Application->MessageBox(L"VMS 스케줄 저장\r\n알수 없는 VMS 정보 입니다.",
  1772. FTitle.c_str(),
  1773. MB_OK|MB_ICONERROR|MB_APPLMODAL);
  1774. ActiveControl = CbVms;
  1775. return;
  1776. }
  1777. String sVmsModlType = pVmsCtlr->VMS_MODL_KIND;
  1778. if (FSelVmsModlType != sVmsModlType) {
  1779. FSelVmsModlType = sVmsModlType;
  1780. APP_SetCode(CbSizeType, FSelVmsModlType);
  1781. ChangeEditFormPanel();
  1782. LoadVmsFormList(sVmsModlType);
  1783. }
  1784. LoadVmsScenario(FSelVmsCtlrId);
  1785. ChangeEditMode(1);
  1786. CxVmsSche->SetFocus();
  1787. }
  1788. //---------------------------------------------------------------------------
  1789. bool __fastcall TFrmVmsMsgScheMngr::LoadVmsScenario(String AVMS_CTLR_ID)
  1790. {
  1791. CMM_ClearGridTableView(TvVmsSche);
  1792. CMM_ClearGridTableView(TvPreview);
  1793. String sQry;
  1794. TADOQuery *pADO = NULL;
  1795. sQry = "SELECT A.VMS_CTLR_ID, A.VMS_SCNR_ID, A.VMS_SCNR_NM \r\n"
  1796. " FROM TB_VMS_SCNR A \r\n"
  1797. " WHERE 1=1 \r\n"
  1798. " AND VMS_CTLR_ID = :p01 \r\n"
  1799. " ORDER BY A.VMS_CTLR_ID, A.VMS_SCNR_ID \r\n";
  1800. try {
  1801. TvVmsSche->BeginUpdate();
  1802. TcxDataController *pGDC = TvVmsSche->DataController;;
  1803. int nRow;
  1804. try {
  1805. pADO = new TADOQuery(NULL);
  1806. pADO->Close();
  1807. pADO->Connection = ITSDb_GetConnection();
  1808. ITSDb_SQLText(pADO, sQry);
  1809. ITSDb_SQLBind(pADO, "p01", AVMS_CTLR_ID);
  1810. ITSDb_SQLOpen(pADO);
  1811. for( ; !pADO->Eof; pADO->Next()) {
  1812. nRow = pGDC->AppendRecord();
  1813. pGDC->Values[nRow][ColScnrId->Index] = pADO->FieldByName("VMS_SCNR_ID")->AsString;
  1814. pGDC->Values[nRow][ColScnrNm->Index] = pADO->FieldByName("VMS_SCNR_NM")->AsString;
  1815. }
  1816. }
  1817. catch(EDatabaseError &E)
  1818. {
  1819. DBERRORMSG("TFrmVmsMsgScheMngr::LoadVmsScenario", String(E.ClassName()), E.Message, sQry);
  1820. return false;
  1821. }
  1822. catch(Exception &e)
  1823. {
  1824. DBERRORMSG("TFrmVmsMsgScheMngr::LoadVmsScenario", String(e.ClassName()), e.Message, sQry);
  1825. return false;
  1826. }
  1827. }
  1828. __finally {
  1829. if (pADO) {
  1830. pADO->Close();
  1831. delete pADO;
  1832. }
  1833. TvVmsSche->EndUpdate();
  1834. }
  1835. return true;
  1836. }
  1837. //---------------------------------------------------------------------------
  1838. void __fastcall TFrmVmsMsgScheMngr::BtnEditClick(TObject *Sender)
  1839. {
  1840. if (BtnEdit->Caption == "편집") {
  1841. ChangeEditMode(0);
  1842. FNewDb = false;
  1843. }
  1844. else {
  1845. String sScnrId = EdScnrId->Text;
  1846. ChangeEditMode(1);
  1847. if (CMM_FindGridData(TvVmsSche->DataController, sScnrId, ColScnrId->Index) >= 0) {
  1848. CMM_SetGridRow(CxVmsSche, TvVmsSche, sScnrId, ColScnrId->Index);
  1849. DisplayScenarioInfo();
  1850. }
  1851. }
  1852. }
  1853. //---------------------------------------------------------------------------
  1854. void __fastcall TFrmVmsMsgScheMngr::BtnInsertClick(TObject *Sender)
  1855. {
  1856. String newFormId = GetNextVmsScnrId(FSelVmsCtlrId);
  1857. FormClear();
  1858. EdScnrId->Text = newFormId;
  1859. ChangeEditMode(2);
  1860. FNewDb = true;
  1861. //폼유형을 설정
  1862. //APP_SetCode(CbFormType, sFormType);
  1863. //CbFormDsplEff->ItemIndex = CbFormDsplEff->Properties->Items->Count-1;
  1864. EdScnrNm->SetFocus();
  1865. }
  1866. //---------------------------------------------------------------------------
  1867. void __fastcall TFrmVmsMsgScheMngr::BtnDeleteClick(TObject *Sender)
  1868. {
  1869. int nIdx = TvVmsSche->DataController->FocusedRecordIndex;
  1870. if (nIdx < 0) return;
  1871. String sScnrId = EdScnrId->Text;
  1872. if (sScnrId.IsEmpty()) {
  1873. Application->MessageBox(L"VMS 스케줄 삭제\r\n삭제할 VMS 스케줄을 목록에서 선택하세요.",
  1874. FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  1875. if (CxVmsSche->Enabled) CxVmsSche->SetFocus();
  1876. return;
  1877. }
  1878. #if 0
  1879. if (!CheckVmsFormUse(sFormId)) return;
  1880. String sMsg;
  1881. sMsg = lblText3->Caption + ": " + sFormId;//"VMS 폼 ID: " + sFormId;
  1882. sMsg+= "\r\n" + lblText4->Caption;//"선택하신 VMS 폼 정보를 삭제하시겠습니까?";
  1883. if (Application->MessageBox(sMsg.c_str(), FTitle.c_str(), MB_YESNO|MB_ICONQUESTION|MB_APPLMODAL) != IDYES) return;
  1884. ITSDb_GetConnection()->BeginTrans();
  1885. if (DelVmsForm(sFormId))
  1886. {
  1887. ITSDb_GetConnection()->CommitTrans();
  1888. FUpdate = true;
  1889. Application->MessageBox(lblText5->Caption.c_str(),//L"VMS 폼 삭제\r\nVMS 폼정보를 삭제 하였습니다.",
  1890. FTitle.c_str(), MB_OK|MB_ICONINFORMATION|MB_APPLMODAL);
  1891. FormClear();
  1892. ChangeEditMode(1);
  1893. LoadVmsForm();
  1894. }
  1895. else {
  1896. ITSDb_GetConnection()->RollbackTrans();
  1897. }
  1898. #endif
  1899. }
  1900. //---------------------------------------------------------------------------
  1901. void __fastcall TFrmVmsMsgScheMngr::TvVmsScheFocusedRecordChanged(TcxCustomGridTableView *Sender, TcxCustomGridRecord *APrevFocusedRecord,
  1902. TcxCustomGridRecord *AFocusedRecord, bool ANewItemRecordFocusingChanged)
  1903. {
  1904. if (!AFocusedRecord) return;
  1905. DisplayScenarioInfo();
  1906. }
  1907. //---------------------------------------------------------------------------
  1908. void __fastcall TFrmVmsMsgScheMngr::DisplayScenarioInfo()
  1909. {
  1910. FormClear();
  1911. FSelIdx = CMM_GetRecordIndex(TvVmsSche);
  1912. if (FSelIdx < 0) return;
  1913. TcxDataController *pGDC = TvVmsSche->DataController;
  1914. String sScnrId = VarToStr(pGDC->Values[FSelIdx][ColScnrId->Index]);
  1915. String sScnrNm = VarToStr(pGDC->Values[FSelIdx][ColScnrNm->Index]);
  1916. EdScnrId->Text = sScnrId;
  1917. EdScnrNm->Text = sScnrNm;
  1918. GrpSchedule->Caption = "▶ VMS 시나리오 설정 (" + sScnrId + ": " + sScnrNm + ")";
  1919. LoadVmsScenarionForm(FSelVmsCtlrId, sScnrId);
  1920. ChangeEditMode(3);
  1921. }
  1922. //---------------------------------------------------------------------------
  1923. void __fastcall TFrmVmsMsgScheMngr::LoadPreviewForm(String AVmsFormId)
  1924. {
  1925. TFormImage *pImage = FFormLists.Find(AVmsFormId);
  1926. //LockWindowUpdate(GrpPreview->Handle);
  1927. if (pImage != NULL && pImage->bitmap != NULL) {
  1928. ImgPreview->Picture->Bitmap->Assign(pImage->bitmap);
  1929. }
  1930. else {
  1931. APP_ImageClear(ImgPreview->Canvas, 0, 0, ImgPreview->Width, ImgPreview->Height, clBlack);
  1932. }
  1933. //LockWindowUpdate(0);
  1934. }
  1935. //---------------------------------------------------------------------------
  1936. void __fastcall TFrmVmsMsgScheMngr::TvScheFocusedRecordChanged(TcxCustomGridTableView *Sender, TcxCustomGridRecord *APrevFocusedRecord,
  1937. TcxCustomGridRecord *AFocusedRecord, bool ANewItemRecordFocusingChanged)
  1938. {
  1939. if (!AFocusedRecord) return;
  1940. int nSelIdx = CMM_GetRecordIndex(TvSche);
  1941. if (nSelIdx < 0) return;
  1942. String sVmsFormId = VarToStr(TvSche->DataController->Values[nSelIdx][Col00->Index]);
  1943. LoadPreviewForm(sVmsFormId);
  1944. }
  1945. //---------------------------------------------------------------------------
  1946. void __fastcall TFrmVmsMsgScheMngr::TvFormFocusedRecordChanged(TcxCustomGridTableView *Sender, TcxCustomGridRecord *APrevFocusedRecord,
  1947. TcxCustomGridRecord *AFocusedRecord, bool ANewItemRecordFocusingChanged)
  1948. {
  1949. if (!AFocusedRecord) return;
  1950. int nSelIdx = CMM_GetRecordIndex(TvForm);
  1951. if (nSelIdx < 0) return;
  1952. String sVmsFormId = VarToStr(TvForm->DataController->Values[nSelIdx][ColFrm00->Index]);
  1953. LoadPreviewForm(sVmsFormId);
  1954. }
  1955. //---------------------------------------------------------------------------
  1956. void __fastcall TFrmVmsMsgScheMngr::PreviewVmsScenarionForm()
  1957. {
  1958. CMM_ClearGridTableView(TvPreview);
  1959. TcxDataController *pDcScnr = TvSche->DataController;
  1960. TcxDataController *pDcView = TvPreview->DataController;
  1961. try {
  1962. TvSche->BeginUpdate();
  1963. TvPreview->BeginUpdate();
  1964. try {
  1965. int nRowS, nRowV;
  1966. for(int nRowS = 0; nRowS < pDcScnr->RecordCount; nRowS++) {
  1967. String VMS_FORM_ID = pDcScnr->Values[nRowS][Col00->Index];
  1968. int DSPL_HR = pDcScnr->Values[nRowS][Col03->Index];
  1969. String VMS_FORM_DSPL_CNDT_NM = pDcScnr->Values[nRowS][ColDsplCndtNm->Index];
  1970. nRowV = pDcView->AppendRecord();
  1971. pDcView->Values[nRowV][ColView00->Index] = VMS_FORM_ID;
  1972. pDcView->Values[nRowV][ColView01->Index] = pDcScnr->Values[nRowS][Col01->Index];
  1973. pDcView->Values[nRowV][ColView03->Index] = DSPL_HR;
  1974. pDcView->Values[nRowV][ColViewDslplCndtNm->Index] = VMS_FORM_DSPL_CNDT_NM;
  1975. }
  1976. }
  1977. catch(Exception &e) {
  1978. }
  1979. }
  1980. __finally {
  1981. TvSche->EndUpdate();
  1982. TvPreview->EndUpdate();
  1983. TvPreview->ApplyBestFit(NULL, false, false);
  1984. }
  1985. }
  1986. //---------------------------------------------------------------------------
  1987. void __fastcall TFrmVmsMsgScheMngr::PgSchedulePageChanging(TObject *Sender, TcxTabSheet *NewPage, bool &AllowChange)
  1988. {
  1989. if (TsPreview == NewPage) {
  1990. PreviewVmsScenarionForm();
  1991. }
  1992. }
  1993. //---------------------------------------------------------------------------