FrmVmsMsgUserDispF.cpp 103 KB

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