FrmVmsMsgFormMngrF.cpp 116 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310
  1. //---------------------------------------------------------------------------
  2. #include <vcl.h>
  3. #include <jpeg.hpp>
  4. #include <GIFimg.hpp>
  5. #include "ITSSkinF.h"
  6. #include "ITSUtilF.h"
  7. #include "AppGlobalF.h"
  8. #include "CDSFontF.h"
  9. #include "CDSVmsIfscF.h"
  10. #include "CDSAtmpF.h"
  11. #include "CDSParkF.h"
  12. #include "CDSVmsFormF.h"
  13. #include "CDSVmsTextItemF.h"
  14. #pragma hdrstop
  15. #include "FrmVmsMsgFormMngrF.h"
  16. #include "VMSM570MF.h"
  17. #include "VMSM510MF.h"
  18. #include "VMSM580MF.h"
  19. //---------------------------------------------------------------------------
  20. #pragma package(smart_init)
  21. #pragma link "cxButtons"
  22. #pragma link "cxCalendar"
  23. #pragma link "cxContainer"
  24. #pragma link "cxControls"
  25. #pragma link "cxDropDownEdit"
  26. #pragma link "cxEdit"
  27. #pragma link "cxGraphics"
  28. #pragma link "cxGroupBox"
  29. #pragma link "cxLabel"
  30. #pragma link "cxLookAndFeelPainters"
  31. #pragma link "cxLookAndFeels"
  32. #pragma link "cxMaskEdit"
  33. #pragma link "cxPC"
  34. #pragma link "cxPCdxBarPopupMenu"
  35. #pragma link "cxSpinEdit"
  36. #pragma link "cxSplitter"
  37. #pragma link "cxTextEdit"
  38. #pragma link "cxTimeEdit"
  39. #pragma link "dxSkinBlack"
  40. #pragma link "dxSkinBlue"
  41. #pragma link "dxSkinCaramel"
  42. #pragma link "dxSkinCoffee"
  43. #pragma link "dxSkinDarkRoom"
  44. #pragma link "dxSkinDarkSide"
  45. #pragma link "dxSkinFoggy"
  46. #pragma link "dxSkinGlassOceans"
  47. #pragma link "dxSkiniMaginary"
  48. #pragma link "dxSkinLilian"
  49. #pragma link "dxSkinLiquidSky"
  50. #pragma link "dxSkinLondonLiquidSky"
  51. #pragma link "dxSkinMcSkin"
  52. #pragma link "dxSkinMoneyTwins"
  53. #pragma link "dxSkinOffice2007Black"
  54. #pragma link "dxSkinOffice2007Blue"
  55. #pragma link "dxSkinOffice2007Green"
  56. #pragma link "dxSkinOffice2007Pink"
  57. #pragma link "dxSkinOffice2007Silver"
  58. #pragma link "dxSkinOffice2010Black"
  59. #pragma link "dxSkinOffice2010Blue"
  60. #pragma link "dxSkinOffice2010Silver"
  61. #pragma link "dxSkinsCore"
  62. #pragma link "dxSkinscxPCPainter"
  63. #pragma link "dxSkinSeven"
  64. #pragma link "dxSkinSharp"
  65. #pragma link "dxSkinSilver"
  66. #pragma link "dxSkinStardust"
  67. #pragma link "cxRadioGroup"
  68. #pragma link "cxClasses"
  69. #pragma link "cxCustomData"
  70. #pragma link "cxData"
  71. #pragma link "cxDataStorage"
  72. #pragma link "cxDBData"
  73. #pragma link "cxFilter"
  74. #pragma link "cxGrid"
  75. #pragma link "cxGridCustomTableView"
  76. #pragma link "cxGridCustomView"
  77. #pragma link "cxGridDBTableView"
  78. #pragma link "cxGridLevel"
  79. #pragma link "cxGridTableView"
  80. #pragma link "cxStyles"
  81. #pragma link "cxCheckBox"
  82. #pragma link "cxImage"
  83. #pragma link "cxButtonEdit"
  84. #pragma link "cxBlobEdit"
  85. #pragma link "VmsDesignerF"
  86. #pragma link "cxColorComboBox"
  87. #pragma link "cxCalc"
  88. #pragma link "cxHint"
  89. #pragma link "dxCustomHint"
  90. #pragma link "dxScreenTip"
  91. #pragma link "dxSkinsForm"
  92. #pragma link "FFBaseComponent"
  93. #pragma link "FFBasePlay"
  94. #pragma link "FFPlay"
  95. #pragma link "dxGDIPlusClasses"
  96. #pragma resource "*.dfm"
  97. TFrmVmsMsgFormMngr *FrmVmsMsgFormMngr = NULL;
  98. //---------------------------------------------------------------------------
  99. __fastcall TFrmVmsMsgFormMngr::TFrmVmsMsgFormMngr(TComponent* Owner)
  100. : TForm(Owner)
  101. {
  102. //CMM_SetFormPosition(g_AppCfg.bSaveForm);
  103. ITSSkin_Initialize(Application, g_AppCfg.sLang);
  104. ITSSkin_Caption(false);
  105. ITSSkin_Load(this);
  106. //CMM_LoadForm(g_sFormsDir, this);
  107. SetColorScheme(g_AppCfg.sSkinName);
  108. FUpdate= false;
  109. FTitle = Caption;//"VMS 문자식 폼관리";
  110. FListSymb = new TList;
  111. EditMode = false;
  112. FTrafBackSymb = false;
  113. PgEdit->ActivePage = TsEdit;
  114. //PgFormTab->ActivePage = TsForm;
  115. //BtnSaveImgFile->Caption = "Save form image";
  116. //BtnSaveImgFile->Hint = "Save the form as an image file.";
  117. FSelObjType = eSelObjNone;
  118. PnlObjCctv->Align = alClient;
  119. PnlObjSymb->Align = alClient;
  120. PnlObjText->Align = alClient;
  121. //TvList->FilterRow->ApplyChanges = fracDelayed;//fracImmediately;
  122. TvList->OptionsBehavior->ShowLockedStateImageOptions->Filtering = lsimNever;
  123. BtnLime->LookAndFeel->NativeStyle = false;
  124. BtnLime->LookAndFeel->SkinName = "";
  125. BtnYellow->LookAndFeel->NativeStyle = false;
  126. BtnYellow->LookAndFeel->SkinName = "";
  127. BtnRed->LookAndFeel->NativeStyle = false;
  128. BtnRed->LookAndFeel->SkinName = "";
  129. BtnObjLime->LookAndFeel->NativeStyle = false;
  130. BtnObjLime->LookAndFeel->SkinName = "";
  131. BtnObjYellow->LookAndFeel->NativeStyle = false;
  132. BtnObjYellow->LookAndFeel->SkinName = "";
  133. BtnObjRed->LookAndFeel->NativeStyle = false;
  134. BtnObjRed->LookAndFeel->SkinName = "";
  135. FLastImageFileName = "";
  136. }
  137. //---------------------------------------------------------------------------
  138. void __fastcall TFrmVmsMsgFormMngr::SetColorScheme(String ASkinName)
  139. {
  140. dxSkinController1->SkinName = ASkinName;
  141. dxSkinController1->Refresh();
  142. }
  143. //---------------------------------------------------------------------------
  144. void __fastcall TFrmVmsMsgFormMngr::CommClose()
  145. {
  146. try
  147. {
  148. if (m_pEdtDesigner)
  149. {
  150. delete m_pEdtDesigner;
  151. m_pEdtDesigner = NULL;
  152. }
  153. APP_DelVmsSizeCombo(CbSizeType);
  154. ClearSymbloList();
  155. SAFE_DELETE(FListSymb);
  156. ITSSkin_Term();
  157. //CMM_SaveForm(g_sFormsDir, this);
  158. }
  159. catch(...)
  160. {
  161. }
  162. }
  163. //---------------------------------------------------------------------------
  164. void __fastcall TFrmVmsMsgFormMngr::FormCreate(TObject *Sender)
  165. {
  166. ScrollBox1->ParentColor = true;
  167. InitDbLoading();
  168. m_pEdtDesigner = new TVmsFormDesigner(PnlEditForm);
  169. FOR_STL(TCDSFontColor*, pObj, CDSFontManager->FFontColors)
  170. {
  171. m_pEdtDesigner->InitFontColor(pObj->VMS_FONT_COLR_CD, (TColor)pObj->VMS_FONT_COLR_VAL);
  172. }
  173. FOR_STL(TCDSBackColor*, pObj, CDSFontManager->FBackColors)
  174. {
  175. m_pEdtDesigner->InitBackColor(pObj->VMS_BACK_COLR_CD, (TColor)pObj->VMS_BACK_COLR_VAL);
  176. }
  177. FOR_STL(TCDSFontName*, pObj, CDSFontManager->FFontNames)
  178. {
  179. m_pEdtDesigner->InitFontName(pObj->VMS_FONT_NAME_CD, pObj->VMS_FONT_NAME_NM);
  180. }
  181. }
  182. //---------------------------------------------------------------------------
  183. void __fastcall TFrmVmsMsgFormMngr::InitDbLoading()
  184. {
  185. // INITDATA
  186. Application->ProcessMessages();
  187. if (!VmsCtlrManager) {
  188. VmsCtlrManager = new TVmsCtlrManager();
  189. }
  190. VmsCtlrManager->LoadVmsModlSize();
  191. VmsCtlrManager->LoadFromDb();
  192. if (SysCodeManager == NULL) {
  193. SysCodeManager = new TSysCodeManager();
  194. }
  195. SysCodeManager->LoadFromDb();
  196. if (!VmsTextItemManager) {
  197. VmsTextItemManager = new TVmsTextItemManager();
  198. }
  199. VmsTextItemManager->LoadFromDb();
  200. if(!CDSFontManager) {
  201. CDSFontManager = new TCDSFontManager();
  202. }
  203. CDSFontManager->LoadFontInfo();
  204. }
  205. //---------------------------------------------------------------------------
  206. void __fastcall TFrmVmsMsgFormMngr::FormShow(TObject *Sender)
  207. {
  208. ::SendMessage(ReForm->Handle, EM_SETLANGOPTIONS, 0, (LPARAM)(::SendMessage(ReForm->Handle, EM_GETLANGOPTIONS, 0, 0) & ~IMF_AUTOFONT));
  209. ::SendMessage(ReFormTemp->Handle, EM_SETLANGOPTIONS, 0, (LPARAM)(::SendMessage(ReFormTemp->Handle, EM_GETLANGOPTIONS, 0, 0) & ~IMF_AUTOFONT));
  210. Refresh();
  211. FormInit();
  212. ChangeEditMode(1);
  213. TmrShow->Enabled = true;
  214. }
  215. //---------------------------------------------------------------------------
  216. void __fastcall TFrmVmsMsgFormMngr::FormInit()
  217. {
  218. //TvList->OptionsView->NoDataToDisplayInfoText = "<등록되어 있는 폼 정보가 없습니다>";
  219. m_pEdtDesigner->ApplicationHandle = (long)Handle;
  220. //VMS사이즈
  221. APP_FillVmsSizeType(CbSizeType, false);
  222. //폼유형
  223. APP_FillCode(CbFormType, "VMS_FORM_TYPE_CD");
  224. //표출방법
  225. APP_FillCode(CbFormDsplEff, "VMS_FORM_DSPL_EFF_CD");
  226. //폼객체종류
  227. APP_FillCode(CbObjKind, "VMS_FORM_OBJ_KIND_CD");
  228. CbObjKind->ItemIndex = -1;
  229. FormObjectInit();
  230. ReForm->Paragraph->Numbering = nsNone;
  231. ReForm->Paragraph->Alignment = taCenter;//enum TAlignment { taLeftJustify, taRightJustify, taCenter };
  232. FNewDb = false;
  233. }
  234. //---------------------------------------------------------------------------
  235. void __fastcall TFrmVmsMsgFormMngr::FormObjectInit()
  236. {
  237. //TvObjList->OptionsView->NoDataToDisplayInfoText = "<등록되어 있는 객체 정보가 없습니다>";
  238. m_bEdit = false;
  239. PnlEdtBack->Left = 6;
  240. PnlEdtBack->Top = 4;
  241. PnlRePreview->Left = 4;
  242. PnlRePreview->Top = 4;
  243. //ReForm->Left = 6;
  244. //ReForm->Top = 4;
  245. //폼색상
  246. CbFormBkClr->Items->Clear();
  247. CbObjBkClr->Items->Clear();
  248. FOR_STL(TCDSBackColor*, pObj, CDSFontManager->FBackColors) {
  249. CbFormBkClr->Items->AddObject("", (TObject*)pObj->VMS_BACK_COLR_VAL);
  250. CbObjBkClr->Items->AddObject("", (TObject*)pObj->VMS_BACK_COLR_VAL);
  251. }
  252. CbFormBkClr->ItemIndex = 0;
  253. CbObjBkClr->ItemIndex = 0;
  254. //CbFormBkClr->Items->AddObject("", (TObject*)clBlack);
  255. //CbFormBkClr->Items->AddObject("", (TObject*)clRed);
  256. //CbFormBkClr->Items->AddObject("", (TObject*)clLime);
  257. //CbFormBkClr->Items->AddObject("", (TObject*)clYellow);
  258. //객체배경색상
  259. //CbObjBkClr->Items->AddObject("", (TObject*)clBlack);
  260. //CbObjBkClr->Items->AddObject("", (TObject*)clRed);
  261. //CbObjBkClr->Items->AddObject("", (TObject*)clLime);
  262. //CbObjBkClr->Items->AddObject("", (TObject*)clYellow);
  263. //문자열색상
  264. CbFontClr->Items->Clear();
  265. FOR_STL(TCDSFontColor*, pObj, CDSFontManager->FFontColors) {
  266. CbFontClr->Items->AddObject("", (TObject*)pObj->VMS_FONT_COLR_VAL);
  267. }
  268. CbFontClr->ItemIndex = 0;
  269. //직접입력 문자열색상
  270. CbFontColorRe->Items->Clear();
  271. CbFontColorRe->Items = CbFontClr->Items;
  272. CbFontColorRe->ItemIndex = 0;
  273. //VMS Font
  274. APP_FillCode(CbFontName, "FONT_KIND_CD");
  275. APP_FillCode(CbFontNameRe, "FONT_KIND_CD");
  276. CbFillIn->Properties->Items->Clear();
  277. CbFillIn1->Properties->Items->Clear();
  278. CbTextFillIn->Properties->Items->Clear();
  279. CbFillIn->Properties->Items->AddObject("문자열(Fill In) 추가", (TObject*)NULL);
  280. CbFillIn1->Properties->Items->AddObject("-Fill In-", (TObject*)NULL);
  281. CbTextFillIn->Properties->Items->AddObject("-문자열 속성-", (TObject*)NULL);
  282. FOR_STL(TVmsTextItem*, pObj, VmsTextItemManager->FLists) {
  283. CbFillIn->Properties->Items->AddObject(pObj->TXT_ITEM_FILLIN, (TObject*)pObj);
  284. //CbTextFillIn->Properties->Items->AddObject(pObj->TXT_ITEM_ID, (TObject*)pObj);
  285. CbTextFillIn->Properties->Items->Add(" [" + pObj->TXT_ITEM_ID + "] " + pObj->TXT_ITEM_FILLIN);
  286. if (pObj->TXT_ITEM_ID == DFLT_TEXT_TYPE) {
  287. continue;
  288. }
  289. CbFillIn1->Properties->Items->AddObject(pObj->TXT_ITEM_FILLIN, (TObject*)pObj);
  290. }
  291. CbFillIn->ItemIndex = 0;
  292. CbFillIn1->ItemIndex = 0;
  293. CbTextFillIn->ItemIndex = 0;
  294. }
  295. //---------------------------------------------------------------------------
  296. void __fastcall TFrmVmsMsgFormMngr::TmrShowTimer(TObject *Sender)
  297. {
  298. TmrShow->Enabled = false;
  299. CbSizeType->ItemIndex = -1;
  300. CbSizeType->ItemIndex = 0;
  301. }
  302. //---------------------------------------------------------------------------
  303. void __fastcall TFrmVmsMsgFormMngr::BtnCloseClick(TObject *Sender)
  304. {
  305. Close();
  306. }
  307. //---------------------------------------------------------------------------
  308. void __fastcall TFrmVmsMsgFormMngr::FormClose(TObject *Sender, TCloseAction &Action)
  309. {
  310. CommClose();
  311. FrmVmsMsgFormMngr = NULL;
  312. Action = caFree;
  313. }
  314. //---------------------------------------------------------------------------
  315. void __fastcall TFrmVmsMsgFormMngr::FormCloseQuery(TObject *Sender, bool &CanClose)
  316. {
  317. if (FUpdate)
  318. {
  319. //CComm_VmsFormUpdate();
  320. //POST_MSG(Application->MainForm->Handle, WM_DATABASE_REFRESH, WP_MSG_14, 0);
  321. }
  322. }
  323. //---------------------------------------------------------------------------
  324. void __fastcall TFrmVmsMsgFormMngr::BtnEditClick(TObject *Sender)
  325. {
  326. if (BtnEdit->Caption == "편집") {
  327. ChangeEditMode(0);
  328. FNewDb = false;
  329. }
  330. else {
  331. String sId = EdFormId->Text;
  332. ChangeEditMode(1);
  333. if (CMM_FindGridData(TvList->DataController, sId, ColVMS_FORM_ID->Index) >= 0) {
  334. CMM_SetGridRow(CxList, TvList, sId, ColVMS_FORM_ID->Index);
  335. DisplayInfo();
  336. }
  337. }
  338. }
  339. //---------------------------------------------------------------------------
  340. void __fastcall TFrmVmsMsgFormMngr::ChangeEditMode(int AEdit)
  341. {
  342. bool bEnabled = false;
  343. CbFormType->Enabled = false;
  344. switch(AEdit)
  345. {
  346. case 0: //편집버튼클릭
  347. {
  348. BtnEdit->Enabled = true;
  349. BtnInsert->Enabled = false;
  350. BtnDelete->Enabled = false;
  351. BtnCopyAdd->Enabled = false;
  352. BtnCopyAdd212->Enabled = false;
  353. BtnSave->Enabled = true;
  354. BtnEdit->Caption = "취소";//"취소";
  355. BtnEdit->Hint = "데이터 편집 취소";//데이터 편집 취소";
  356. EditMode = true;
  357. }
  358. break;
  359. case 1: //편집[취소]버튼클릭
  360. {
  361. FormClear(); //화면을 모두 지운다.
  362. BtnEdit->Enabled = false;
  363. BtnInsert->Enabled = true;
  364. BtnDelete->Enabled = false;
  365. BtnCopyAdd->Enabled = false;
  366. BtnCopyAdd212->Enabled = false;
  367. BtnSave->Enabled = false;
  368. BtnEdit->Caption = "편집";//"편집";
  369. BtnEdit->Hint = "데이터 편집";//데이터 편집";
  370. //bEnabled = true;
  371. EditMode = false;
  372. }
  373. break;
  374. case 2: //추가
  375. {
  376. BtnEdit->Enabled = true;
  377. BtnInsert->Enabled = false;
  378. BtnDelete->Enabled = false;
  379. BtnCopyAdd->Enabled = false;
  380. BtnCopyAdd212->Enabled = false;
  381. BtnSave->Enabled = true;
  382. BtnEdit->Caption = "취소";//"취소";
  383. BtnEdit->Hint = "데이터 편집 취소";//데이터 편집 취소";
  384. EditMode = true;
  385. //CbFormType->Enabled = true;
  386. }
  387. break;
  388. case 3: //수정모드
  389. {
  390. BtnEdit->Enabled = true;
  391. BtnInsert->Enabled = true;
  392. BtnDelete->Enabled = true;
  393. BtnCopyAdd->Enabled = true;
  394. BtnCopyAdd212->Enabled = true;
  395. BtnSave->Enabled = false;
  396. BtnEdit->Caption = "편집";//"편집";
  397. BtnEdit->Hint = "데이터 편집";//데이터 편집";
  398. bEnabled = true;
  399. EditMode = false;
  400. }
  401. break;
  402. }
  403. BtnSaveImgFile->Enabled = false;
  404. if (ImgForm->Picture->Bitmap != NULL)
  405. {
  406. if (ImgForm->Picture->Bitmap->Height != 0)
  407. {
  408. BtnSaveImgFile->Enabled = true;
  409. }
  410. }
  411. if (AEdit == 0 || AEdit == 2) {
  412. GrpList->Enabled = false;
  413. }
  414. else {
  415. GrpList->Enabled = true;
  416. }
  417. PnlFormInfo->Enabled = EditMode;
  418. PnlObjProperty->Enabled = EditMode;
  419. PnlFormObjCmd->Enabled = EditMode;
  420. BtnReApply->Enabled = EditMode;
  421. }
  422. //---------------------------------------------------------------------------
  423. void __fastcall TFrmVmsMsgFormMngr::BtnInsertClick(TObject *Sender)
  424. {
  425. TVMSM520M *pSelForm = new TVMSM520M(this);
  426. pSelForm->ShowModal();
  427. String sFormType = pSelForm->EdNmbr->Text.Trim();
  428. bool bSelected = pSelForm->m_bSelected;
  429. delete pSelForm;
  430. pSelForm = NULL;
  431. if (!bSelected) {
  432. return;
  433. }
  434. if (sFormType == "") {
  435. return;
  436. }
  437. if (sFormType == "E" || sFormType == "I") {
  438. if (BtnAddFormObj->Enabled) {
  439. ReForm->Lines->Clear();
  440. BtnAddFormObj->Enabled = false;
  441. CbFillIn->Enabled = false;
  442. CbFillIn1->Enabled = false;
  443. }
  444. }
  445. else {
  446. if (!BtnAddFormObj->Enabled) {
  447. BtnAddFormObj->Enabled = true;
  448. CbFillIn->Enabled = true;
  449. CbFillIn1->Enabled = true;
  450. }
  451. }
  452. String newFormId = GetNextVmsFormId(sFormType.SubString(1,1));
  453. FormClear();
  454. EdFormId->Text = newFormId;
  455. ChangeEditMode(2);
  456. FNewDb = true;
  457. //폼유형을 설정
  458. APP_SetCode(CbFormType, sFormType);
  459. CbFormDsplEff->ItemIndex = CbFormDsplEff->Properties->Items->Count-1;
  460. EdFormName->SetFocus();
  461. }
  462. //---------------------------------------------------------------------------
  463. bool __fastcall TFrmVmsMsgFormMngr::AddDefFormObject(String AFontName, int AFontSize, String AFontColor,
  464. int AObjType, String AText, int ASize, int APosX, int APosY, int AAlign/*=0*/)
  465. {
  466. TVmsFormObject *pObj;
  467. //1단 소통정보
  468. pObj = m_pEdtDesigner->AddObject(odtText);
  469. if (!pObj) return false;
  470. pObj->EditMode = true;
  471. pObj->ObjKind = OBJKIND_TEXT;
  472. pObj->ObjSeq = m_pEdtDesigner->GetNewObjectSeq();
  473. pObj->ObjType = String(AObjType);
  474. pObj->Text = AText;
  475. pObj->ObjSize = pObj->Text.Length();//ASize; //Pixel
  476. pObj->BkColorCode = "0"; //Balck, m_pEdtDesigner->BkColorCode;
  477. pObj->Blink = false;
  478. pObj->FontName = AFontName;
  479. pObj->FontNameCode = APP_GetCodeIdByName(CbFontName, AFontName);
  480. pObj->FontColorCode = AFontColor; //0:Black,1:Red,2:Green,3:Yellow
  481. pObj->FontSize = AFontSize;
  482. pObj->FontBold = true;
  483. pObj->TextAlign = AAlign; //(0:left, 1:right, 2:center
  484. pObj->SetPos(APosX, APosY);
  485. pObj->Show();
  486. AddObjectToList(pObj, true);
  487. return true;
  488. }
  489. //---------------------------------------------------------------------------
  490. void __fastcall TFrmVmsMsgFormMngr::MakeDefTrafficForm(int ARows)
  491. {
  492. //0:Black,1:Red, 2:Green, 3:Yellow
  493. //0:left, 1:right, 2:center
  494. //1단 소통정보
  495. if (g_AppCfg.sLang == "kr")
  496. {
  497. switch(ARows)
  498. {
  499. case 1:
  500. AddDefFormObject("굴림체", 18, "3", 12, "@시점명", 160, 16, 7, 1); //시점명
  501. AddDefFormObject("굴림체", 18, "3", 13, "@종점명", 160, 213, 7, 0); //종점명
  502. AddDefFormObject("굴림체", 18, "3", 14, "@소통상황", 112, 64, 35, 2); //소통상황
  503. AddDefFormObject("굴림체", 18, "2", 15, "@00분", 80, 213, 35, 0); //통행시간
  504. break;
  505. case 2:
  506. AddDefFormObject("굴림체", 16, "3", 0, "현위치", 100, 31, 7); //현위치
  507. AddDefFormObject("굴림체", 16, "3", 13, "@종점명1", 100, 133, 7); //종점명1
  508. AddDefFormObject("굴림체", 16, "3", 23, "@종점명2", 100, 265, 7); //종점명2
  509. AddDefFormObject("굴림체", 16, "2", 15, "@01분", 80, 133, 35); //통행시간1
  510. AddDefFormObject("굴림체", 16, "2", 25, "@02분", 80, 265, 35); //통행시간2
  511. break;
  512. case 3:
  513. AddDefFormObject("굴림체", 16, "3", 0, "현재위치부터", 126, 7, 7); //현재위치부터
  514. AddDefFormObject("굴림체", 16, "3", 13, "@종점명1", 85, 38, 50); //종점명1
  515. AddDefFormObject("굴림체", 16, "2", 15, "@1분", 80, 161, 50); //통행시간1
  516. AddDefFormObject("굴림체", 16, "3", 14, "@상황1", 53, 217, 50); //소통상황1
  517. AddDefFormObject("굴림체", 16, "3", 23, "@종점명2", 85, 38, 82); //종점명2
  518. AddDefFormObject("굴림체", 16, "2", 25, "@2분", 80, 161, 82); //통행시간2
  519. AddDefFormObject("굴림체", 16, "3", 24, "@상황2", 53, 217, 82); //소통상황2
  520. AddDefFormObject("굴림체", 16, "3", 33, "@종점명3", 85, 38, 117); //종점명3
  521. AddDefFormObject("굴림체", 16, "2", 35, "@3분", 80, 161, 117); //통행시간3
  522. AddDefFormObject("굴림체", 16, "3", 34, "@상황3", 53, 217, 117); //소통상황3
  523. break;
  524. case 6:
  525. AddDefFormObject("굴림체", 18, "3", 18, "@지점명", 300, 18, 20); //지점명
  526. AddDefFormObject("굴림체", 18, "3", 0, "주변", 126, 153, 20); //주변
  527. AddDefFormObject("굴림체", 18, "1", 0, "정체 극심", 126, 222, 20); //정체극심
  528. break;
  529. }
  530. }
  531. else
  532. {
  533. String sFontName = lblFontName->Caption;
  534. switch(ARows)
  535. {
  536. case 1:
  537. AddDefFormObject(sFontName, 18, "3", 12, "@StartName", 160, 16, 7); //@시점명 @StartName
  538. AddDefFormObject(sFontName, 18, "3", 13, "@EndName", 160, 213, 7); //@종점명 @EndName
  539. AddDefFormObject(sFontName, 18, "3", 14, "@Congest", 112, 64, 35); //@소통상황 @Congest
  540. AddDefFormObject(sFontName, 18, "2", 15, "@00Min", 80, 213, 35); //@통행시간 @00Min
  541. break;
  542. case 2:
  543. AddDefFormObject(sFontName, 16, "3", 0, "Location", 100, 31, 7); //현위치 Location
  544. AddDefFormObject(sFontName, 16, "3", 13, "@EndName1", 100, 133, 7); //종점명1 EndName1
  545. AddDefFormObject(sFontName, 16, "3", 23, "@EndName2", 100, 265, 7); //종점명2 EndName2
  546. AddDefFormObject(sFontName, 16, "2", 15, "@01Min", 80, 133, 35); //통행시간1 01Min
  547. AddDefFormObject(sFontName, 16, "2", 25, "@02Min", 80, 265, 35); //통행시간2 02Min
  548. break;
  549. case 3:
  550. AddDefFormObject(sFontName, 16, "3", 0, "From Location", 126, 7, 7); //현재위치부터 From Location
  551. AddDefFormObject(sFontName, 16, "3", 13, "@EndName1", 85, 38, 50); //종점명1 EndName1
  552. AddDefFormObject(sFontName, 16, "2", 15, "@1Min", 80, 161, 50); //통행시간1 1Min
  553. AddDefFormObject(sFontName, 16, "3", 14, "@Congest1", 53, 217, 50); //소통상황1 Congest1
  554. AddDefFormObject(sFontName, 16, "3", 23, "@EndName2", 85, 38, 82); //종점명2 EndName2
  555. AddDefFormObject(sFontName, 16, "2", 25, "@2Min", 80, 161, 82); //통행시간2 2Min
  556. AddDefFormObject(sFontName, 16, "3", 24, "@Congest2", 53, 217, 82); //소통상황2 Congest2
  557. AddDefFormObject(sFontName, 16, "3", 33, "@EndName3", 85, 38, 117); //종점명3 EndName3
  558. AddDefFormObject(sFontName, 16, "2", 35, "@3Min", 80, 161, 117); //통행시간3 3Min
  559. AddDefFormObject(sFontName, 16, "3", 34, "@Congest3", 53, 217, 117); //소통상황3 Congest3
  560. break;
  561. case 6:
  562. AddDefFormObject(sFontName, 18, "3", 18, "@SpotName", 300, 18, 20); //@지점명 @SpotName
  563. AddDefFormObject(sFontName, 18, "3", 0, "Around", 126, 153, 20); //주변 Around
  564. AddDefFormObject(sFontName, 18, "1", 0, "Congest Zam", 126, 222, 20); //정체극심 Congest Zam
  565. break;
  566. }
  567. }
  568. #if 0
  569. (String AFontName, int AFontSize, String AFontColor,
  570. int AObjType, String AText, int ASize, int APosX, int APosY)
  571. #endif
  572. }
  573. //---------------------------------------------------------------------------
  574. void __fastcall TFrmVmsMsgFormMngr::BtnDeleteClick(TObject *Sender)
  575. {
  576. int nIdx = TvList->DataController->FocusedRecordIndex;
  577. if (nIdx < 0) return;
  578. String sFormId = EdFormId->Text;
  579. if (sFormId.IsEmpty()) {
  580. Application->MessageBox(lblText2->Caption.c_str(),//L"VMS 폼 삭제\r\n삭제할 VMS 폼을 목록에서 선택하세요.",
  581. FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  582. return;
  583. }
  584. if (!CheckVmsFormUse(sFormId)) return;
  585. String sMsg;
  586. sMsg = lblText3->Caption + ": " + sFormId;//"VMS 폼 ID: " + sFormId;
  587. sMsg+= "\r\n" + lblText4->Caption;//"선택하신 VMS 폼 정보를 삭제하시겠습니까?";
  588. if (Application->MessageBox(sMsg.c_str(), FTitle.c_str(), MB_YESNO|MB_ICONQUESTION|MB_APPLMODAL) != IDYES) return;
  589. ITSDb_GetConnection()->BeginTrans();
  590. if (DelVmsForm(sFormId))
  591. {
  592. ITSDb_GetConnection()->CommitTrans();
  593. FUpdate = true;
  594. Application->MessageBox(lblText5->Caption.c_str(),//L"VMS 폼 삭제\r\nVMS 폼정보를 삭제 하였습니다.",
  595. FTitle.c_str(), MB_OK|MB_ICONINFORMATION|MB_APPLMODAL);
  596. FormClear();
  597. ChangeEditMode(1);
  598. LoadVmsForm();
  599. }
  600. else {
  601. ITSDb_GetConnection()->RollbackTrans();
  602. }
  603. }
  604. //---------------------------------------------------------------------------
  605. void __fastcall TFrmVmsMsgFormMngr::BtnSaveImgFileClick(TObject *Sender)
  606. {
  607. if (EdFormId->Text == "") return;
  608. SaveDialog->Title = FTitle;
  609. SaveDialog->InitialDir = ExtractFilePath(Application->ExeName);
  610. SaveDialog->Filter = "Bitmap image Files (*.bmp)|*.bmp";
  611. SaveDialog->FileName = EdFormId->Text + ".bmp";
  612. if (SaveDialog->Execute())
  613. {
  614. try {
  615. String sFileName = SaveDialog->FileName;
  616. int iRet = sFileName.Pos(".bmp");
  617. if (iRet == 0)
  618. {
  619. sFileName = SaveDialog->FileName + ".bmp";
  620. }
  621. ImgForm->Picture->SaveToFile(sFileName);
  622. }
  623. catch (Exception &exception)
  624. {
  625. Application->ShowException(&exception);
  626. }
  627. }
  628. }
  629. //---------------------------------------------------------------------------
  630. void __fastcall TFrmVmsMsgFormMngr::ClearSymbloList()
  631. {
  632. for(int ii = 0; ii < FListSymb->Count; ii++)
  633. {
  634. Graphics::TBitmap *bitmap = (Graphics::TBitmap *)FListSymb->Items[ii];
  635. delete bitmap;
  636. }
  637. FListSymb->Clear();
  638. }
  639. //---------------------------------------------------------------------------
  640. void __fastcall TFrmVmsMsgFormMngr::TvListCellDblClick(TcxCustomGridTableView *Sender, TcxGridTableDataCellViewInfo *ACellViewInfo,
  641. TMouseButton AButton, TShiftState AShift,
  642. bool &AHandled)
  643. {
  644. if (!ACellViewInfo) return;
  645. DisplayInfo();
  646. }
  647. //---------------------------------------------------------------------------
  648. void __fastcall TFrmVmsMsgFormMngr::TvListFocusedRecordChanged(TcxCustomGridTableView *Sender,
  649. TcxCustomGridRecord *APrevFocusedRecord, TcxCustomGridRecord *AFocusedRecord,
  650. bool ANewItemRecordFocusingChanged)
  651. {
  652. if (!AFocusedRecord) return;
  653. DisplayInfo();
  654. }
  655. //---------------------------------------------------------------------------
  656. void __fastcall TFrmVmsMsgFormMngr::CbSizeTypePropertiesChange(TObject *Sender)
  657. {
  658. EdSizeType->Text = CbSizeType->Text;
  659. BtnSearchClick(NULL);
  660. CxList->SetFocus();
  661. }
  662. //---------------------------------------------------------------------------
  663. void __fastcall TFrmVmsMsgFormMngr::BtnSearchClick(TObject *Sender)
  664. {
  665. RefreshData();
  666. EdFocus->SetFocus();
  667. ChangeEditMode(1);
  668. }
  669. //---------------------------------------------------------------------------
  670. void __fastcall TFrmVmsMsgFormMngr::RefreshData()
  671. {
  672. // 검색조건에 의한 링크 데이터 조회
  673. TvList->DataController->Filter->Clear();
  674. FormClear();
  675. LoadVmsForm();
  676. }
  677. //---------------------------------------------------------------------------
  678. void __fastcall TFrmVmsMsgFormMngr::FormClear()
  679. {
  680. FSelObjType = eSelObjNone;
  681. FSelIdx = -1;
  682. ImgForm->Picture->Bitmap->FreeImage();
  683. ImgForm->Picture->Bitmap = NULL;
  684. EdFormId->Clear();
  685. EdFormName->Clear();
  686. CbFormType->ItemIndex = 0;
  687. CbFormDsplEff->ItemIndex = 1;
  688. CbFormBkClr->ItemIndex = 0;
  689. FormObjectClear();
  690. FNewDb = false;
  691. }
  692. //---------------------------------------------------------------------------
  693. void __fastcall TFrmVmsMsgFormMngr::FormObjectClear()
  694. {
  695. m_pEdtDesigner->Clear();
  696. CMM_ClearGridTableView(TvObjList);
  697. ReForm->Lines->Clear();
  698. EdDsplTxt->Text = "";
  699. EdCctvId->Text = "";
  700. EdPictNm->Text = "";
  701. SeLeft->Value = 0;
  702. SeTop->Value = 0;
  703. ChkBlinking->Checked = false;
  704. SePictW->Value = 0;
  705. SePictH->Value = 0;
  706. }
  707. //---------------------------------------------------------------------------
  708. void __fastcall TFrmVmsMsgFormMngr::DisplayInfo()
  709. {
  710. //TcxTabSheet* pActive = PgFormTab->ActivePage;
  711. try
  712. {
  713. LockWindowUpdate(Handle);
  714. FormClear();
  715. PgEdit->ActivePage = TsEdit;
  716. FSelIdx = TvList->DataController->FocusedRecordIndex;
  717. if( FSelIdx <= -1 )
  718. return;
  719. DisplayFormInfo(FSelIdx);
  720. ChangeEditMode(3);
  721. }
  722. __finally
  723. {
  724. //if (PgFormTab->ActivePage != pActive)
  725. // PgFormTab->ActivePage = pActive;
  726. LockWindowUpdate(0);
  727. }
  728. }
  729. //---------------------------------------------------------------------------
  730. void __fastcall TFrmVmsMsgFormMngr::DisplayFormInfo(int AIdx)
  731. {
  732. TcxGridDataController *pDc = TvList->DataController;
  733. #if 0
  734. if (AIdx < FListSymb->Count)
  735. {
  736. Graphics::TBitmap *bitmap = (Graphics::TBitmap*)FListSymb->Items[AIdx];
  737. ImgForm->Picture->Bitmap->Assign(bitmap);
  738. }
  739. #endif
  740. EdSizeType->Text = CbSizeType->Text;
  741. EdFormId->Text = VarToStr(pDc->Values[AIdx][ColVMS_FORM_ID->Index]);
  742. EdFormName->Text = VarToStr(pDc->Values[AIdx][ColVMS_FORM_NM->Index]);
  743. CbFormBkClr->ItemIndex = CDSFontManager->GetBackColorIndex(VarToStr(pDc->Values[AIdx][ColBACK_CLR->Index]).ToIntDef(0));
  744. m_sFormTypeCd = VarToStr(pDc->Values[AIdx][ColVMS_FORM_TYPE->Index]);
  745. APP_SetCode(CbFormType, m_sFormTypeCd);
  746. APP_SetCode(CbFormDsplEff, VarToStr(pDc->Values[AIdx][ColDSPL_EFF->Index]));
  747. m_pEdtDesigner->BkColorCode = CDSFontManager->GetBackColorCode((int)CbFormBkClr->Selected);
  748. LoadFormObjectInfo(EdFormId->Text, m_pEdtDesigner, m_sFormTypeCd);
  749. SelObjectListData();
  750. }
  751. //---------------------------------------------------------------------------
  752. String __fastcall TFrmVmsMsgFormMngr::FindObjectKindName(String AObjKind)
  753. {
  754. TSysClssCode *pSysClssCd = SysCodeManager->FLists.Find("VMS_FORM_OBJ_KIND_CD");
  755. if (pSysClssCd) {
  756. TSysCode *pSysCode = pSysClssCd->FLists.Find(AObjKind);
  757. if (pSysCode != NULL) {
  758. return pSysCode->CD_NM;
  759. }
  760. }
  761. return "--???--";
  762. }
  763. //---------------------------------------------------------------------------
  764. void __fastcall TFrmVmsMsgFormMngr::FnFormObjectSelected(TMessage &Msg)
  765. {
  766. m_bEdit = true;
  767. try {
  768. TVmsFormObject *pObj = (TVmsFormObject *)Msg.LParam;
  769. if (!pObj) return;
  770. if (!pObj->Selected) return;
  771. String sFormType = APP_GetCode(CbFormType);
  772. String sObjKind = pObj->ObjType;
  773. APP_SetCode(CbObjKind, sObjKind);
  774. EdObjSeq->Text = String(pObj->ObjSeq);
  775. EdObjId->Text = pObj->ObjId;
  776. ChkBlinking->Checked = pObj->Blink;
  777. CbObjBkClr->ItemIndex = pObj->BkColorCode.ToInt();
  778. SeLeft->Value = pObj->GetLeft();
  779. SeTop->Value = pObj->GetTop();
  780. if (sObjKind == FORM_OBJ_KIND_CCTV) {
  781. EdCctvId->Text = pObj->Text;
  782. }
  783. else
  784. if (sObjKind == FORM_OBJ_KIND_TEXT) {
  785. APP_SetCode(CbObjKind, pObj->ObjKind);
  786. APP_SetCode(CbTextFillIn, pObj->FillIn);
  787. CbFontClr->ItemIndex = CDSFontManager->GetFontColorIndex(pObj->FontColorCode);
  788. SeFontSize->Value = pObj->FontSize;
  789. ChkFontBold->Checked = pObj->FontBold;
  790. CbTextAlign->ItemIndex = pObj->TextAlign;
  791. APP_SetCode(CbFontName, pObj->FontNameCode);
  792. if (EdDsplTxt->Text != pObj->Text) {
  793. EdDsplTxt->Text = pObj->Text;
  794. }
  795. if (pObj->FillIn == DFLT_TEXT_TYPE) {
  796. // 기타문자열
  797. EdDsplTxt->Properties->ReadOnly = false;
  798. }
  799. else {
  800. // Fill In
  801. EdDsplTxt->Properties->ReadOnly = true;
  802. }
  803. }
  804. else
  805. if (sObjKind == FORM_OBJ_KIND_IMAGE) {
  806. EdPictNm->Text = pObj->Text;
  807. SePictW->Value = pObj->GetWidth();
  808. SePictH->Value = pObj->GetHeight();
  809. }
  810. if (pObj->DrawType == odtText) {
  811. APP_SetCode(CbFontName, pObj->FontNameCode);
  812. CbFontClr->ItemIndex = CDSFontManager->GetFontColorIndex(pObj->FontColorCode);
  813. SeFontSize->Value = pObj->FontSize;
  814. ChkFontBold->Checked = pObj->FontBold;
  815. CbTextAlign->ItemIndex = pObj->TextAlign;
  816. }
  817. else {
  818. APP_SetCode(CbObjKind, pObj->ObjType);
  819. if (EdDsplTxt->Text != pObj->Text) EdDsplTxt->Text = pObj->Text;
  820. }
  821. TcxGridFocusedRecordChangedEvent evt = TvObjList->OnFocusedRecordChanged;
  822. TvObjList->OnFocusedRecordChanged = NULL;
  823. String sObjSeq = String(pObj->ObjSeq);
  824. CMM_SetGridRow(CxObjList, TvObjList, sObjSeq, ColSeq->Index);
  825. TvObjList->OnFocusedRecordChanged = evt;
  826. CheckImageSelected();
  827. } catch(...) {}
  828. m_bEdit = false;
  829. }
  830. //---------------------------------------------------------------------------
  831. void __fastcall TFrmVmsMsgFormMngr::TvObjListFocusedRecordChanged(TcxCustomGridTableView *Sender,
  832. TcxCustomGridRecord *APrevFocusedRecord, TcxCustomGridRecord *AFocusedRecord,
  833. bool ANewItemRecordFocusingChanged)
  834. {
  835. if (TvObjList->ViewData->RecordCount <= 0) return;
  836. if (TvObjList->DataController->FocusedRowIndex < 0) return;
  837. TcxDataController *pGDC = TvObjList->DataController;
  838. int nIndex = pGDC->FocusedRecordIndex;
  839. String sObjSeq = pGDC->Values[nIndex][ColSeq->Index];
  840. String sObjId = pGDC->Values[nIndex][ColId->Index];
  841. EdObjSeq->Text = sObjSeq;
  842. //m_pEdtDesigner->SelectObject(sObjSeq.ToInt());
  843. TVmsFormObject *pObj = m_pEdtDesigner->FindObject(sObjSeq.ToInt());
  844. if (pObj)
  845. {
  846. #if 0
  847. String sObjKind = pObj->ObjType;
  848. APP_SetCode(CbObjKind, sObjKind);
  849. ChangeFormObjectPanel(sObjKind);
  850. EdObjId->Text = pObj->ObjId;
  851. SeLeft->Value = pObj->GetLeft();
  852. SeTop->Value = pObj->GetTop();
  853. #endif
  854. }
  855. }
  856. //---------------------------------------------------------------------------
  857. void __fastcall TFrmVmsMsgFormMngr::SelObjectListData()
  858. {
  859. CMM_ClearGridTableView(TvObjList);
  860. int nObjCnt = m_pEdtDesigner->GetObjectCount();
  861. TVmsFormObject *pObj;
  862. for(int ii = 0; ii < nObjCnt; ii++)
  863. {
  864. pObj = m_pEdtDesigner->GetObject(ii);
  865. if (pObj)
  866. {
  867. AddObjectToList(pObj);
  868. }
  869. }
  870. if (TvObjList->DataController->RecordCount > 0) TvObjList->DataController->FocusedRecordIndex = 0;
  871. }
  872. //---------------------------------------------------------------------------
  873. void __fastcall TFrmVmsMsgFormMngr::AddObjectToList(TVmsFormObject *pObj, bool bSelect/*=false*/)
  874. {
  875. int nAddRow = -1;
  876. String sFormType = APP_GetCode(CbFormType);
  877. TcxGridDataController *pGDC = TvObjList->DataController;
  878. try
  879. {
  880. TvObjList->BeginUpdate();
  881. pGDC->BeginUpdate();
  882. nAddRow = pGDC->AppendRecord();
  883. pGDC->Values[nAddRow][ColSeq->Index] = String(pObj->ObjSeq);
  884. pGDC->Values[nAddRow][ColId->Index] = String(pObj->ObjId);
  885. pGDC->Values[nAddRow][ColObjKind->Index] = FindObjectKindName(pObj->ObjType);
  886. pGDC->Values[nAddRow][ColData->Index] = pObj->Text;
  887. //pGDC->Values[nAddRow][ColX->Index] = String(pObj->GetLeft());
  888. //pGDC->Values[nAddRow][ColY->Index] = String(pObj->GetTop());
  889. pGDC->Values[nAddRow][ColIfscId->Index] = pObj->Tag;
  890. pGDC->Values[nAddRow][ColObjMem->Index] = (int)pObj;
  891. }
  892. __finally
  893. {
  894. pGDC->EndUpdate();
  895. TvObjList->EndUpdate();
  896. if (bSelect && pGDC->RecordCount > 0) if (nAddRow >= 0) pGDC->FocusedRecordIndex = nAddRow;
  897. }
  898. }
  899. //---------------------------------------------------------------------------
  900. void __fastcall TFrmVmsMsgFormMngr::BtnSortReClick(TObject *Sender)
  901. {
  902. TcxButton *pBtn = (TcxButton *)Sender;
  903. ReForm->Paragraph->Numbering = nsNone;
  904. ReForm->Paragraph->Alignment = (TAlignment)pBtn->Tag;
  905. }
  906. //---------------------------------------------------------------------------
  907. void __fastcall TFrmVmsMsgFormMngr::BtnBoldReClick(TObject *Sender)
  908. {
  909. if (ReForm->SelAttributes->Style.Contains(fsBold))
  910. ReForm->SelAttributes->Style = TFontStyles() >> fsBold;
  911. else
  912. ReForm->SelAttributes->Style = TFontStyles() << fsBold;
  913. }
  914. //---------------------------------------------------------------------------
  915. void __fastcall TFrmVmsMsgFormMngr::SeFontSizeRePropertiesChange(TObject *Sender)
  916. {
  917. if (((TcxSpinEdit*)Sender)->Value < ((TcxSpinEdit*)Sender)->Properties->MinValue)
  918. ((TcxSpinEdit*)Sender)->Value = ((TcxSpinEdit*)Sender)->Properties->MinValue;
  919. else if(((TcxSpinEdit*)Sender)->Value > ((TcxSpinEdit*)Sender)->Properties->MaxValue &&
  920. ((TcxSpinEdit*)Sender)->Properties->MaxValue)
  921. ((TcxSpinEdit*)Sender)->Value = ((TcxSpinEdit*)Sender)->Properties->MaxValue;
  922. ReForm->SelAttributes->Size = ((TcxSpinEdit*)Sender)->Value;
  923. }
  924. //---------------------------------------------------------------------------
  925. void __fastcall TFrmVmsMsgFormMngr::BtnDirectEditFontClick(TObject *Sender)
  926. {
  927. ReForm->SelAttributes->Size = ((TcxButton*)Sender)->Caption.Trim().ToIntDef(16);
  928. }
  929. //---------------------------------------------------------------------------
  930. void __fastcall TFrmVmsMsgFormMngr::CbFontColorReClick(TObject *Sender)
  931. {
  932. #if 0
  933. switch(CbFontColorRe->ItemIndex)
  934. {
  935. case 0 : ReForm->SelAttributes->Color = clBlack; break;
  936. case 1 : ReForm->SelAttributes->Color = clRed; break;
  937. case 2 : ReForm->SelAttributes->Color = clLime; break;
  938. case 3 :
  939. default: ReForm->SelAttributes->Color = clYellow; break;
  940. }
  941. #else
  942. ReForm->SelAttributes->Color = CbFontColorRe->Selected;//CbFontColorRe->Colors[CbFontColorRe->ItemIndex];
  943. #endif
  944. }
  945. //---------------------------------------------------------------------------
  946. void __fastcall TFrmVmsMsgFormMngr::CbFontNameReClick(TObject *Sender)
  947. {
  948. String sFontCode = APP_GetCode(CbFontNameRe);
  949. String sFontName = APP_GetCodeName(CbFontNameRe);
  950. ReForm->SelAttributes->Name = sFontName;
  951. }
  952. //---------------------------------------------------------------------------
  953. void __fastcall TFrmVmsMsgFormMngr::ReFormChange(TObject *Sender)
  954. {
  955. if (ChkAutoPreview->Checked) BtnPreviewClick(NULL);
  956. }
  957. //---------------------------------------------------------------------------
  958. void __fastcall TFrmVmsMsgFormMngr::ChkAutoPreviewClick(TObject *Sender)
  959. {
  960. if (ChkAutoPreview->Checked) BtnPreviewClick(NULL);
  961. }
  962. //---------------------------------------------------------------------------
  963. void __fastcall TFrmVmsMsgFormMngr::BtnPreviewClick(TObject *Sender)
  964. {
  965. if (ChkDrawModule->Checked)
  966. m_pEdtDesigner->PreviewDrawModuleForm(ReForm, ReFormTemp, ImgEdtPreview, FVmsRows, FVmsCols);
  967. else
  968. m_pEdtDesigner->PreviewDrawForm(ReForm, ReFormTemp, ImgEdtPreview);
  969. }
  970. //---------------------------------------------------------------------------
  971. void __fastcall TFrmVmsMsgFormMngr::BtnReApplyClick(TObject *Sender)
  972. {
  973. BtnPreviewClick(NULL);
  974. m_pEdtDesigner->AddDrawFormToVmsForm(ReForm, ImgEdtPreview);
  975. /*
  976. * 신규로 등록한 객체의 객체타입과 폰트코드를 업데이트 한다.
  977. */
  978. CbVmsObjType->ItemIndex = 0; // For 고정문자열
  979. String sObjType = APP_GetCode(CbVmsObjType);
  980. TVmsFormObject *pObj;
  981. int nObjCnt = m_pEdtDesigner->GetObjectCount();
  982. for (int ii = 0; ii < nObjCnt; ii++)
  983. {
  984. pObj = m_pEdtDesigner->GetObject(ii);
  985. if (pObj->IsAddByEditor) {
  986. // 직접입력화면에서 폼에적용을 클릭하여 생성한 문자열 객체
  987. String sDsplText = pObj->Text;
  988. pObj->ObjId = "";//String(ii+1); // TODO: 디비에서 생성해야함
  989. pObj->ObjKind = FORM_OBJ_KIND_TEXT;
  990. pObj->ObjType = FORM_OBJ_KIND_TEXT;
  991. pObj->Tag = 0;
  992. pObj->ObjSize = sDsplText.Length();
  993. pObj->BkColorCode = "00";
  994. pObj->Blink = false;
  995. pObj->ImageId = pObj->ObjId;
  996. pObj->Text = sDsplText;
  997. pObj->RunText = pObj->Text;
  998. TCDSFontName *pObjFont = CDSFontManager->FindFontCodeByName(pObj->FontName);
  999. if (pObjFont != NULL) {
  1000. pObj->FontNameCode = pObjFont->VMS_FONT_NAME_CD;
  1001. }
  1002. else {
  1003. pObj->FontNameCode = "00";
  1004. }
  1005. pObj->FillIn = DFLT_TEXT_TYPE; // 문자열 유형
  1006. String DSPL_TEXT = pObj->Text.Trim();
  1007. TVmsTextItem *pFillInObj = VmsTextItemManager->FFillInLists.Find(DSPL_TEXT);
  1008. if (pFillInObj != NULL) {
  1009. pObj->FillIn = pFillInObj->TXT_ITEM_ID;
  1010. }
  1011. }
  1012. }
  1013. PgEdit->ActivePageIndex = 0;
  1014. SelObjectListData();
  1015. }
  1016. //---------------------------------------------------------------------------
  1017. void __fastcall TFrmVmsMsgFormMngr::CbFormTypePropertiesChange(TObject *Sender)
  1018. {
  1019. //VMS폼유형 이 변경 될 경우 처리해야 할 내용
  1020. }
  1021. //---------------------------------------------------------------------------
  1022. void __fastcall TFrmVmsMsgFormMngr::CbFormBkClrClick(TObject *Sender)
  1023. {
  1024. m_pEdtDesigner->SetBkColor(CDSFontManager->GetBackColorCode((int)CbFormBkClr->Selected));
  1025. }
  1026. //---------------------------------------------------------------------------
  1027. void __fastcall TFrmVmsMsgFormMngr::BtnMoveClick(TObject *Sender)
  1028. {
  1029. if (m_bEdit) return;
  1030. TcxButton *pBtn = (TcxButton *)Sender;
  1031. switch(pBtn->Tag)
  1032. {
  1033. case 0: m_pEdtDesigner->StepMoveLeft(); break;
  1034. case 1: m_pEdtDesigner->StepMoveRight(); break;
  1035. case 2: m_pEdtDesigner->StepMoveUp(); break;
  1036. case 3: m_pEdtDesigner->StepMoveDown(); break;
  1037. }
  1038. }
  1039. //---------------------------------------------------------------------------
  1040. void __fastcall TFrmVmsMsgFormMngr::BtnAlignClick(TObject *Sender)
  1041. {
  1042. if (m_bEdit) return;
  1043. TcxButton *pBtn = (TcxButton *)Sender;
  1044. if (m_pEdtDesigner->GetSelectedObjectCount() < 1) return;
  1045. switch(pBtn->Tag)
  1046. {
  1047. case 0: m_pEdtDesigner->SetLeftAlign(m_pEdtDesigner->GetLeftAlign()); break;
  1048. case 1: m_pEdtDesigner->SetRightAlign(m_pEdtDesigner->GetRightAlign()); break;
  1049. case 2: m_pEdtDesigner->SetTopAlign(m_pEdtDesigner->GetTopAlign()); break;
  1050. case 3: m_pEdtDesigner->SetBottomAlign(m_pEdtDesigner->GetBottomAlign()); break;
  1051. }
  1052. }
  1053. //---------------------------------------------------------------------------
  1054. void __fastcall TFrmVmsMsgFormMngr::BtnCenterClick(TObject *Sender)
  1055. {
  1056. if (m_bEdit) return;
  1057. TcxButton *pBtn = (TcxButton *)Sender;
  1058. if (m_pEdtDesigner->GetSelectedObjectCount() < 1) return;
  1059. switch(pBtn->Tag)
  1060. {
  1061. case 0: m_pEdtDesigner->SetAlignWidthCenter(); break;
  1062. case 1: m_pEdtDesigner->SetAlignHeightCenter(); break;
  1063. }
  1064. }
  1065. //---------------------------------------------------------------------------
  1066. void __fastcall TFrmVmsMsgFormMngr::SePosPropertiesChange(TObject *Sender)
  1067. {
  1068. if (m_bEdit) return;
  1069. if (((TcxSpinEdit*)Sender)->Value < ((TcxSpinEdit*)Sender)->Properties->MinValue)
  1070. ((TcxSpinEdit*)Sender)->Value = ((TcxSpinEdit*)Sender)->Properties->MinValue;
  1071. else if(((TcxSpinEdit*)Sender)->Value > ((TcxSpinEdit*)Sender)->Properties->MaxValue &&
  1072. ((TcxSpinEdit*)Sender)->Properties->MaxValue)
  1073. ((TcxSpinEdit*)Sender)->Value = ((TcxSpinEdit*)Sender)->Properties->MaxValue;
  1074. TcxSpinEdit *pPos = (TcxSpinEdit*)Sender;
  1075. if (m_pEdtDesigner->GetSelectedObjectCount() < 1) return;
  1076. int nValue = pPos->Value;
  1077. switch(pPos->Tag)
  1078. {
  1079. case 0: m_pEdtDesigner->MoveLeft(nValue); break;
  1080. case 1: m_pEdtDesigner->MoveUp(nValue); break;
  1081. }
  1082. }
  1083. //---------------------------------------------------------------------------
  1084. void __fastcall TFrmVmsMsgFormMngr::CbObjBkClrClick(TObject *Sender)
  1085. {
  1086. if (m_bEdit) return;
  1087. m_pEdtDesigner->SetObjectBkColorCode(String(CbObjBkClr->ItemIndex));
  1088. }
  1089. //---------------------------------------------------------------------------
  1090. void __fastcall TFrmVmsMsgFormMngr::ChkBlinkingClick(TObject *Sender)
  1091. {
  1092. if (m_bEdit) return;
  1093. m_pEdtDesigner->SetObjectBlink(ChkBlinking->Checked);
  1094. }
  1095. //---------------------------------------------------------------------------
  1096. void __fastcall TFrmVmsMsgFormMngr::EdDsplTxtKeyPress(TObject *Sender, wchar_t &Key)
  1097. {
  1098. if (m_bEdit) return;
  1099. if (Key == '\'')
  1100. {
  1101. Key = '`';
  1102. }
  1103. }
  1104. //---------------------------------------------------------------------------
  1105. void __fastcall TFrmVmsMsgFormMngr::EdDsplTxtPropertiesChange(TObject *Sender)
  1106. {
  1107. if (m_bEdit) return;
  1108. m_pEdtDesigner->SetObejctText(EdDsplTxt->Text);
  1109. }
  1110. //---------------------------------------------------------------------------
  1111. void __fastcall TFrmVmsMsgFormMngr::BtnObjFontColorClick(TObject *Sender)
  1112. {
  1113. if (m_bEdit) return;
  1114. //00 흑색(Black) #000000
  1115. //01 적색(Red) #FF0000
  1116. //02 연녹색(Lime) #00FF00
  1117. //03 황색(Amber) #FFFF00
  1118. TcxButton *pClrBtn = (TcxButton*)Sender;
  1119. String sFontColorCd;
  1120. sFontColorCd.printf(L"%02d", pClrBtn->Tag);
  1121. m_pEdtDesigner->SetObejctFontColorCode(sFontColorCd);
  1122. }
  1123. //---------------------------------------------------------------------------
  1124. void __fastcall TFrmVmsMsgFormMngr::CbFontClrClick(TObject *Sender)
  1125. {
  1126. if (m_bEdit) return;
  1127. m_pEdtDesigner->SetObejctFontColorCode(String(CDSFontManager->GetFontColorCode((int)CbFontClr->Selected)));
  1128. }
  1129. //---------------------------------------------------------------------------
  1130. void __fastcall TFrmVmsMsgFormMngr::BtnFontSizeClick(TObject *Sender)
  1131. {
  1132. if (m_bEdit) return;
  1133. TcxButton *pBtn = (TcxButton*)Sender;
  1134. String sFontSize = pBtn->Caption;
  1135. int nFontSize = sFontSize.Trim().ToIntDef(16);
  1136. m_pEdtDesigner->SetObejctFontSize(nFontSize);
  1137. }
  1138. //---------------------------------------------------------------------------
  1139. void __fastcall TFrmVmsMsgFormMngr::SeFontSizePropertiesChange(TObject *Sender)
  1140. {
  1141. if (m_bEdit) return;
  1142. if (((TcxSpinEdit*)Sender)->Value < ((TcxSpinEdit*)Sender)->Properties->MinValue)
  1143. ((TcxSpinEdit*)Sender)->Value = ((TcxSpinEdit*)Sender)->Properties->MinValue;
  1144. else if(((TcxSpinEdit*)Sender)->Value > ((TcxSpinEdit*)Sender)->Properties->MaxValue &&
  1145. ((TcxSpinEdit*)Sender)->Properties->MaxValue)
  1146. ((TcxSpinEdit*)Sender)->Value = ((TcxSpinEdit*)Sender)->Properties->MaxValue;
  1147. int nFontSize = SeFontSize->Value;
  1148. m_pEdtDesigner->SetObejctFontSize(nFontSize);
  1149. }
  1150. //---------------------------------------------------------------------------
  1151. void __fastcall TFrmVmsMsgFormMngr::CbFontNamePropertiesChange(TObject *Sender)
  1152. {
  1153. if (m_bEdit) return;
  1154. String sFontCode = APP_GetCode(CbFontName);
  1155. String sFontName = APP_GetCodeName(CbFontName);
  1156. m_pEdtDesigner->SetObejctFontName(sFontName.Trim());
  1157. m_pEdtDesigner->SetObejctFontNameCode(sFontCode);
  1158. }
  1159. //---------------------------------------------------------------------------
  1160. void __fastcall TFrmVmsMsgFormMngr::CbTextAlignPropertiesChange(TObject *Sender)
  1161. {
  1162. if (m_bEdit) return;
  1163. m_pEdtDesigner->SetObejctTextAlign(CbTextAlign->ItemIndex);
  1164. }
  1165. //---------------------------------------------------------------------------
  1166. void __fastcall TFrmVmsMsgFormMngr::EdObjIdPropertiesChange(TObject *Sender)
  1167. {
  1168. if (m_bEdit) return;
  1169. try {
  1170. m_pEdtDesigner->SetObjectId(EdObjId->Text.Trim());
  1171. } catch(...) {}
  1172. }
  1173. //---------------------------------------------------------------------------
  1174. void __fastcall TFrmVmsMsgFormMngr::ChkFontBoldClick(TObject *Sender)
  1175. {
  1176. if (m_bEdit) return;
  1177. m_pEdtDesigner->SetObejctFontBold(ChkFontBold->Checked);
  1178. }
  1179. //---------------------------------------------------------------------------
  1180. bool __fastcall TFrmVmsMsgFormMngr::InsertVmsImage(String ANmbr, String AExpl, String AFileName, String ATypeCd)
  1181. {
  1182. String sQry;
  1183. TADOQuery *pADO = NULL;
  1184. sQry = "INSERT INTO TB_VMS_SYMB_LIB(SYMB_LIB_NMBR, RGST_DT, SYMB_EXPL, IMAG_DATA, SYMB_FILE_NM, SYMB_TYPE, AVI_DATA, IMAG_SIZE, UPDT_DT, DEL_YN) \r\n"
  1185. " VALUES(:p01, :p02, :p03, :p04, NULL, :p05, NULL, :p06, :p07, 'N' ) \r\n";
  1186. int nRowHeight = 0;
  1187. TMemoryStream *dataStream = new TMemoryStream();
  1188. ImgEdtTemp->Picture->Bitmap->SaveToStream(dataStream);
  1189. try
  1190. {
  1191. try
  1192. {
  1193. pADO = new TADOQuery(NULL);
  1194. pADO->Close();
  1195. pADO->Connection = ITSDb_GetConnection();
  1196. ITSDb_SQLText(pADO, sQry);
  1197. ITSDb_SQLBind(pADO, "p01", ANmbr);
  1198. ITSDb_SQLBind(pADO, "p02", Now().FormatString("yyyymmddhhnnss"));
  1199. ITSDb_SQLBind(pADO, "p03", AExpl);
  1200. pADO->Parameters->ParamByName("p04")->LoadFromStream(dataStream, ftBlob);
  1201. ITSDb_SQLBind(pADO, "p05", ATypeCd);
  1202. ITSDb_SQLBind(pADO, "p06", FFileSize);
  1203. ITSDb_SQLBind(pADO, "p07", Now().FormatString("yyyymmddhhnnss"));
  1204. pADO->ExecSQL();
  1205. return true;
  1206. }
  1207. catch(EDatabaseError &E)
  1208. {
  1209. DBERRORMSG("FrmVmsMsgMngr::InsertVmsImage", String(E.ClassName()), E.Message, sQry);
  1210. throw Exception(String(E.ClassName()) + E.Message);
  1211. }
  1212. catch(Exception &e)
  1213. {
  1214. DBERRORMSG("FrmVmsMsgMngr::InsertVmsImage", String(e.ClassName()), e.Message, sQry);
  1215. throw Exception(String(e.ClassName()) + e.Message);
  1216. }
  1217. }
  1218. __finally
  1219. {
  1220. if (pADO)
  1221. {
  1222. pADO->Close();
  1223. delete pADO;
  1224. }
  1225. if (dataStream) delete dataStream;
  1226. dataStream = NULL;
  1227. }
  1228. return true;
  1229. }
  1230. //---------------------------------------------------------------------------
  1231. void __fastcall TFrmVmsMsgFormMngr::OpenBmpCanClose(TObject *Sender, bool &CanClose)
  1232. {
  1233. String sFName = OpenBmp->FileName;
  1234. //sFName = sFName.UpperCase();
  1235. String sFilePath = ExtractFilePath(sFName);
  1236. String sFileName = ExtractFileName(sFName);
  1237. String sFileExt = ExtractFileExt(sFName);
  1238. if (sFileExt.UpperCase() != ".BMP")
  1239. {
  1240. if (!APP_CheckBmpFile(sFName, sFName))
  1241. {
  1242. Application->MessageBox(L"이미지 파일을 읽어오는데 실패하였습니다", L"이미지 파일 읽기 실패", MB_OK|MB_ICONERROR|MB_APPLMODAL);
  1243. return;
  1244. }
  1245. sFileExt = ExtractFileExt(sFName);
  1246. }
  1247. sFName = sFName.UpperCase();
  1248. if (sFName.SubString(sFName.Length()-2, 3) != "BMP")
  1249. {
  1250. Application->MessageBox(FrmLang->lblImage11->Caption.c_str(),//L"BMP 파일만 적용 가능합니다.",
  1251. lblImage1->Caption.c_str(),//L"VMS 이미지 선택",
  1252. MB_OK|MB_ICONWARNING|MB_APPLMODAL);
  1253. return;
  1254. }
  1255. try
  1256. {
  1257. FFileSize = ITSUtil_GetFileSize(sFName);
  1258. if (FFileSize <= 0)
  1259. {
  1260. Application->MessageBox(FrmLang->lblImage12->Caption.c_str(),//L"이미지 파일을 읽어 오는데 실패하였습니다.",
  1261. lblImage1->Caption.c_str(),//L"VMS 이미지 선택",
  1262. MB_OK|MB_ICONWARNING|MB_APPLMODAL);
  1263. return;
  1264. }
  1265. #if 0
  1266. if (FFileSize > (1024 * 32)) // Max 32Kbytes
  1267. {
  1268. Application->MessageBox(FrmLang->lblImage13->Caption.c_str(),//L"이미지 파일의 최대 크기는 32KBytes를 넘을 수 없습니다.\r\n이미지 파일의 용량을 줄여 주세요.",
  1269. lblImage1->Caption.c_str(),//L"VMS 이미지 선택",
  1270. MB_OK|MB_ICONWARNING|MB_APPLMODAL);
  1271. return;
  1272. }
  1273. #endif
  1274. ImgEdtTemp->Picture->Bitmap->FreeImage();
  1275. ImgEdtTemp->Picture->Bitmap = NULL;
  1276. ImgEdtTemp->Picture->Bitmap->LoadFromFile(sFName);
  1277. String sExpl = EdFormId->Text.Trim();
  1278. int nNmbr;
  1279. if (!FrmLang->GetNextVmsImgeId(nNmbr, 6000, 6999))
  1280. {
  1281. Application->MessageBox(FrmLang->lblImage4->Caption.c_str(),//L"새로운 VMS 이미지정보를 생성하지 못하였습니다.\r\n프로그램 종료후에 다시 시도해 보세요.",
  1282. lblImage1->Caption.c_str(),//L"VMS 이미지 선택",
  1283. MB_OK|MB_ICONERROR|MB_APPLMODAL);
  1284. return;
  1285. }
  1286. if (!InsertVmsImage(String(nNmbr), sExpl, "", "SBT0"))
  1287. {
  1288. Application->MessageBox(FrmLang->lblImage4->Caption.c_str(),//L"새로운 VMS 이미지정보를 저장하지 못하였습니다.\r\n프로그램 종료후에 다시 시도해 보세요.",
  1289. lblImage1->Caption.c_str(),//L"VMS 이미지 선택",
  1290. MB_OK|MB_ICONERROR|MB_APPLMODAL);
  1291. return;
  1292. }
  1293. TVmsFormObject *pObj = m_pEdtDesigner->AddObject(odtBmp);
  1294. if (!pObj) return;
  1295. int nNewObjSeq = m_pEdtDesigner->GetNewObjectSeq();
  1296. EdObjSeq->Text = String(nNewObjSeq);
  1297. pObj->ObjSeq = nNewObjSeq;
  1298. pObj->ObjKind = OBJKIND_IMAGEID;//OBJKIND_IMAGE; // "1"
  1299. pObj->ObjType = "1";//"2";
  1300. pObj->ObjSize = (int)FFileSize;
  1301. pObj->BkColorCode = m_pEdtDesigner->BkColorCode;
  1302. pObj->Blink = false;
  1303. pObj->Tag = "N";
  1304. pObj->SetBitmap(ImgEdtTemp->Picture->Bitmap);
  1305. pObj->Text = lblFile1->Caption;//"파일이미지";//ExtractShortPathName(sFName).c_str();
  1306. pObj->ImageId = String(nNmbr);
  1307. pObj->SetPos(0, 0);
  1308. #ifdef IMAGE_RESIZE
  1309. //pObj->GetImage()->AutoSize= false;
  1310. //pObj->GetImage()->Stretch = true;
  1311. TNotifyEvent evtW = SeImgW->Properties->OnChange;
  1312. TNotifyEvent evtH = SeImgH->Properties->OnChange;
  1313. SeImgW->Properties->OnChange = NULL;
  1314. SeImgH->Properties->OnChange = NULL;
  1315. SeImgW->Value = ImgEdtTemp->Picture->Bitmap->Width;
  1316. SeImgH->Value = ImgEdtTemp->Picture->Bitmap->Height;
  1317. SeImgW->Properties->OnChange = evtW;
  1318. SeImgH->Properties->OnChange = evtH;
  1319. PnlImage->Visible = true;
  1320. #endif
  1321. pObj->EditMode = true;
  1322. pObj->Show();
  1323. AddObjectToList(pObj, true);
  1324. }
  1325. catch(...)
  1326. {
  1327. return;
  1328. }
  1329. }
  1330. //---------------------------------------------------------------------------
  1331. void __fastcall TFrmVmsMsgFormMngr::MakeDefVideoStreamForm(int AType)
  1332. {
  1333. if (CbVmsObjType->ItemIndex < 0) return;
  1334. for (int ii = 0; ii < CbVmsObjType->Properties->Items->Count; ii++)
  1335. {
  1336. CbVmsObjType->ItemIndex = ii;
  1337. String sFormType = APP_GetCode(CbFormType);
  1338. String sObjType = APP_GetCode(CbVmsObjType);
  1339. int nObjType = sObjType.ToIntDef(0);
  1340. String sObjText = FindObjectKindName(sObjType);
  1341. String sFontName = FrmLang->lblFontName->Caption;//"굴림체";
  1342. String sFontNameCode = "1";
  1343. String sFontColorCode = "2"; //Green
  1344. int nFontSize = 22;
  1345. bool bFontBold = true;
  1346. if (AType == 90) nFontSize = 14;
  1347. switch(nObjType)
  1348. {
  1349. case 200: //동영상
  1350. case 300: //스트리밍영상
  1351. {
  1352. TVmsFormObject *pObj = m_pEdtDesigner->AddObject(odtBmp);
  1353. if (!pObj) return;
  1354. int nNewObjSeq = m_pEdtDesigner->GetNewObjectSeq();
  1355. EdObjSeq->Text = String(nNewObjSeq);
  1356. pObj->EditMode = false;
  1357. pObj->ObjSeq = nNewObjSeq;
  1358. pObj->ObjKind = OBJKIND_IMAGEID; // "2"
  1359. pObj->ObjType = sObjType;
  1360. if (nObjType == 200)
  1361. pObj->ObjSize = ImgVideo->Width * ImgVideo->Height;
  1362. else
  1363. pObj->ObjSize = ImgStream->Width * ImgStream->Height;
  1364. pObj->BkColorCode = m_pEdtDesigner->BkColorCode;
  1365. pObj->Blink = false;
  1366. pObj->Tag = "N";
  1367. pObj->Text = sObjText;
  1368. pObj->ImageId = IntToStr(nObjType);
  1369. int nW, nH;
  1370. if (nObjType == 200)
  1371. {
  1372. pObj->SetBitmap(ImgVideo->Picture->Bitmap);
  1373. nW = ImgVideo->Width;
  1374. nH = ImgVideo->Height;
  1375. }
  1376. else
  1377. {
  1378. pObj->SetBitmap(ImgStream->Picture->Bitmap);
  1379. nW = ImgStream->Width;
  1380. nH = ImgStream->Height;
  1381. }
  1382. nW = (FVmsWidth-nW)/2;
  1383. nH = (FVmsHeight-nH)/2;
  1384. pObj->SetPos(nW, nH);
  1385. pObj->Show();
  1386. AddObjectToList(pObj, true);
  1387. }
  1388. break;
  1389. case 0: //문자열
  1390. case 1: //심볼
  1391. case 2: //이미지
  1392. case 406: //@통합대기등급 이미지
  1393. case 407: //@미세먼지등급 이미지
  1394. case 408: //@초미세먼지등급 이미지
  1395. case 413: //@오존등급이미지
  1396. break;
  1397. default:
  1398. {
  1399. TVmsFormObject *pObj = m_pEdtDesigner->AddObject(odtText);
  1400. if (!pObj) return;
  1401. int nNewObjSeq = m_pEdtDesigner->GetNewObjectSeq();
  1402. EdObjSeq->Text = String(nNewObjSeq);
  1403. pObj->ObjSeq = nNewObjSeq;
  1404. pObj->ObjType = sObjType;
  1405. switch(nObjType)
  1406. {
  1407. case 409: //@통합대기등급
  1408. case 404: //@PM10등급
  1409. case 405: //@PM2.5등급
  1410. case 412: //@오존등급
  1411. //pObj->TextAlign = 2; // center
  1412. pObj->TextAlign = 0; // left
  1413. break;
  1414. case 402: //@PM10
  1415. case 403: //@PM2.5
  1416. case 410: //@통합대기
  1417. case 411: //@오존
  1418. //pObj->TextAlign = 1; // right
  1419. pObj->TextAlign = 0; // left
  1420. break;
  1421. default:
  1422. pObj->TextAlign = 0; // left
  1423. break;
  1424. }
  1425. //EdDsplTxt->Properties->ReadOnly = false;
  1426. pObj->ObjSize = sObjText.Length();
  1427. pObj->BkColorCode = m_pEdtDesigner->BkColorCode;
  1428. pObj->Blink = false;
  1429. pObj->Text = sObjText;
  1430. pObj->EditMode = true;
  1431. pObj->ObjKind = OBJKIND_TEXT;
  1432. pObj->FontName = sFontName;
  1433. pObj->FontNameCode = sFontNameCode;
  1434. pObj->FontColorCode = sFontColorCode;
  1435. pObj->FontSize = nFontSize;
  1436. pObj->FontBold = bFontBold;
  1437. pObj->SetPos(0, 0);
  1438. pObj->Show();
  1439. AddObjectToList(pObj, true);
  1440. }
  1441. break;
  1442. }
  1443. }
  1444. }
  1445. //---------------------------------------------------------------------------
  1446. void __fastcall TFrmVmsMsgFormMngr::BtnObjDeleteClick(TObject *Sender)
  1447. {
  1448. if (m_pEdtDesigner->GetSelectedObjectCount() < 1) return;
  1449. String sMsgString;
  1450. sMsgString = lblText6->Caption;//"선택한 객체 정보를 모두 삭제하시겠습니까?";
  1451. if (Application->MessageBox(sMsgString.c_str(),
  1452. lblText7->Caption.c_str(),//L"객체 정보 삭제",
  1453. MB_YESNO|MB_ICONQUESTION|MB_APPLMODAL) != IDYES)
  1454. {
  1455. return;
  1456. }
  1457. bool bUse = false;
  1458. TVmsFormObject *pObj;
  1459. int nObjCnt = m_pEdtDesigner->GetObjectCount();
  1460. for (int ii = nObjCnt-1; ii >= 0; ii--)
  1461. {
  1462. pObj = m_pEdtDesigner->GetObject(ii);
  1463. if (pObj->Selected)
  1464. {
  1465. m_pEdtDesigner->DelObject(ii);
  1466. }
  1467. }
  1468. if (bUse)
  1469. {
  1470. Application->MessageBox(lblText8->Caption.c_str(),//L"VMS 폼 객체 삭제\r\nVMS 폼 객체 중 정보제공구간에 설정된 객체는 삭제할 수 없습니다.",
  1471. FTitle.c_str(),
  1472. MB_OK|MB_ICONERROR|MB_APPLMODAL);
  1473. }
  1474. SelObjectListData();
  1475. }
  1476. //---------------------------------------------------------------------------
  1477. void __fastcall TFrmVmsMsgFormMngr::ColXGetDataText(TcxCustomGridTableItem *Sender, int ARecordIndex,
  1478. UnicodeString &AText)
  1479. {
  1480. if (ARecordIndex < 0) return;
  1481. try
  1482. {
  1483. int nMemPtr = (int)(TvObjList->DataController->Values[ARecordIndex][ColObjMem->Index]);
  1484. TVmsFormObject *pObj = (TVmsFormObject*)nMemPtr;
  1485. if (pObj)
  1486. {
  1487. AText = pObj->GetLeft();
  1488. }
  1489. } catch(Exception &e) {}
  1490. }
  1491. //---------------------------------------------------------------------------
  1492. void __fastcall TFrmVmsMsgFormMngr::ColYGetDataText(TcxCustomGridTableItem *Sender, int ARecordIndex,
  1493. UnicodeString &AText)
  1494. {
  1495. if (ARecordIndex < 0) return;
  1496. try
  1497. {
  1498. int nMemPtr = (int)(TvObjList->DataController->Values[ARecordIndex][ColObjMem->Index]);
  1499. TVmsFormObject *pObj = (TVmsFormObject*)nMemPtr;
  1500. if (pObj)
  1501. {
  1502. AText = pObj->GetTop();
  1503. }
  1504. } catch(Exception &e) {}
  1505. }
  1506. //---------------------------------------------------------------------------
  1507. void __fastcall TFrmVmsMsgFormMngr::CbVmsObjTypeClick(TObject *Sender)
  1508. {
  1509. if (BtnAddText->CanFocus())
  1510. {
  1511. BtnAddText->SetFocus();
  1512. }
  1513. }
  1514. //---------------------------------------------------------------------------
  1515. void __fastcall TFrmVmsMsgFormMngr::UpdateObjectIfscId()
  1516. {
  1517. TVmsFormObject *pObj;
  1518. int nObjCnt = m_pEdtDesigner->GetObjectCount();
  1519. for (int ii = nObjCnt-1; ii >= 0; ii--)
  1520. {
  1521. pObj = m_pEdtDesigner->GetObject(ii);
  1522. if (pObj->Selected)
  1523. {
  1524. int nObjType = pObj->ObjType.ToIntDef(0);
  1525. if (nObjType == 91 || //@축통행시간(고정)
  1526. nObjType == 92 || //@축소통상황(고정)
  1527. nObjType == 101 || nObjType == 102 || nObjType == 103 || nObjType == 104 || //@주차장
  1528. (nObjType >= 401 && nObjType <= 413)
  1529. )
  1530. {
  1531. //pObj->Tag = EdIfscId->Text.Trim();
  1532. }
  1533. }
  1534. }
  1535. }
  1536. //---------------------------------------------------------------------------
  1537. void __fastcall TFrmVmsMsgFormMngr::BtnCopyAddClick(TObject *Sender)
  1538. {
  1539. int nIdx = TvList->DataController->FocusedRecordIndex;
  1540. if (nIdx < 0) return;
  1541. String sOrgFormId = EdFormId->Text;
  1542. if (sOrgFormId.IsEmpty()) {
  1543. Application->MessageBox(lblText12->Caption.c_str(),//L"VMS 폼 복사 추가\r\n복사 추가할 VMS 폼을 목록에서 선택하세요.",
  1544. FTitle.c_str(),
  1545. MB_OK|MB_ICONERROR|MB_APPLMODAL);
  1546. return;
  1547. }
  1548. String sFormName = EdFormName->Text;
  1549. bool bInput = InputQuery(lblText9->Caption,//"폼명칭",
  1550. lblText10->Caption,//"신규 폼명칭 입력하세요(60Byte).",
  1551. sFormName);//lblText9->Caption);//"폼명칭" );
  1552. if (!bInput || sFormName == "") {
  1553. return;
  1554. }
  1555. if (AnsiString(sFormName).Length() > 50) {
  1556. Application->MessageBox(lblText11->Caption.c_str(),//L"폼명칭은 60Byte를 초과할 수 없습니다.",
  1557. FTitle.c_str(),
  1558. MB_OK|MB_ICONERROR|MB_APPLMODAL);
  1559. return;
  1560. }
  1561. String sFormType = APP_GetCode(CbFormType);
  1562. String sNewFormId = GetNextVmsFormId(sFormType.SubString(1,1));
  1563. ITSDb_GetConnection()->BeginTrans();
  1564. if (CopyFormAdd(sOrgFormId, sNewFormId, sFormName)) {
  1565. ITSDb_GetConnection()->CommitTrans();
  1566. Application->MessageBox(lblText13->Caption.c_str(),//L"VMS 폼 복사 추가\r\nVMS 폼 정보를 복사 추가 하였습니다.",
  1567. FTitle.c_str(),
  1568. MB_OK|MB_ICONINFORMATION|MB_APPLMODAL);
  1569. FUpdate = true;
  1570. LoadVmsForm();
  1571. CMM_SetGridRow(CxList, TvList, sNewFormId, ColVMS_FORM_ID->Index);
  1572. DisplayInfo();
  1573. }
  1574. else {
  1575. ITSDb_GetConnection()->RollbackTrans();
  1576. }
  1577. }
  1578. //---------------------------------------------------------------------------
  1579. bool __fastcall TFrmVmsMsgFormMngr::CopyFormAdd(String AOrgFormId, String ANewFormId, String AFormName)
  1580. {
  1581. bool bResult = false;
  1582. String sQry;
  1583. TADOQuery *pADO = NULL;
  1584. try {
  1585. try {
  1586. pADO = new TADOQuery(NULL);
  1587. pADO->Close();
  1588. pADO->Connection = ITSDb_GetConnection();
  1589. sQry = "INSERT INTO TB_VMS_FORM ( \r\n"
  1590. " VMS_FORM_ID, \r\n"
  1591. " VMS_MODL_KIND, \r\n"
  1592. " VMS_FORM_TYPE, \r\n"
  1593. " VMS_FORM_NM, \r\n"
  1594. " DSPL_EFF, \r\n"
  1595. " DSPL_HR, \r\n"
  1596. " BACK_CLR, \r\n"
  1597. " VMS_FORM_IMG, \r\n"
  1598. " RGSTR_ID, \r\n"
  1599. " REG_DT, \r\n"
  1600. " CHNGR_ID, \r\n"
  1601. " CHG_DT ) \r\n"
  1602. " SELECT :p01, \r\n"
  1603. " VMS_MODL_KIND, \r\n"
  1604. " VMS_FORM_TYPE, \r\n"
  1605. " :p03, \r\n"
  1606. " DSPL_EFF, \r\n"
  1607. " DSPL_HR, \r\n"
  1608. " BACK_CLR, \r\n"
  1609. " VMS_FORM_IMG, \r\n"
  1610. " :p04, \r\n"
  1611. " SYSDATE, \r\n"
  1612. " NULL, \r\n"
  1613. " NULL \r\n"
  1614. " FROM TB_VMS_FORM \r\n"
  1615. " WHERE VMS_FORM_ID = :p02 \r\n";
  1616. ITSDb_SQLText(pADO, sQry);
  1617. ITSDb_SQLBind(pADO, "p01", ANewFormId);
  1618. ITSDb_SQLBind(pADO, "p02", AOrgFormId);
  1619. ITSDb_SQLBind(pADO, "p03", AFormName);
  1620. ITSDb_SQLBind(pADO, "p04", g_AppCfg.OPER_ID);
  1621. pADO->ExecSQL();
  1622. TVmsFormObject *pFormObj = NULL;
  1623. TcxGridDataController *pGDC = TvObjList->DataController;
  1624. int nObjCnt = pGDC->RecordCount;
  1625. String VMS_FORM_ID = ANewFormId;
  1626. String VMS_MODL_KIND = APP_GetCode(CbSizeType); // FVmsTypeCd
  1627. String VMS_FORM_TYPE = APP_GetCode(CbFormType);
  1628. String VMS_FORM_NM = AFormName;
  1629. String DSPL_EFF = APP_GetCode(CbFormDsplEff);
  1630. int DSPL_HR = SeDsplHr->Value;
  1631. String BACK_CLR = CDSFontManager->GetBackColorCode(CbFormBkClr->ItemIndex);
  1632. String RGSTR_ID = g_AppCfg.OPER_ID;
  1633. String OBJ_VMS_FORM_ID = VMS_FORM_ID.SubString(1, 6);
  1634. // 폼 오브젝트 구성정보 저장
  1635. sQry = "INSERT INTO TB_VMS_FORM_VMS_FORM_OBJ ( \r\n"
  1636. " VMS_FORM_ID, \r\n"
  1637. " SN, \r\n"
  1638. " VMS_FORM_OBJ_KIND, \r\n"
  1639. " VMS_FORM_OBJ_ID, \r\n"
  1640. " BACK_CLR, \r\n"
  1641. " FORM_OBJ_PSTN_X, \r\n"
  1642. " FORM_OBJ_PSTN_Y, \r\n"
  1643. " FORM_OBJ_BLNK_YN ) \r\n"
  1644. " VALUES ( \r\n"
  1645. " :p01, \r\n"
  1646. " :p02, \r\n"
  1647. " :p03, \r\n"
  1648. " :p04, \r\n"
  1649. " :p05, \r\n"
  1650. " :p06, \r\n"
  1651. " :p07, \r\n"
  1652. " :p08 ) \r\n";
  1653. ITSDb_SQLText(pADO, sQry);
  1654. for (int ii = 0; ii < nObjCnt; ii++) {
  1655. String sObjSeq = VarToStr(pGDC->Values[ii][ColSeq->Index]);
  1656. pFormObj = m_pEdtDesigner->FindObject(sObjSeq.ToInt());
  1657. if (!pFormObj) continue;
  1658. //이력으로 조회하는곳에서 좌표를 0x02로 저장하는데 음수가 나오는 경우
  1659. //2자리로 처리가 되지 않기 때문에 여기서 막아준다.
  1660. if (pFormObj->Left < 0) pFormObj->Left = 0;
  1661. if (pFormObj->Top < 0) pFormObj->Top = 0;
  1662. int SN = ii+1;
  1663. String VMS_FORM_OBJ_KIND = pFormObj->ObjKind;
  1664. String VMS_FORM_OBJ_ID = pFormObj->ObjId;
  1665. if (VMS_FORM_OBJ_KIND == FORM_OBJ_KIND_TEXT) {
  1666. VMS_FORM_OBJ_ID.printf(L"%s-%03d", OBJ_VMS_FORM_ID, SN);
  1667. }
  1668. String BACK_CLR = pFormObj->BkColorCode;
  1669. int FORM_OBJ_PSTN_X = pFormObj->Left;
  1670. int FORM_OBJ_PSTN_Y = pFormObj->Top;
  1671. String FORM_OBJ_BLNK_YN = pFormObj->Blink ? "Y" : "N";
  1672. pADO->Parameters->ParamByName("p01")->Value = VMS_FORM_ID;
  1673. pADO->Parameters->ParamByName("p02")->Value = SN;
  1674. pADO->Parameters->ParamByName("p03")->Value = VMS_FORM_OBJ_KIND;
  1675. pADO->Parameters->ParamByName("p04")->Value = VMS_FORM_OBJ_ID;
  1676. pADO->Parameters->ParamByName("p05")->Value = BACK_CLR;
  1677. pADO->Parameters->ParamByName("p06")->Value = FORM_OBJ_PSTN_X;
  1678. pADO->Parameters->ParamByName("p07")->Value = FORM_OBJ_PSTN_Y;
  1679. pADO->Parameters->ParamByName("p08")->Value = FORM_OBJ_BLNK_YN;
  1680. ITSDb_SQLExec(pADO);
  1681. }
  1682. // 텍스트 오브젝트 정보 저장
  1683. sQry = "INSERT INTO TB_VMS_FORM_OBJ_TXT ( \r\n"
  1684. " VMS_FORM_OBJ_ID, \r\n"
  1685. " TXT_WDTH, \r\n"
  1686. " TXT_HGHT, \r\n"
  1687. " TXT_ALGN_MTHD, \r\n"
  1688. " FONT_CLR, \r\n"
  1689. " FONT_TYPE, \r\n"
  1690. " FONT_SZ, \r\n"
  1691. " FONT_THCK, \r\n"
  1692. " VMS_TXT_ITEM_ID, \r\n"
  1693. " DSPL_TXT, \r\n"
  1694. " RGSTR_ID, \r\n"
  1695. " REG_DT ) \r\n"
  1696. " VALUES ( \r\n"
  1697. " :p01, \r\n"
  1698. " :p02, \r\n"
  1699. " :p03, \r\n"
  1700. " :p04, \r\n"
  1701. " :p05, \r\n"
  1702. " :p06, \r\n"
  1703. " :p07, \r\n"
  1704. " :p08, \r\n"
  1705. " :p09, \r\n"
  1706. " :p10, \r\n"
  1707. " :p11, \r\n"
  1708. " SYSDATE ) \r\n";
  1709. ITSDb_SQLText(pADO, sQry);
  1710. for (int ii = 0; ii < nObjCnt; ii++) {
  1711. String sObjSeq = VarToStr(pGDC->Values[ii][ColSeq->Index]);
  1712. pFormObj = m_pEdtDesigner->FindObject(sObjSeq.ToInt());
  1713. if (!pFormObj) continue;
  1714. if (pFormObj->ObjKind != FORM_OBJ_KIND_TEXT) {
  1715. continue;
  1716. }
  1717. int SN = ii+1;
  1718. String VMS_FORM_OBJ_ID = pFormObj->ObjId;
  1719. VMS_FORM_OBJ_ID.printf(L"%s-%03d", OBJ_VMS_FORM_ID, SN);
  1720. int TXT_WDTH = pFormObj->GetWidth();
  1721. int TXT_HGHT = pFormObj->GetHeight();
  1722. String TXT_ALGN_MTHD = "C";
  1723. if (pFormObj->TextAlign == 0) {
  1724. TXT_ALGN_MTHD = "L";
  1725. }
  1726. else if (pFormObj->TextAlign == 1) {
  1727. TXT_ALGN_MTHD = "R";
  1728. }
  1729. String FONT_CLR = pFormObj->FontColorCode;
  1730. String FONT_TYPE = pFormObj->FontNameCode;
  1731. int FONT_SZ = pFormObj->FontSize;
  1732. String FONT_THCK = pFormObj->FontBold ? "B" : "N";
  1733. String VMS_TXT_ITEM_ID = pFormObj->FillIn;
  1734. String DSPL_TXT = pFormObj->Text;
  1735. String RGSTR_ID = g_AppCfg.OPER_ID;
  1736. String BACK_CLR = pFormObj->BkColorCode;
  1737. int FORM_OBJ_PSTN_X = pFormObj->Left;
  1738. int FORM_OBJ_PSTN_Y = pFormObj->Top;
  1739. String FORM_OBJ_BLNK_YN = pFormObj->Blink ? "Y" : "N";
  1740. pADO->Parameters->ParamByName("p01")->Value = VMS_FORM_OBJ_ID;
  1741. pADO->Parameters->ParamByName("p02")->Value = TXT_WDTH;
  1742. pADO->Parameters->ParamByName("p03")->Value = TXT_HGHT;
  1743. pADO->Parameters->ParamByName("p04")->Value = TXT_ALGN_MTHD;
  1744. pADO->Parameters->ParamByName("p05")->DataType = ftString;
  1745. pADO->Parameters->ParamByName("p05")->Value = FONT_CLR;
  1746. pADO->Parameters->ParamByName("p06")->DataType = ftString;
  1747. pADO->Parameters->ParamByName("p06")->Value = FONT_TYPE;
  1748. pADO->Parameters->ParamByName("p07")->Value = FONT_SZ;
  1749. pADO->Parameters->ParamByName("p08")->Value = FONT_THCK;
  1750. pADO->Parameters->ParamByName("p09")->Value = VMS_TXT_ITEM_ID;
  1751. pADO->Parameters->ParamByName("p10")->Value = DSPL_TXT;
  1752. pADO->Parameters->ParamByName("p11")->Value = RGSTR_ID;
  1753. ITSDb_SQLExec(pADO);
  1754. }
  1755. bResult = true;
  1756. }
  1757. catch(EDatabaseError &E) {
  1758. DBERRORMSG("FrmVmsMsgMngr::CopyFormAdd", String(E.ClassName()), E.Message, sQry);
  1759. //throw Exception(String(E.ClassName()) + E.Message);
  1760. }
  1761. catch(Exception &e) {
  1762. DBERRORMSG("FrmVmsMsgMngr::CopyFormAdd", String(e.ClassName()), e.Message, sQry);
  1763. //throw Exception(String(e.ClassName()) + e.Message);
  1764. }
  1765. }
  1766. __finally {
  1767. if (pADO) {
  1768. pADO->Close();
  1769. delete pADO;
  1770. }
  1771. }
  1772. return bResult;
  1773. }
  1774. //---------------------------------------------------------------------------
  1775. void __fastcall TFrmVmsMsgFormMngr::BtnUpClick(TObject *Sender)
  1776. {
  1777. try
  1778. {
  1779. TvObjList->BeginUpdate();
  1780. int nCurIdx = TvObjList->DataController->FocusedRowIndex;//FocusedRecordIndex;
  1781. if (nCurIdx <= 0)
  1782. {
  1783. return;
  1784. }
  1785. int nUpIdx = nCurIdx-1;
  1786. try
  1787. {
  1788. String sVal1 = VarToStr(TvObjList->DataController->Values[nCurIdx][ColSeq->Index]);
  1789. String sVal2 = VarToStr(TvObjList->DataController->Values[nCurIdx][ColId->Index]);
  1790. String sVal3 = VarToStr(TvObjList->DataController->Values[nCurIdx][ColObjKind->Index]);
  1791. String sVal4 = VarToStr(TvObjList->DataController->Values[nCurIdx][ColData->Index]);
  1792. String sVal5 = VarToStr(TvObjList->DataController->Values[nCurIdx][ColIfscId->Index]);
  1793. int sVal6 = (TvObjList->DataController->Values[nCurIdx][ColObjMem->Index]);
  1794. TvObjList->DataController->Values[nCurIdx][ColSeq->Index] = TvObjList->DataController->Values[nUpIdx][ColSeq->Index];
  1795. TvObjList->DataController->Values[nCurIdx][ColId->Index] = TvObjList->DataController->Values[nUpIdx][ColId->Index];
  1796. TvObjList->DataController->Values[nCurIdx][ColObjKind->Index] = TvObjList->DataController->Values[nUpIdx][ColObjKind->Index];
  1797. TvObjList->DataController->Values[nCurIdx][ColData->Index] = TvObjList->DataController->Values[nUpIdx][ColData->Index];
  1798. TvObjList->DataController->Values[nCurIdx][ColIfscId->Index] = TvObjList->DataController->Values[nUpIdx][ColIfscId->Index];
  1799. TvObjList->DataController->Values[nCurIdx][ColObjMem->Index] = TvObjList->DataController->Values[nUpIdx][ColObjMem->Index];
  1800. TvObjList->DataController->Values[nUpIdx][ColSeq->Index] = sVal1;
  1801. TvObjList->DataController->Values[nUpIdx][ColId->Index] = sVal2;
  1802. TvObjList->DataController->Values[nUpIdx][ColObjKind->Index] = sVal3;
  1803. TvObjList->DataController->Values[nUpIdx][ColData->Index] = sVal4;
  1804. TvObjList->DataController->Values[nUpIdx][ColIfscId->Index] = sVal5;
  1805. TvObjList->DataController->Values[nUpIdx][ColObjMem->Index] = sVal6;
  1806. TvObjList->Controller->ClearSelection();
  1807. TvObjList->Controller->FocusedRowIndex = nUpIdx;
  1808. //TvObjList->Controller->FocusedRecordIndex = nUpIdx;
  1809. TvObjList->ViewData->Records[nUpIdx]->Focused = true;
  1810. TvObjList->ViewData->Records[nUpIdx]->Selected = true;
  1811. CxObjList->SetFocus();
  1812. //TcxCustomGridRow* ARow = TvObjList->ViewData->Rows[TvObjList->DataController->FocusedRowIndex];
  1813. }
  1814. catch(...)
  1815. {
  1816. }
  1817. }
  1818. __finally
  1819. {
  1820. TvObjList->EndUpdate();
  1821. }
  1822. }
  1823. //---------------------------------------------------------------------------
  1824. void __fastcall TFrmVmsMsgFormMngr::BtnDownClick(TObject *Sender)
  1825. {
  1826. try
  1827. {
  1828. TvObjList->BeginUpdate();
  1829. int nCurIdx = TvObjList->DataController->FocusedRowIndex;//FocusedRecordIndex;
  1830. //int nCurIdx = TvObjList->DataController->FocusedRecordIndex;
  1831. if (nCurIdx < 0)
  1832. {
  1833. return;
  1834. }
  1835. if (nCurIdx == TvObjList->DataController->RecordCount-1)
  1836. {
  1837. return;
  1838. }
  1839. int nDnIdx = nCurIdx+1;
  1840. try
  1841. {
  1842. String sVal1 = VarToStr(TvObjList->DataController->Values[nCurIdx][ColSeq->Index]);
  1843. String sVal2 = VarToStr(TvObjList->DataController->Values[nCurIdx][ColId->Index]);
  1844. String sVal3 = VarToStr(TvObjList->DataController->Values[nCurIdx][ColObjKind->Index]);
  1845. String sVal4 = VarToStr(TvObjList->DataController->Values[nCurIdx][ColData->Index]);
  1846. String sVal5 = VarToStr(TvObjList->DataController->Values[nCurIdx][ColIfscId->Index]);
  1847. int sVal6 = (TvObjList->DataController->Values[nCurIdx][ColObjMem->Index]);
  1848. TvObjList->DataController->Values[nCurIdx][ColSeq->Index] = TvObjList->DataController->Values[nDnIdx][ColSeq->Index];
  1849. TvObjList->DataController->Values[nCurIdx][ColId->Index] = TvObjList->DataController->Values[nDnIdx][ColId->Index];
  1850. TvObjList->DataController->Values[nCurIdx][ColObjKind->Index] = TvObjList->DataController->Values[nDnIdx][ColObjKind->Index];
  1851. TvObjList->DataController->Values[nCurIdx][ColData->Index] = TvObjList->DataController->Values[nDnIdx][ColData->Index];
  1852. TvObjList->DataController->Values[nCurIdx][ColIfscId->Index] = TvObjList->DataController->Values[nDnIdx][ColIfscId->Index];
  1853. TvObjList->DataController->Values[nCurIdx][ColObjMem->Index] = TvObjList->DataController->Values[nDnIdx][ColObjMem->Index];
  1854. TvObjList->DataController->Values[nDnIdx][ColSeq->Index] = sVal1;
  1855. TvObjList->DataController->Values[nDnIdx][ColId->Index] = sVal2;
  1856. TvObjList->DataController->Values[nDnIdx][ColObjKind->Index] = sVal3;
  1857. TvObjList->DataController->Values[nDnIdx][ColData->Index] = sVal4;
  1858. TvObjList->DataController->Values[nDnIdx][ColIfscId->Index] = sVal5;
  1859. TvObjList->DataController->Values[nDnIdx][ColObjMem->Index] = sVal6;
  1860. TvObjList->Controller->ClearSelection();
  1861. TvObjList->Controller->FocusedRowIndex = nDnIdx;
  1862. //TvObjList->Controller->FocusedRecordIndex = nDnIdx;
  1863. TvObjList->ViewData->Records[nDnIdx]->Focused = true;
  1864. TvObjList->ViewData->Records[nDnIdx]->Selected = true;
  1865. CxObjList->SetFocus();
  1866. //TcxCustomGridRow* ARow = TvObjList->ViewData->Rows[TvObjList->DataController->FocusedRowIndex];
  1867. }
  1868. catch(...)
  1869. {
  1870. }
  1871. }
  1872. __finally
  1873. {
  1874. TvObjList->EndUpdate();
  1875. }
  1876. }
  1877. //---------------------------------------------------------------------------
  1878. void __fastcall TFrmVmsMsgFormMngr::BtnSaveClick(TObject *Sender)
  1879. {
  1880. if (EdFormId->Text.IsEmpty()) {
  1881. Application->MessageBox(lblText14->Caption.c_str(),//L"VMS 폼 저장\r\nVMS 폼 ID를 입력하세요.",
  1882. FTitle.c_str(),
  1883. MB_OK|MB_ICONERROR|MB_APPLMODAL);
  1884. return;
  1885. }
  1886. if (EdFormName->Text.Trim().IsEmpty()) {
  1887. Application->MessageBox(lblText15->Caption.c_str(),//L"VMS 폼 저장\r\nVMS 폼 이름을 입력하세요.",
  1888. FTitle.c_str(),
  1889. MB_OK|MB_ICONERROR|MB_APPLMODAL);
  1890. return;
  1891. }
  1892. if (AnsiString(EdFormName->Text.Trim()).Length() > 50)
  1893. {
  1894. Application->MessageBox(lblText11->Caption.c_str(),//L"폼명칭은 60Byte를 초과할 수 없습니다.",
  1895. FTitle.c_str(),
  1896. MB_OK|MB_ICONERROR|MB_APPLMODAL);
  1897. return;
  1898. }
  1899. TcxGridDataController *pGDC = TvObjList->DataController;
  1900. int nObjCnt = pGDC->RecordCount;
  1901. String VMS_FORM_ID = EdFormId->Text;
  1902. String VMS_MODL_KIND = APP_GetCode(CbSizeType); // FVmsTypeCd
  1903. String VMS_FORM_TYPE = APP_GetCode(CbFormType);
  1904. String VMS_FORM_NM = EdFormName->Text.Trim();
  1905. String DSPL_EFF = APP_GetCode(CbFormDsplEff);
  1906. int DSPL_HR = SeDsplHr->Value;
  1907. String BACK_CLR = CDSFontManager->GetBackColorCode(CbFormBkClr->ItemIndex);
  1908. String VMS_FORM_IMG = "";
  1909. String RGSTR_ID = g_AppCfg.OPER_ID;
  1910. String CHNGR_ID = "";
  1911. bool bResult = false;
  1912. m_pEdtDesigner->GetVmsFormImage(ImgForm);
  1913. /////////////////////////////////// 폼정보 저장
  1914. ITSDb_GetConnection()->BeginTrans();
  1915. bResult = SaveVmsForm("Y");
  1916. if (!bResult) {
  1917. ITSDb_GetConnection()->RollbackTrans();
  1918. return;
  1919. }
  1920. /////////////////////////////////// 폼정보 하부데이터 삭제
  1921. bResult = DelVmsFormRltnTable(VMS_FORM_ID);
  1922. if (!bResult) {
  1923. ITSDb_GetConnection()->RollbackTrans();
  1924. return;
  1925. }
  1926. int newObjSeq = 0;
  1927. TVmsFormObject *pFormObj = NULL;
  1928. for (int ii = 0; ii < nObjCnt; ii++) {
  1929. String sObjSeq = VarToStr(pGDC->Values[ii][ColSeq->Index]);
  1930. pFormObj = m_pEdtDesigner->FindObject(sObjSeq.ToInt());
  1931. if (!pFormObj) continue;
  1932. if (pFormObj->ObjId != "") {
  1933. newObjSeq = 1;
  1934. break;
  1935. }
  1936. }
  1937. if (newObjSeq > 0) {
  1938. newObjSeq = nObjCnt+1; // 기존 폼을 수정하는 경우
  1939. }
  1940. else {
  1941. newObjSeq = 1; // 신규로 추가하는 메시지
  1942. }
  1943. String OBJ_VMS_FORM_ID = VMS_FORM_ID.SubString(1, 6);
  1944. /////////////////////////////////// 폼정보 하부데이터 저장
  1945. bResult = false;
  1946. String sQry;
  1947. TADOQuery *pADO = NULL;
  1948. try {
  1949. try {
  1950. pADO = new TADOQuery(NULL);
  1951. pADO->Close();
  1952. pADO->Connection = ITSDb_GetConnection();
  1953. // 폼 오브젝트 구성정보 저장
  1954. sQry = "INSERT INTO TB_VMS_FORM_VMS_FORM_OBJ ( \r\n"
  1955. " VMS_FORM_ID, \r\n"
  1956. " SN, \r\n"
  1957. " VMS_FORM_OBJ_KIND, \r\n"
  1958. " VMS_FORM_OBJ_ID, \r\n"
  1959. " BACK_CLR, \r\n"
  1960. " FORM_OBJ_PSTN_X, \r\n"
  1961. " FORM_OBJ_PSTN_Y, \r\n"
  1962. " FORM_OBJ_BLNK_YN ) \r\n"
  1963. " VALUES ( \r\n"
  1964. " :p01, \r\n"
  1965. " :p02, \r\n"
  1966. " :p03, \r\n"
  1967. " :p04, \r\n"
  1968. " :p05, \r\n"
  1969. " :p06, \r\n"
  1970. " :p07, \r\n"
  1971. " :p08 ) \r\n";
  1972. ITSDb_SQLText(pADO, sQry);
  1973. for (int ii = 0; ii < nObjCnt; ii++) {
  1974. String sObjSeq = VarToStr(pGDC->Values[ii][ColSeq->Index]);
  1975. pFormObj = m_pEdtDesigner->FindObject(sObjSeq.ToInt());
  1976. if (!pFormObj) continue;
  1977. //이력으로 조회하는곳에서 좌표를 0x02로 저장하는데 음수가 나오는 경우
  1978. //2자리로 처리가 되지 않기 때문에 여기서 막아준다.
  1979. if (pFormObj->Left < 0) pFormObj->Left = 0;
  1980. if (pFormObj->Top < 0) pFormObj->Top = 0;
  1981. int SN = ii+1;
  1982. String VMS_FORM_OBJ_KIND = pFormObj->ObjKind;
  1983. String VMS_FORM_OBJ_ID = pFormObj->ObjId;
  1984. if (VMS_FORM_OBJ_ID == "") {
  1985. VMS_FORM_OBJ_ID.printf(L"%s-%03d", OBJ_VMS_FORM_ID, newObjSeq++);
  1986. pFormObj->ObjId = VMS_FORM_OBJ_ID;
  1987. }
  1988. String BACK_CLR = pFormObj->BkColorCode;
  1989. int FORM_OBJ_PSTN_X = pFormObj->Left;
  1990. int FORM_OBJ_PSTN_Y = pFormObj->Top;
  1991. String FORM_OBJ_BLNK_YN = pFormObj->Blink ? "Y" : "N";
  1992. pADO->Parameters->ParamByName("p01")->Value = VMS_FORM_ID;
  1993. pADO->Parameters->ParamByName("p02")->Value = SN;
  1994. pADO->Parameters->ParamByName("p03")->Value = VMS_FORM_OBJ_KIND;
  1995. pADO->Parameters->ParamByName("p04")->Value = VMS_FORM_OBJ_ID;
  1996. pADO->Parameters->ParamByName("p05")->Value = BACK_CLR;
  1997. pADO->Parameters->ParamByName("p06")->Value = FORM_OBJ_PSTN_X;
  1998. pADO->Parameters->ParamByName("p07")->Value = FORM_OBJ_PSTN_Y;
  1999. pADO->Parameters->ParamByName("p08")->Value = FORM_OBJ_BLNK_YN;
  2000. ITSDb_SQLExec(pADO);
  2001. }
  2002. // 텍스트 오브젝트 정보 저장
  2003. sQry = "INSERT INTO TB_VMS_FORM_OBJ_TXT ( \r\n"
  2004. " VMS_FORM_OBJ_ID, \r\n"
  2005. " TXT_WDTH, \r\n"
  2006. " TXT_HGHT, \r\n"
  2007. " TXT_ALGN_MTHD, \r\n"
  2008. " FONT_CLR, \r\n"
  2009. " FONT_TYPE, \r\n"
  2010. " FONT_SZ, \r\n"
  2011. " FONT_THCK, \r\n"
  2012. " VMS_TXT_ITEM_ID, \r\n"
  2013. " DSPL_TXT, \r\n"
  2014. " RGSTR_ID, \r\n"
  2015. " REG_DT ) \r\n"
  2016. " VALUES ( \r\n"
  2017. " :p01, \r\n"
  2018. " :p02, \r\n"
  2019. " :p03, \r\n"
  2020. " :p04, \r\n"
  2021. " :p05, \r\n"
  2022. " :p06, \r\n"
  2023. " :p07, \r\n"
  2024. " :p08, \r\n"
  2025. " :p09, \r\n"
  2026. " :p10, \r\n"
  2027. " :p11, \r\n"
  2028. " SYSDATE ) \r\n";
  2029. ITSDb_SQLText(pADO, sQry);
  2030. for (int ii = 0; ii < nObjCnt; ii++) {
  2031. String sObjSeq = VarToStr(pGDC->Values[ii][ColSeq->Index]);
  2032. pFormObj = m_pEdtDesigner->FindObject(sObjSeq.ToInt());
  2033. if (!pFormObj) continue;
  2034. if (pFormObj->ObjKind != FORM_OBJ_KIND_TEXT) {
  2035. continue;
  2036. }
  2037. String VMS_FORM_OBJ_ID = pFormObj->ObjId;
  2038. int TXT_WDTH = pFormObj->GetWidth();
  2039. int TXT_HGHT = pFormObj->GetHeight();
  2040. String TXT_ALGN_MTHD = "C";
  2041. if (pFormObj->TextAlign == 0) {
  2042. TXT_ALGN_MTHD = "L";
  2043. }
  2044. else if (pFormObj->TextAlign == 1) {
  2045. TXT_ALGN_MTHD = "R";
  2046. }
  2047. String FONT_CLR = pFormObj->FontColorCode;
  2048. String FONT_TYPE = pFormObj->FontNameCode;
  2049. int FONT_SZ = pFormObj->FontSize;
  2050. String FONT_THCK = pFormObj->FontBold ? "B" : "N";
  2051. String VMS_TXT_ITEM_ID = pFormObj->FillIn;
  2052. String DSPL_TXT = pFormObj->Text;
  2053. String RGSTR_ID = g_AppCfg.OPER_ID;
  2054. String BACK_CLR = pFormObj->BkColorCode;
  2055. int FORM_OBJ_PSTN_X = pFormObj->Left;
  2056. int FORM_OBJ_PSTN_Y = pFormObj->Top;
  2057. String FORM_OBJ_BLNK_YN = pFormObj->Blink ? "Y" : "N";
  2058. pADO->Parameters->ParamByName("p01")->Value = VMS_FORM_OBJ_ID;
  2059. pADO->Parameters->ParamByName("p02")->Value = TXT_WDTH;
  2060. pADO->Parameters->ParamByName("p03")->Value = TXT_HGHT;
  2061. pADO->Parameters->ParamByName("p04")->Value = TXT_ALGN_MTHD;
  2062. pADO->Parameters->ParamByName("p05")->DataType = ftString;
  2063. pADO->Parameters->ParamByName("p05")->Value = FONT_CLR;
  2064. pADO->Parameters->ParamByName("p06")->DataType = ftString;
  2065. pADO->Parameters->ParamByName("p06")->Value = FONT_TYPE;
  2066. pADO->Parameters->ParamByName("p07")->Value = FONT_SZ;
  2067. pADO->Parameters->ParamByName("p08")->Value = FONT_THCK;
  2068. pADO->Parameters->ParamByName("p09")->Value = VMS_TXT_ITEM_ID;
  2069. pADO->Parameters->ParamByName("p10")->Value = DSPL_TXT;
  2070. pADO->Parameters->ParamByName("p11")->Value = RGSTR_ID;
  2071. ITSDb_SQLExec(pADO);
  2072. }
  2073. bResult = true;
  2074. }
  2075. catch(EDatabaseError &E)
  2076. {
  2077. ITSDb_GetConnection()->RollbackTrans();
  2078. DBERRORMSG("FrmVmsMsgMngr::BtnSaveClick", String(E.ClassName()), E.Message, sQry);
  2079. //throw Exception(String(E.ClassName()) + E.Message);
  2080. }
  2081. catch(Exception &e)
  2082. {
  2083. ITSDb_GetConnection()->RollbackTrans();
  2084. DBERRORMSG("FrmVmsMsgMngr::BtnSaveClick", String(e.ClassName()), e.Message, sQry);
  2085. //throw Exception(String(e.ClassName()) + e.Message);
  2086. }
  2087. }
  2088. __finally
  2089. {
  2090. if (pADO)
  2091. {
  2092. pADO->Close();
  2093. delete pADO;
  2094. }
  2095. }
  2096. if (bResult) {
  2097. ITSDb_GetConnection()->CommitTrans();
  2098. Application->MessageBox(lblText16->Caption.c_str(),//L"VMS 폼 정보 저장\r\nVMS 폼 정보를 저장 하였습니다.",
  2099. FTitle.c_str(),
  2100. MB_OK|MB_ICONINFORMATION|MB_APPLMODAL);
  2101. FUpdate = true;
  2102. LoadVmsForm();
  2103. CMM_SetGridRow(CxList, TvList, VMS_FORM_ID, ColVMS_FORM_ID->Index);
  2104. //DisplayInfo();
  2105. }
  2106. else {
  2107. ITSDb_GetConnection()->RollbackTrans();
  2108. }
  2109. //ReForm->Lines->Clear();
  2110. //ReFormTemp->Lines->Clear();
  2111. }
  2112. //---------------------------------------------------------------------------
  2113. void __fastcall TFrmVmsMsgFormMngr::CheckImageSelected()
  2114. {
  2115. #ifdef IMAGE_RESIZE
  2116. bool selImage = false;
  2117. int nImgW = 0;
  2118. int nImgH = 0;
  2119. int nObjCnt = m_pEdtDesigner->GetObjectCount();
  2120. for(int ii = 0; ii < nObjCnt; ii++)
  2121. {
  2122. TVmsFormObject *pObj = m_pEdtDesigner->GetObject(ii);
  2123. if (!pObj) continue;
  2124. if (!pObj->Selected) continue;
  2125. #if 0
  2126. if (pObj->ObjType.ToIntDef(0) == 1 || pObj->ObjType.ToIntDef(0) == 2)
  2127. {
  2128. selImage = true;
  2129. nImgW = pObj->GetWidth();
  2130. nImgH = pObj->GetHeight();
  2131. }
  2132. else
  2133. {
  2134. selImage = false;
  2135. break;
  2136. }
  2137. #else
  2138. switch(pObj->ObjType.ToIntDef(0))
  2139. {
  2140. case 1: //심볼
  2141. case 2: //이미지
  2142. case 3: //소통정보배경이미지
  2143. case 17: //소통정보이미지1
  2144. case 27: //소통정보이미지2
  2145. case 37: //소통정보이미지3
  2146. case 47: //소통정보이미지4
  2147. case 167: //@우회소통정보이미지
  2148. case 200: //동영상이미지
  2149. case 300: //스트리밍영상이미지
  2150. case 406: //@통합대기등급 이미지
  2151. case 407: //@미세먼지등급 이미지
  2152. case 408: //@초미세먼지등급 이미지
  2153. case 413: //@오존등급이미지
  2154. selImage = true;
  2155. nImgW = pObj->GetWidth();
  2156. nImgH = pObj->GetHeight();
  2157. break;
  2158. default:
  2159. selImage = false;
  2160. break;
  2161. }
  2162. if (selImage == false)
  2163. {
  2164. break;
  2165. }
  2166. #endif
  2167. }
  2168. if (selImage)
  2169. {
  2170. TNotifyEvent evtW = SeImgW->Properties->OnChange;
  2171. TNotifyEvent evtH = SeImgH->Properties->OnChange;
  2172. SeImgW->Properties->OnChange = NULL;
  2173. SeImgH->Properties->OnChange = NULL;
  2174. SeImgW->Value = nImgW;
  2175. SeImgH->Value = nImgH;
  2176. SeImgW->Properties->OnChange = evtW;
  2177. SeImgH->Properties->OnChange = evtH;
  2178. PnlImage->Visible = true;
  2179. }
  2180. else
  2181. {
  2182. PnlImage->Visible = false;
  2183. }
  2184. #endif
  2185. }
  2186. //---------------------------------------------------------------------------
  2187. void __fastcall TFrmVmsMsgFormMngr::SeImgSizePropertiesChange(TObject *Sender)
  2188. {
  2189. if (m_bEdit) return;
  2190. if (((TcxSpinEdit*)Sender)->Value < ((TcxSpinEdit*)Sender)->Properties->MinValue)
  2191. ((TcxSpinEdit*)Sender)->Value = ((TcxSpinEdit*)Sender)->Properties->MinValue;
  2192. else if(((TcxSpinEdit*)Sender)->Value > ((TcxSpinEdit*)Sender)->Properties->MaxValue &&
  2193. ((TcxSpinEdit*)Sender)->Properties->MaxValue)
  2194. ((TcxSpinEdit*)Sender)->Value = ((TcxSpinEdit*)Sender)->Properties->MaxValue;
  2195. #ifdef IMAGE_RESIZE
  2196. int nImgW = SeImgW->Value;
  2197. int nImgH = SeImgH->Value;
  2198. int nObjCnt = m_pEdtDesigner->GetObjectCount();
  2199. for(int ii = 0; ii < nObjCnt; ii++)
  2200. {
  2201. TVmsFormObject *pObj = m_pEdtDesigner->GetObject(ii);
  2202. if (!pObj) continue;
  2203. if (!pObj->Selected) continue;
  2204. if (pObj->ObjKind != FORM_OBJ_KIND_TEXT) {
  2205. pObj->GetImage()->AutoSize= false;
  2206. pObj->GetImage()->Stretch = true;
  2207. pObj->GetImage()->Width = nImgW;
  2208. pObj->GetImage()->Height = nImgH;
  2209. pObj->SetSize(nImgW, nImgH);
  2210. }
  2211. }
  2212. #endif
  2213. }
  2214. //---------------------------------------------------------------------------
  2215. void __fastcall TFrmVmsMsgFormMngr::PgEditClick(TObject *Sender)
  2216. {
  2217. try
  2218. {
  2219. if (PgEdit->Properties->ActivePage == TsDirect) {
  2220. if (ReForm->Enabled) ReForm->SetFocus();
  2221. }
  2222. else {
  2223. if (PnlEditForm->Enabled) PnlEditForm->SetFocus();
  2224. }
  2225. }
  2226. catch(Exception &e)
  2227. {
  2228. }
  2229. }
  2230. //---------------------------------------------------------------------------
  2231. void __fastcall TFrmVmsMsgFormMngr::BtrnReFormClearClick(TObject *Sender)
  2232. {
  2233. ReForm->Lines->Clear();
  2234. ReForm->SelAttributes->Style = TFontStyles() >> fsUnderline;
  2235. }
  2236. //---------------------------------------------------------------------------
  2237. void __fastcall TFrmVmsMsgFormMngr::BtnRedClick(TObject *Sender)
  2238. {
  2239. TcxButton *pClrBtn = (TcxButton*)Sender;
  2240. switch(pClrBtn->Tag)
  2241. {
  2242. case 0 : ReForm->SelAttributes->Color = clLime; break;
  2243. case 1 : ReForm->SelAttributes->Color = clYellow; break;
  2244. case 2 : ReForm->SelAttributes->Color = clRed; break;
  2245. }
  2246. }
  2247. //---------------------------------------------------------------------------
  2248. void __fastcall TFrmVmsMsgFormMngr::BtnObjDeleteAllClick(TObject *Sender)
  2249. {
  2250. String sMsgString;
  2251. sMsgString = "전체 객체 정보를 모두 삭제하시겠습니까?";
  2252. if (Application->MessageBox(sMsgString.c_str(),
  2253. lblText7->Caption.c_str(),//L"객체 정보 삭제",
  2254. MB_YESNO|MB_ICONQUESTION|MB_APPLMODAL) != IDYES)
  2255. {
  2256. return;
  2257. }
  2258. bool bUse = false;
  2259. TVmsFormObject *pObj;
  2260. int nObjCnt = m_pEdtDesigner->GetObjectCount();
  2261. for (int ii = nObjCnt-1; ii >= 0; ii--)
  2262. {
  2263. pObj = m_pEdtDesigner->GetObject(ii);
  2264. m_pEdtDesigner->DelObject(ii);
  2265. }
  2266. if (bUse)
  2267. {
  2268. Application->MessageBox(lblText8->Caption.c_str(),//L"VMS 폼 객체 삭제\r\nVMS 폼 객체 중 정보제공구간에 설정된 객체는 삭제할 수 없습니다.",
  2269. FTitle.c_str(),
  2270. MB_OK|MB_ICONERROR|MB_APPLMODAL);
  2271. }
  2272. SelObjectListData();
  2273. }
  2274. //---------------------------------------------------------------------------
  2275. void __fastcall TFrmVmsMsgFormMngr::SeDsplHrPropertiesChange(TObject *Sender)
  2276. {
  2277. if (((TcxSpinEdit*)Sender)->Value < ((TcxSpinEdit*)Sender)->Properties->MinValue)
  2278. ((TcxSpinEdit*)Sender)->Value = ((TcxSpinEdit*)Sender)->Properties->MinValue;
  2279. else if(((TcxSpinEdit*)Sender)->Value > ((TcxSpinEdit*)Sender)->Properties->MaxValue &&
  2280. ((TcxSpinEdit*)Sender)->Properties->MaxValue)
  2281. ((TcxSpinEdit*)Sender)->Value = ((TcxSpinEdit*)Sender)->Properties->MaxValue;
  2282. }
  2283. //---------------------------------------------------------------------------
  2284. void __fastcall TFrmVmsMsgFormMngr::ChkDrawModuleClick(TObject *Sender)
  2285. {
  2286. if (ChkDrawModule->Checked)
  2287. m_pEdtDesigner->PreviewDrawModuleForm(ReForm, ReFormTemp, ImgEdtPreview, FVmsRows, FVmsCols);
  2288. else
  2289. m_pEdtDesigner->PreviewDrawForm(ReForm, ReFormTemp, ImgEdtPreview);
  2290. }
  2291. //---------------------------------------------------------------------------
  2292. void __fastcall TFrmVmsMsgFormMngr::CbFillIn1PropertiesChange(TObject *Sender)
  2293. {
  2294. int nItemIndex = CbFillIn1->ItemIndex;
  2295. TVmsTextItem *pObj = (TVmsTextItem*)CbFillIn1->Properties->Items->Objects[nItemIndex];
  2296. if (pObj != NULL) {
  2297. //ReForm->SelAttributes->Style = TFontStyles() >> fsUnderline;
  2298. //ReForm->SelText = " ";
  2299. ReForm->SelAttributes->Style = ReForm->SelAttributes->Style << fsUnderline;
  2300. ReForm->SelText = pObj->TXT_ITEM_FILLIN;
  2301. ReForm->SelAttributes->Style = TFontStyles() >> fsUnderline;
  2302. ReForm->SelText = " ";
  2303. ReForm->SetFocus();
  2304. }
  2305. }
  2306. //---------------------------------------------------------------------------
  2307. void __fastcall TFrmVmsMsgFormMngr::ReFormClick(TObject *Sender)
  2308. {
  2309. #if 0
  2310. for(int i=0;i<CBFontName->Properties->Items->Count;i++){
  2311. if(CBFontName->Properties->Items->Strings[i]== VmsMsgEdit->GetSelFontName() ){
  2312. CBFontName->ItemIndex = i;
  2313. break;
  2314. }
  2315. }
  2316. CBFontSize->SelKey( VmsMsgEdit->GetSelFontSize() );
  2317. CbFontClr->ColorValue = VmsMsgEdit->GetSelFontColor();
  2318. CBBgColor->ColorValue = VmsMsgEdit->GetBgColor();
  2319. #endif
  2320. }
  2321. //---------------------------------------------------------------------------
  2322. void __fastcall TFrmVmsMsgFormMngr::BtnAddFormObjClick(TObject *Sender)
  2323. {
  2324. PopupFormObjAdd->Popup(BtnAddFormObj->ClientOrigin.x, BtnAddFormObj->ClientOrigin.y + BtnAddFormObj->Height);
  2325. }
  2326. //---------------------------------------------------------------------------
  2327. void __fastcall TFrmVmsMsgFormMngr::MnuPouupFormObjAddClick(TObject *Sender)
  2328. {
  2329. TMenuItem *pMenu = (TMenuItem*)Sender;
  2330. bool result = false;
  2331. switch(pMenu->Tag) {
  2332. case 1: result = AddSymbObj(); break;
  2333. case 2: result = AddTrafObj(); break;
  2334. case 3: result = AddCctvObj(); break;
  2335. case 4: result = AddMoviObj(); break;
  2336. case 5: break;
  2337. case 6: break;
  2338. case 7: break;
  2339. default: return;
  2340. }
  2341. if (result) {
  2342. }
  2343. }
  2344. //---------------------------------------------------------------------------
  2345. bool __fastcall TFrmVmsMsgFormMngr::AddSymbObj()
  2346. {
  2347. TVMSM510M *pSelForm = new TVMSM510M(this);
  2348. pSelForm->FImageType = 1;
  2349. pSelForm->SYMB_TYPE = "SBT1"; // 일반
  2350. pSelForm->ShowModal();
  2351. if (!pSelForm->m_bSelected)
  2352. {
  2353. delete pSelForm;
  2354. return false;
  2355. }
  2356. TVmsFormObject *pObj = m_pEdtDesigner->AddObject(odtBmp);
  2357. if (!pObj) {
  2358. delete pSelForm;
  2359. return false;
  2360. }
  2361. String sPictId = pSelForm->EdPictId->Text;
  2362. String sImagePath = pSelForm->EdImagePath->Text;
  2363. String sPictNm = pSelForm->EdPictNm->Text;
  2364. String sPictSize = pSelForm->EdPictSize->Text;
  2365. int nPictW = pSelForm->EdPictW->Text.ToIntDef(10);
  2366. int nPictH = pSelForm->EdPictH->Text.ToIntDef(10);
  2367. String sPictExt = pSelForm->EdPictExt->Text;
  2368. int nNewObjSeq = m_pEdtDesigner->GetNewObjectSeq();
  2369. EdObjSeq->Text = String(nNewObjSeq);
  2370. pObj->ObjSeq = nNewObjSeq;
  2371. pObj->ObjId = sPictId;
  2372. pObj->ObjKind = FORM_OBJ_KIND_IMAGE;
  2373. pObj->ObjType = pObj->ObjKind;
  2374. pObj->ObjSize = sPictSize.ToIntDef(0);
  2375. pObj->BkColorCode = m_pEdtDesigner->BkColorCode;
  2376. pObj->Blink = false;
  2377. pObj->Tag = "N";
  2378. pObj->Text = sPictNm;
  2379. pObj->ImageId = sPictId;
  2380. LoadingImage(pObj, sImagePath, nPictW, nPictH);
  2381. pObj->SetPos(0, 0);
  2382. if (pObj->Left < 0) pObj->Left = 0;
  2383. if (pObj->Top < 0) pObj->Top = 0;
  2384. pObj->Show();
  2385. AddObjectToList(pObj, true);
  2386. delete pSelForm;
  2387. return true;
  2388. }
  2389. //---------------------------------------------------------------------------
  2390. bool __fastcall TFrmVmsMsgFormMngr::AddTrafObj()
  2391. {
  2392. TVMSM510M *pSelForm = new TVMSM510M(this);
  2393. pSelForm->FImageType = 1;
  2394. pSelForm->SYMB_TYPE = "SBT1"; // 일반
  2395. pSelForm->ShowModal();
  2396. if (!pSelForm->m_bSelected)
  2397. {
  2398. delete pSelForm;
  2399. return false;
  2400. }
  2401. TVmsFormObject *pObj = m_pEdtDesigner->AddObject(odtBmp);
  2402. if (!pObj) {
  2403. delete pSelForm;
  2404. return false;
  2405. }
  2406. String sPictId = pSelForm->EdPictId->Text;
  2407. String sImagePath = pSelForm->EdImagePath->Text;
  2408. String sPictNm = pSelForm->EdPictNm->Text;
  2409. String sPictSize = pSelForm->EdPictSize->Text;
  2410. int nPictW = pSelForm->EdPictW->Text.ToIntDef(10);
  2411. int nPictH = pSelForm->EdPictH->Text.ToIntDef(10);
  2412. String sPictExt = pSelForm->EdPictExt->Text;
  2413. int nNewObjSeq = m_pEdtDesigner->GetNewObjectSeq();
  2414. EdObjSeq->Text = String(nNewObjSeq);
  2415. pObj->ObjSeq = nNewObjSeq;
  2416. pObj->ObjId = sPictId;
  2417. pObj->ObjKind = FORM_OBJ_KIND_IMAGE;
  2418. pObj->ObjType = pObj->ObjKind;
  2419. pObj->ObjSize = sPictSize.ToIntDef(0);
  2420. pObj->BkColorCode = m_pEdtDesigner->BkColorCode;
  2421. pObj->Blink = false;
  2422. pObj->Tag = "N";
  2423. pObj->Text = sPictNm;
  2424. pObj->ImageId = sPictId;
  2425. LoadingImage(pObj, sImagePath, nPictW, nPictH);
  2426. pObj->SetPos(0, 0);
  2427. if (pObj->Left < 0) pObj->Left = 0;
  2428. if (pObj->Top < 0) pObj->Top = 0;
  2429. pObj->Show();
  2430. AddObjectToList(pObj, true);
  2431. delete pSelForm;
  2432. FTrafBackSymb = true;
  2433. return true;
  2434. }
  2435. //---------------------------------------------------------------------------
  2436. bool __fastcall TFrmVmsMsgFormMngr::AddCctvObj()
  2437. {
  2438. TVMSM570M *pSelForm = new TVMSM570M(this);
  2439. pSelForm->ShowModal();
  2440. if (!pSelForm->m_bSelected)
  2441. {
  2442. delete pSelForm;
  2443. return false;
  2444. }
  2445. String sFormObjId = pSelForm->EdFormObjId->Text;
  2446. String sCctvName = pSelForm->EdCctvNm->Text;
  2447. String sCctvId = pSelForm->EdCctvId->Text;
  2448. TVmsFormObject *pObj = m_pEdtDesigner->AddObject(odtBmp);
  2449. if (!pObj) {
  2450. delete pSelForm;
  2451. return false;
  2452. }
  2453. int nNewObjSeq = m_pEdtDesigner->GetNewObjectSeq();
  2454. EdObjSeq->Text = String(nNewObjSeq);
  2455. pObj->ObjSeq = nNewObjSeq;
  2456. pObj->ObjId = sFormObjId;
  2457. pObj->ObjKind = FORM_OBJ_KIND_CCTV;
  2458. pObj->ObjType = pObj->ObjKind;
  2459. pObj->ObjSize = 0;
  2460. pObj->BkColorCode = m_pEdtDesigner->BkColorCode;
  2461. pObj->Blink = false;
  2462. pObj->Tag = "N";
  2463. pObj->Text = sCctvName;
  2464. pObj->ImageId = sCctvId;
  2465. pObj->SetBitmap(ImgStream->Picture->Bitmap);
  2466. //nW = ImgStream->Width;
  2467. //nH = ImgStream->Height;
  2468. //FVmsTypeCd = pVmsSizeType->TypeCd;
  2469. //FVmsWidth = pVmsSizeType->Width;
  2470. //FVmsHeight = pVmsSizeType->Height;
  2471. //FVmsCols = pVmsSizeType->Cols;
  2472. //FVmsRows = pVmsSizeType->Rows;
  2473. pObj->SetPos(0, 0);
  2474. if (pObj->Left < 0) pObj->Left = 0;
  2475. if (pObj->Top < 0) pObj->Top = 0;
  2476. pObj->Show();
  2477. AddObjectToList(pObj, true);
  2478. delete pSelForm;
  2479. return true;
  2480. }
  2481. //---------------------------------------------------------------------------
  2482. bool __fastcall TFrmVmsMsgFormMngr::AddMoviObj()
  2483. {
  2484. return true;
  2485. }
  2486. //---------------------------------------------------------------------------
  2487. bool __fastcall TFrmVmsMsgFormMngr::AddTextObj(String ATxtItemId, String ADsplText)
  2488. {
  2489. TVmsFormObject *pObj = m_pEdtDesigner->AddObject(odtText);
  2490. if (!pObj) return false;
  2491. int nNewObjSeq = m_pEdtDesigner->GetNewObjectSeq();
  2492. EdObjSeq->Text = String(nNewObjSeq);
  2493. pObj->ObjSeq = nNewObjSeq;
  2494. pObj->ObjId = "";
  2495. pObj->ObjKind = FORM_OBJ_KIND_TEXT;
  2496. pObj->ObjType = pObj->ObjKind;
  2497. pObj->ObjSize = ADsplText.Length();
  2498. pObj->BkColorCode = m_pEdtDesigner->BkColorCode;
  2499. pObj->Blink = false;
  2500. pObj->Tag = "N";
  2501. pObj->EditMode = true;
  2502. pObj->Text = ADsplText;
  2503. pObj->ImageId = pObj->ObjId;
  2504. pObj->RunText = pObj->Text;
  2505. pObj->FillIn = ATxtItemId;
  2506. int nTextAlign = 0;
  2507. String sFontCode = APP_GetCode(CbFontName);
  2508. String sFontName = APP_GetCodeName(CbFontName);
  2509. pObj->FontName = sFontName;
  2510. pObj->FontNameCode = sFontCode;
  2511. pObj->FontColorCode = "02";
  2512. pObj->FontSize = 16;
  2513. pObj->FontBold = true;
  2514. pObj->TextAlign = nTextAlign;
  2515. if (ATxtItemId == DFLT_TEXT_TYPE) {
  2516. EdDsplTxt->Properties->ReadOnly = true;
  2517. }
  2518. else {
  2519. EdDsplTxt->Properties->ReadOnly = false;
  2520. }
  2521. pObj->SetPos(0, 0);
  2522. pObj->Show();
  2523. AddObjectToList(pObj, true);
  2524. return true;
  2525. }
  2526. //---------------------------------------------------------------------------
  2527. void __fastcall TFrmVmsMsgFormMngr::BtnAddTextClick(TObject *Sender)
  2528. {
  2529. AddTextObj(DFLT_TEXT_TYPE, "문자열");
  2530. return;
  2531. if (CbVmsObjType->ItemIndex < 0) return;
  2532. String sFormType = APP_GetCode(CbFormType);
  2533. String sObjType = APP_GetCode(CbVmsObjType);
  2534. int nObjType = sObjType.ToIntDef(0);
  2535. String sObjText = FindObjectKindName(sObjType);
  2536. String sFontName = FrmLang->lblFontName->Caption;//"굴림체";
  2537. String sFontNameCode = "1";
  2538. String sFontColorCode = "2"; //Green
  2539. int nFontSize = 14;
  2540. bool bFontBold = true;
  2541. switch(nObjType)
  2542. {
  2543. case 201: //동영상
  2544. case 301: //스트리밍영상
  2545. {
  2546. TVmsFormObject *pObj = m_pEdtDesigner->AddObject(odtBmp);
  2547. if (!pObj) return;
  2548. int nNewObjSeq = m_pEdtDesigner->GetNewObjectSeq();
  2549. EdObjSeq->Text = String(nNewObjSeq);
  2550. pObj->EditMode = false;
  2551. pObj->ObjSeq = nNewObjSeq;
  2552. pObj->ObjKind = OBJKIND_IMAGE; // "2"
  2553. pObj->ObjType = sObjType;
  2554. pObj->ObjSize = FVmsWidth * FVmsHeight;
  2555. pObj->BkColorCode = m_pEdtDesigner->BkColorCode;
  2556. pObj->Blink = false;
  2557. pObj->Tag = "N";
  2558. pObj->Text = sObjText;
  2559. pObj->ImageId = "0";
  2560. int nW, nH;
  2561. if (nObjType == 201)
  2562. {
  2563. pObj->SetBitmap(ImgVideo->Picture->Bitmap);
  2564. nW = ImgVideo->Width;
  2565. nH = ImgVideo->Height;
  2566. }
  2567. else
  2568. {
  2569. pObj->SetBitmap(ImgStream->Picture->Bitmap);
  2570. nW = ImgStream->Width;
  2571. nH = ImgStream->Height;
  2572. }
  2573. //pObj->SetSize(FVmsWidth, FVmsHeight);
  2574. nW = (FVmsWidth-nW)/2;
  2575. nH = (FVmsHeight-nH)/2;
  2576. pObj->SetPos(nW, nH);
  2577. pObj->Show();
  2578. AddObjectToList(pObj, true);
  2579. }
  2580. break;
  2581. case 1: //이미지 심볼
  2582. case 3: //소통정보배경이미지
  2583. case 17: //@소통이미지1
  2584. case 27: //@소통이미지2
  2585. case 37: //@소통이미지3
  2586. case 47: //@소통이미지4
  2587. case 406: //@통합대기등급 이미지
  2588. case 407: //@미세먼지등급 이미지
  2589. case 408: //@초미세먼지등급 이미지
  2590. case 413: //@오존등급이미지
  2591. {
  2592. TVMSM510M *pSelForm = new TVMSM510M(this);
  2593. if (nObjType == 1 || nObjType == 3)
  2594. {
  2595. pSelForm->FImageType = nObjType;
  2596. }
  2597. else
  2598. {
  2599. pSelForm->FImageType = 2;
  2600. }
  2601. if (nObjType >= 406 && nObjType <= 408)
  2602. {
  2603. pSelForm->FImageType = 1;
  2604. }
  2605. if (nObjType == 413)
  2606. {
  2607. pSelForm->FImageType = 1;
  2608. }
  2609. String sSymbType = "SBT0";
  2610. switch(nObjType)
  2611. {
  2612. case 1: //이미지 심볼
  2613. sSymbType = "SBT0";
  2614. break;
  2615. case 3: //소통정보배경이미지
  2616. sSymbType = "SBT1";
  2617. break;
  2618. case 17: //@소통이미지1
  2619. case 27: //@소통이미지2
  2620. case 37: //@소통이미지3
  2621. case 47: //@소통이미지4
  2622. sSymbType = "SBT2";
  2623. break;
  2624. case 406: //@통합대기등급 이미지
  2625. case 407: //@미세먼지등급 이미지
  2626. case 408: //@초미세먼지등급 이미지
  2627. case 413: //@오존등급 이미지
  2628. sSymbType = "SBT4";
  2629. break;
  2630. default :
  2631. sSymbType = "SBT0";
  2632. break;
  2633. }
  2634. pSelForm->SYMB_TYPE = sSymbType;
  2635. pSelForm->ShowModal();
  2636. if (!pSelForm->m_bSelected)
  2637. {
  2638. delete pSelForm;
  2639. return;
  2640. }
  2641. TVmsFormObject *pObj = m_pEdtDesigner->AddObject(odtBmp);
  2642. if (!pObj) return;
  2643. int nNewObjSeq = m_pEdtDesigner->GetNewObjectSeq();
  2644. EdObjSeq->Text = String(nNewObjSeq);
  2645. pObj->ObjSeq = nNewObjSeq;
  2646. pObj->ObjKind = OBJKIND_IMAGEID; // "2"
  2647. pObj->ObjType = sObjType;
  2648. pObj->ObjSize = pSelForm->ImgPreView->Picture->Bitmap->Width * pSelForm->ImgPreView->Picture->Bitmap->Height;
  2649. pObj->BkColorCode = m_pEdtDesigner->BkColorCode;
  2650. pObj->Blink = false;
  2651. pObj->Tag = "N";
  2652. pObj->Text = sObjText;
  2653. //pObj->ImageId = pSelForm->EdNmbr->Text;
  2654. pObj->SetBitmap(pSelForm->ImgPreView->Picture->Bitmap);
  2655. #ifdef IMAGE_RESIZE
  2656. //if (sSymbType == "SBT0")
  2657. {
  2658. //pObj->GetImage()->AutoSize= false;
  2659. //pObj->GetImage()->Stretch = true;
  2660. TNotifyEvent evtW = SeImgW->Properties->OnChange;
  2661. TNotifyEvent evtH = SeImgH->Properties->OnChange;
  2662. SeImgW->Properties->OnChange = NULL;
  2663. SeImgH->Properties->OnChange = NULL;
  2664. SeImgW->Value = pSelForm->ImgPreView->Picture->Bitmap->Width;
  2665. SeImgH->Value = pSelForm->ImgPreView->Picture->Bitmap->Height;
  2666. SeImgW->Properties->OnChange = evtW;
  2667. SeImgH->Properties->OnChange = evtH;
  2668. PnlImage->Visible = true;
  2669. }
  2670. #endif
  2671. pObj->SetPos(0, 0);
  2672. if (pObj->Left < 0) pObj->Left = 0;
  2673. if (pObj->Top < 0) pObj->Top = 0;
  2674. pObj->Show();
  2675. AddObjectToList(pObj, true);
  2676. delete pSelForm;
  2677. }
  2678. break;
  2679. case 2: //파일이미지
  2680. OpenBmp->FileName = "";
  2681. OpenBmp->Execute();
  2682. break;
  2683. #if 0
  2684. case 17: //@방향이미지1
  2685. case 27: //@방향이미지2
  2686. case 37: //@방향이미지3
  2687. case 47: //@방향이미지4
  2688. {
  2689. TVmsFormObject *pObj = m_pEdtDesigner->AddObject(odtBmp);
  2690. if (!pObj) return;
  2691. int nNewObjSeq = m_pEdtDesigner->GetNewObjectSeq();
  2692. EdObjSeq->Text = String(nNewObjSeq);
  2693. pObj->ObjSeq = nNewObjSeq;
  2694. pObj->ObjKind = OBJKIND_IMAGEID; // "2"
  2695. pObj->ObjType = sObjType;
  2696. pObj->ObjSize = ImgDir->Picture->Bitmap->Width * ImgDir->Picture->Bitmap->Height;
  2697. pObj->BkColorCode = m_pEdtDesigner->BkColorCode;
  2698. pObj->Blink = false;
  2699. //pObj->Text = CbVmsObjType->Text;
  2700. pObj->Text = sObjText;
  2701. pObj->ImageId = "0";
  2702. pObj->SetBitmap(ImgDir->Picture->Bitmap);
  2703. pObj->SetPos(0, 0);
  2704. pObj->Show();
  2705. AddObjectToList(pObj, true);
  2706. }
  2707. break;
  2708. #endif
  2709. default:
  2710. {
  2711. TVmsFormObject *pObj = m_pEdtDesigner->AddObject(odtText);
  2712. if (!pObj) return;
  2713. int nNewObjSeq = m_pEdtDesigner->GetNewObjectSeq();
  2714. EdObjSeq->Text = String(nNewObjSeq);
  2715. pObj->ObjSeq = nNewObjSeq;
  2716. pObj->ObjType = sObjType;
  2717. if (nObjType == 91 || nObjType == 92 ||
  2718. nObjType == 101 || nObjType == 102 || nObjType == 103 || nObjType == 104 ||
  2719. (nObjType >= 401 && nObjType <= 413)
  2720. )
  2721. {
  2722. pObj->Tag = "";
  2723. }
  2724. else
  2725. {
  2726. pObj->Tag = "N";
  2727. }
  2728. pObj->TextAlign = 0; // left
  2729. if (nObjType == 19) //소통정보(가변)
  2730. {
  2731. #ifdef ENG
  2732. sObjText = "@Traffic Fast About 0 Min.";
  2733. #else
  2734. sObjText = "@소통원활 약 0 분";
  2735. #endif
  2736. pObj->TextAlign = 2; // center
  2737. EdDsplTxt->Properties->ReadOnly = true;
  2738. }
  2739. else if (nObjType == 102 || nObjType == 103) {
  2740. // 주차면수, 주차가능면수
  2741. sObjText = "000면";
  2742. pObj->TextAlign = 1; // right
  2743. }
  2744. else if (nObjType == 104) {
  2745. // 주차장혼잡도
  2746. sObjText = "@상황";
  2747. pObj->TextAlign = 2; // center
  2748. }
  2749. else
  2750. {
  2751. EdDsplTxt->Properties->ReadOnly = false;
  2752. }
  2753. pObj->ObjSize = sObjText.Length();
  2754. pObj->BkColorCode = m_pEdtDesigner->BkColorCode;
  2755. pObj->Blink = false;
  2756. pObj->Text = sObjText;
  2757. pObj->EditMode = true;
  2758. pObj->ObjKind = OBJKIND_TEXT;
  2759. pObj->FontName = sFontName;
  2760. pObj->FontNameCode = sFontNameCode;
  2761. pObj->FontColorCode = sFontColorCode;
  2762. pObj->FontSize = nFontSize;
  2763. pObj->FontBold = bFontBold;
  2764. pObj->SetPos(0, 0);
  2765. pObj->Show();
  2766. AddObjectToList(pObj, true);
  2767. }
  2768. break;
  2769. }
  2770. }
  2771. //---------------------------------------------------------------------------
  2772. void __fastcall TFrmVmsMsgFormMngr::CbFillInClick(TObject *Sender)
  2773. {
  2774. int nItemIndex = CbFillIn->ItemIndex;
  2775. if (nItemIndex == 0) return;
  2776. TVmsTextItem *pObj = (TVmsTextItem*)CbFillIn->Properties->Items->Objects[CbFillIn->ItemIndex];
  2777. if (pObj != NULL) {
  2778. AddTextObj(pObj->TXT_ITEM_ID, pObj->TXT_ITEM_FILLIN);
  2779. }
  2780. if (PnlEdtBack->Enabled) PnlEdtBack->SetFocus();
  2781. CbFillIn->ItemIndex = 0;
  2782. }
  2783. //---------------------------------------------------------------------------
  2784. void __fastcall TFrmVmsMsgFormMngr::ChangeFormObjectPanel(String AObjKind)
  2785. {
  2786. //H 도형 객체
  2787. //I 그래픽 객체
  2788. //P 텍스트 객체
  2789. if (AObjKind == FORM_OBJ_KIND_TEXT) {
  2790. PnlObjCctv->Visible = false;
  2791. PnlObjSymb->Visible = false;
  2792. PnlObjText->Visible = true;
  2793. }
  2794. else
  2795. if (AObjKind == FORM_OBJ_KIND_IMAGE) {
  2796. PnlObjCctv->Visible = false;
  2797. PnlObjText->Visible = false;
  2798. PnlObjSymb->Visible = true;
  2799. }
  2800. else {
  2801. PnlObjCctv->Visible = false;
  2802. PnlObjSymb->Visible = false;
  2803. PnlObjText->Visible = false;
  2804. }
  2805. }
  2806. //---------------------------------------------------------------------------
  2807. void __fastcall TFrmVmsMsgFormMngr::CbObjKindPropertiesChange(TObject *Sender)
  2808. {
  2809. //객체종류가 변경되었을 경우 처리
  2810. String sObjKind = APP_GetCode(CbObjKind);
  2811. ChangeFormObjectPanel(sObjKind);
  2812. }
  2813. //---------------------------------------------------------------------------
  2814. void __fastcall TFrmVmsMsgFormMngr::BtnTestClick(TObject *Sender)
  2815. {
  2816. #if 0
  2817. if (FLastImageFileName != "") {
  2818. Image1->Picture->LoadFromFile(FLastImageFileName);
  2819. //Image1->Picture->LoadFromFile("C:\\Users\\OpenValue\\AppData\\Local\\Temp\\VMS-FORM\\SG-0000019.png");
  2820. if (Image1->Picture->Graphic->ClassName() == "TGIFImage") {
  2821. ((TGIFImage *)Image1->Picture->Graphic)->Animate = true;
  2822. Image1->Transparent = true;
  2823. }
  2824. else {
  2825. Image1->Transparent = false;
  2826. }
  2827. }
  2828. #endif
  2829. }
  2830. //---------------------------------------------------------------------------
  2831. void __fastcall TFrmVmsMsgFormMngr::LoadingImage(TVmsFormObject *AFormObj, String AFileName, int AW, int AH)
  2832. {
  2833. FLastImageFileName = AFileName;
  2834. try {
  2835. TImage *symbImag = AFormObj->GetImage();
  2836. symbImag->Picture->LoadFromFile(AFileName);
  2837. #if 0
  2838. symbImag->Width = AW;
  2839. symbImag->Height= AH;
  2840. if (symbImag->Picture->Bitmap != NULL) {
  2841. symbImag->Picture->Bitmap->Width = AW;
  2842. symbImag->Picture->Bitmap->Height= AH;
  2843. }
  2844. #endif
  2845. if (symbImag->Picture->Graphic->ClassName() == "TGIFImage") {
  2846. ((TGIFImage *)symbImag->Picture->Graphic)->Animate = true;
  2847. symbImag->Transparent = true;
  2848. }
  2849. else {
  2850. symbImag->Transparent = false;
  2851. }
  2852. symbImag->Refresh();
  2853. AFormObj->SetSize(AW, AH);
  2854. }
  2855. catch(Exception &e) {
  2856. String errMsg = "이미지를 읽어오는 중에 오류가 발생했습니다.\r\n" + e.Message;
  2857. Application->MessageBox(errMsg.c_str(), L"이미지 로딩 실패", MB_OK|MB_ICONERROR|MB_APPLMODAL);
  2858. }
  2859. #ifdef IMAGE_RESIZE
  2860. TNotifyEvent evtW = SeImgW->Properties->OnChange;
  2861. TNotifyEvent evtH = SeImgH->Properties->OnChange;
  2862. SeImgW->Properties->OnChange = NULL;
  2863. SeImgH->Properties->OnChange = NULL;
  2864. SeImgW->Value = AW;
  2865. SeImgH->Value = AH;
  2866. SeImgW->Properties->OnChange = evtW;
  2867. SeImgH->Properties->OnChange = evtH;
  2868. #endif
  2869. }
  2870. //---------------------------------------------------------------------------
  2871. void __fastcall TFrmVmsMsgFormMngr::ReFormKeyPress(TObject *Sender, wchar_t &Key)
  2872. {
  2873. if (Key == '[') {
  2874. ReForm->SelAttributes->Style = ReForm->SelAttributes->Style << fsUnderline;
  2875. }
  2876. //else
  2877. //if (Key == ' ') {
  2878. // ReForm->SelAttributes->Style = TFontStyles() >> fsUnderline;
  2879. //}
  2880. }
  2881. //---------------------------------------------------------------------------
  2882. void __fastcall TFrmVmsMsgFormMngr::ReFormKeyUp(TObject *Sender, WORD &Key, TShiftState Shift)
  2883. {
  2884. //VK_RETURN
  2885. if (Key == ']' || Key == 221) {
  2886. ReForm->SelAttributes->Style = TFontStyles() >> fsUnderline;
  2887. }
  2888. }
  2889. //---------------------------------------------------------------------------
  2890. void __fastcall TFrmVmsMsgFormMngr::BtnTrafFillInClick(TObject *Sender)
  2891. {
  2892. // 소통정보 이미지 Fill In 구간 설정
  2893. }
  2894. //---------------------------------------------------------------------------