VMSM500MF.cpp 113 KB

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