FrmResourceF.cpp 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783
  1. //---------------------------------------------------------------------------
  2. #include <vcl.h>
  3. #include "ITSDbF.h"
  4. #include "ITSLangTransF.h"
  5. #include "CDSFontF.h"
  6. #include "AppGlobalF.h"
  7. #pragma hdrstop
  8. #include "FrmResourceF.h"
  9. //---------------------------------------------------------------------------
  10. #pragma package(smart_init)
  11. #pragma link "cxContainer"
  12. #pragma link "cxControls"
  13. #pragma link "cxEdit"
  14. #pragma link "cxGraphics"
  15. #pragma link "cxLabel"
  16. #pragma link "cxLookAndFeelPainters"
  17. #pragma link "cxLookAndFeels"
  18. #pragma link "dxSkinBlack"
  19. #pragma link "dxSkinBlue"
  20. #pragma link "dxSkinsCore"
  21. #pragma link "cxButtons"
  22. #pragma link "dxSkinCaramel"
  23. #pragma link "dxSkinCoffee"
  24. #pragma link "dxSkinDarkRoom"
  25. #pragma link "dxSkinDarkSide"
  26. #pragma link "dxSkinFoggy"
  27. #pragma link "dxSkinGlassOceans"
  28. #pragma link "dxSkiniMaginary"
  29. #pragma link "dxSkinLilian"
  30. #pragma link "dxSkinLiquidSky"
  31. #pragma link "dxSkinLondonLiquidSky"
  32. #pragma link "dxSkinMcSkin"
  33. #pragma link "dxSkinMoneyTwins"
  34. #pragma link "dxSkinOffice2007Black"
  35. #pragma link "dxSkinOffice2007Blue"
  36. #pragma link "dxSkinOffice2007Green"
  37. #pragma link "dxSkinOffice2007Pink"
  38. #pragma link "dxSkinOffice2007Silver"
  39. #pragma link "dxSkinOffice2010Black"
  40. #pragma link "dxSkinOffice2010Blue"
  41. #pragma link "dxSkinOffice2010Silver"
  42. #pragma link "dxSkinSeven"
  43. #pragma link "dxSkinSharp"
  44. #pragma link "dxSkinSilver"
  45. #pragma link "dxSkinStardust"
  46. #pragma link "VmsDesignerF"
  47. #pragma resource "*.dfm"
  48. TFrmLang *FrmLang;
  49. //---------------------------------------------------------------------------
  50. __fastcall TFrmLang::TFrmLang(TComponent* Owner)
  51. : TForm(Owner)
  52. {
  53. LangTrans->Translate(this, ITSDb_GetConnection());
  54. FFontInit = false;
  55. //Show();
  56. }
  57. //---------------------------------------------------------------------------
  58. void TFrmLang::ITSSkin_ButtonClick(TcxButton *ASearch, TcxButton *AEdit, TcxButton *AAdd, TcxButton *ADel, TcxButton *AApply)
  59. {
  60. if (!AEdit) return;
  61. if (AEdit->Down)
  62. {
  63. // 편집모드 시작
  64. AEdit->Glyph->Assign(BtnEdit2->Glyph);
  65. AEdit->Hint = lblEditHint1->Caption;//"데이터 편집 종료/취소";
  66. if (ASearch) ASearch->Enabled = false;
  67. if (AAdd) AAdd->Enabled = true;
  68. if (ADel) ADel->Enabled = true;
  69. if (AApply) AApply->Enabled = true;
  70. }
  71. else
  72. {
  73. // 편집모드 종료
  74. AEdit->Glyph->Assign(BtnEdit1->Glyph);
  75. AEdit->Hint = lblEditHint2->Caption;//"데이터 편집";
  76. if (ASearch) ASearch->Enabled = true;
  77. if (AAdd) AAdd->Enabled = false;
  78. if (ADel) ADel->Enabled = false;
  79. if (AApply) AApply->Enabled = false;
  80. }
  81. }
  82. //---------------------------------------------------------------------------
  83. void __fastcall TFrmLang::FormClose(TObject *Sender, TCloseAction &Action)
  84. {
  85. try
  86. {
  87. if (m_pEdtDesigner)
  88. {
  89. delete m_pEdtDesigner;
  90. m_pEdtDesigner = NULL;
  91. }
  92. }
  93. catch(...)
  94. {
  95. }
  96. }
  97. //---------------------------------------------------------------------------
  98. void __fastcall TFrmLang::FormCreate(TObject *Sender)
  99. {
  100. m_pEdtDesigner = new TVmsFormDesigner(PnlEditForm);
  101. m_pEdtDesigner->ApplicationHandle = (long)Handle;
  102. }
  103. //---------------------------------------------------------------------------
  104. int __fastcall TFrmLang::CheckImageUseCount(String ASYMB_LIB_NMBR)
  105. {
  106. String sQry;
  107. TADOQuery *pADO = NULL;
  108. int nResult = 0;
  109. sQry = "SELECT COUNT(1) AS CNT \r\n"
  110. " FROM TB_VMS_FORM_OBJECT \r\n"
  111. " WHERE SYMB_LIB_NMBR = :p01 \r\n";
  112. try
  113. {
  114. try
  115. {
  116. pADO = new TADOQuery(NULL);
  117. pADO->Close();
  118. pADO->Connection = ITSDb_GetConnection();
  119. ITSDb_SQLText(pADO, sQry);
  120. ITSDb_SQLBind(pADO, "p01", ASYMB_LIB_NMBR);
  121. ITSDb_SQLOpen(pADO);
  122. nResult = pADO->FieldByName("CNT")->AsInteger;
  123. }
  124. catch(EDatabaseError &E)
  125. {
  126. DBERRORMSG("CheckImageUseCount", String(E.ClassName()), E.Message, sQry);
  127. throw Exception(String(E.ClassName()) + E.Message);
  128. }
  129. catch(Exception &e)
  130. {
  131. DBERRORMSG("CheckImageUseCount", String(e.ClassName()), e.Message, sQry);
  132. throw Exception(String(e.ClassName()) + e.Message);
  133. }
  134. }
  135. __finally
  136. {
  137. if (pADO)
  138. {
  139. pADO->Close();
  140. delete pADO;
  141. }
  142. }
  143. return nResult;
  144. }
  145. //---------------------------------------------------------------------------
  146. bool __fastcall TFrmLang::DelVmsImage(String ASYMB_LIB_NMBR, bool ADelIfsc)
  147. {
  148. String sQry;
  149. TADOQuery *pADO = NULL;
  150. try
  151. {
  152. try
  153. {
  154. pADO = new TADOQuery(NULL);
  155. pADO->Close();
  156. pADO->Connection = ITSDb_GetConnection();
  157. if (ADelIfsc)
  158. {
  159. sQry = "DELETE TB_VMS_SYMB_IFSC \r\n"
  160. " WHERE SYMB_LIB_NMBR = :p01 \r\n";
  161. ITSDb_SQLText(pADO, sQry);
  162. ITSDb_SQLBind(pADO, "p01", ASYMB_LIB_NMBR);
  163. pADO->ExecSQL();
  164. }
  165. #if 0
  166. sQry = "DELETE TB_VMS_SYMB_LIB \r\n"
  167. " WHERE SYMB_LIB_NMBR = :p01 \r\n";
  168. #else
  169. sQry = "UPDATE TB_VMS_SYMB_LIB \r\n"
  170. " SET DEL_YN = 'Y', \r\n"
  171. " UPDT_DT = TO_CHAR(SYSDATE, 'YYYYMMDDHH24MISS') \r\n"
  172. " WHERE SYMB_LIB_NMBR = :p01 \r\n";
  173. #endif
  174. ITSDb_SQLText(pADO, sQry);
  175. ITSDb_SQLBind(pADO, "p01", ASYMB_LIB_NMBR);
  176. pADO->ExecSQL();
  177. return true;
  178. }
  179. catch(EDatabaseError &E)
  180. {
  181. DBERRORMSG("DelVmsImage", String(E.ClassName()), E.Message, sQry);
  182. throw Exception(String(E.ClassName()) + E.Message);
  183. }
  184. catch(Exception &e)
  185. {
  186. DBERRORMSG("DelVmsImage", String(e.ClassName()), e.Message, sQry);
  187. throw Exception(String(e.ClassName()) + e.Message);
  188. }
  189. }
  190. __finally
  191. {
  192. if (pADO)
  193. {
  194. pADO->Close();
  195. delete pADO;
  196. }
  197. }
  198. return true;
  199. }
  200. //---------------------------------------------------------------------------
  201. bool __fastcall TFrmLang::GetNextVmsImgeId(int &ANmbr, int AFromId, int AToId)
  202. {
  203. String sQry;
  204. TADOQuery *pADO = NULL;
  205. sQry = "SELECT NVL(MAX(SYMB_LIB_NMBR), :p01)+1 AS NEWID FROM TB_VMS_SYMB_LIB WHERE SYMB_LIB_NMBR BETWEEN :p02 AND :p03 \r\n";
  206. try
  207. {
  208. try
  209. {
  210. pADO = new TADOQuery(NULL);
  211. pADO->Close();
  212. pADO->Connection = ITSDb_GetConnection();
  213. ITSDb_SQLText(pADO, sQry);
  214. ITSDb_SQLBind(pADO, "p01", AFromId-1);
  215. ITSDb_SQLBind(pADO, "p02", AFromId);
  216. ITSDb_SQLBind(pADO, "p03", AToId);
  217. ITSDb_SQLOpen(pADO);
  218. pADO->Open();
  219. ANmbr = pADO->FieldByName("NEWID")->AsInteger;
  220. return true;
  221. }
  222. catch(EDatabaseError &E)
  223. {
  224. DBERRORMSG("GetNextVmsImgeId", String(E.ClassName()), E.Message, sQry);
  225. throw Exception(String(E.ClassName()) + E.Message);
  226. }
  227. catch(Exception &e)
  228. {
  229. DBERRORMSG("GetNextVmsImgeId", String(e.ClassName()), e.Message, sQry);
  230. throw Exception(String(e.ClassName()) + e.Message);
  231. }
  232. }
  233. __finally
  234. {
  235. if (pADO)
  236. {
  237. pADO->Close();
  238. delete pADO;
  239. }
  240. }
  241. return false;
  242. }
  243. //---------------------------------------------------------------------------
  244. bool __fastcall TFrmLang::UpdateVmsImage(String ASYMB_LIB_NMBR, String ASYMB_EXPL, TImage *AImage, String ASYMB_TYPE)
  245. {
  246. bool bResult = false;
  247. String sQry;
  248. TADOQuery *pADO = NULL;
  249. sQry = "UPDATE TB_VMS_SYMB_LIB \r\n"
  250. " SET RGST_DT = TO_CHAR(SYSDATE, 'YYYYMMDDHH24MISS'), \r\n"
  251. " SYMB_EXPL = :p02, \r\n";
  252. if (AImage != NULL)
  253. {
  254. sQry+= " IMAG_DATA = :p03, \r\n";
  255. }
  256. if (ASYMB_TYPE != "")
  257. {
  258. sQry+= " SYMB_TYPE = :p04, \r\n";
  259. }
  260. sQry+= " UPDT_DT = TO_CHAR(SYSDATE, 'YYYYMMDDHH24MISS') \r\n"
  261. " WHERE SYMB_LIB_NMBR = :p01 \r\n";
  262. TMemoryStream *dataStream = NULL;
  263. if (AImage != NULL)
  264. {
  265. dataStream = new TMemoryStream();
  266. AImage->Picture->Bitmap->SaveToStream(dataStream);
  267. }
  268. try
  269. {
  270. try
  271. {
  272. pADO = new TADOQuery(NULL);
  273. pADO->Close();
  274. pADO->Connection = ITSDb_GetConnection();
  275. ITSDb_SQLText(pADO, sQry);
  276. ITSDb_SQLBind(pADO, "p01", ASYMB_LIB_NMBR);
  277. ITSDb_SQLBind(pADO, "p02", ASYMB_EXPL);
  278. if (AImage != NULL)
  279. {
  280. pADO->Parameters->ParamByName("p03")->LoadFromStream(dataStream, ftBlob);
  281. }
  282. if (ASYMB_TYPE != "")
  283. {
  284. ITSDb_SQLBind(pADO, "p04", ASYMB_TYPE);
  285. }
  286. pADO->ExecSQL();
  287. bResult = true;
  288. }
  289. catch(EDatabaseError &E)
  290. {
  291. DBERRORMSG("UpdateVmsImage", String(E.ClassName()), E.Message, sQry);
  292. throw Exception(String(E.ClassName()) + E.Message);
  293. }
  294. catch(Exception &e)
  295. {
  296. DBERRORMSG("UpdateVmsImage", String(e.ClassName()), e.Message, sQry);
  297. throw Exception(String(e.ClassName()) + e.Message);
  298. }
  299. }
  300. __finally
  301. {
  302. if (pADO)
  303. {
  304. pADO->Close();
  305. delete pADO;
  306. }
  307. if (dataStream) delete dataStream;
  308. dataStream = NULL;
  309. }
  310. return bResult;
  311. }
  312. //---------------------------------------------------------------------------
  313. void __fastcall TFrmLang::UpdateVmsFormImage(String ASYMB_LIB_NMBR, String AOldWidth, String AOldHeight, String ANewWidth, String ANewHeight)
  314. {
  315. String sQry;
  316. TADOQuery *pADO = NULL;
  317. sQry = "SELECT VMS_FORM_ID \r\n"
  318. " FROM TB_VMS_FORM_OBJECT \r\n"
  319. " WHERE SYMB_LIB_NMBR = :p01 \r\n"
  320. " GROUP BY VMS_FORM_ID \r\n";
  321. LstVmsFormId->Items->Clear();
  322. try
  323. {
  324. try
  325. {
  326. pADO = new TADOQuery(NULL);
  327. pADO->Close();
  328. pADO->Connection = ITSDb_GetConnection();
  329. ITSDb_SQLText(pADO, sQry);
  330. ITSDb_SQLBind(pADO, "p01", ASYMB_LIB_NMBR);
  331. ITSDb_SQLOpen(pADO);
  332. for( ; !pADO->Eof; pADO->Next())
  333. {
  334. String VMS_FORM_ID = pADO->FieldByName("VMS_FORM_ID")->AsString;
  335. LstVmsFormId->Items->Add(VMS_FORM_ID);
  336. }
  337. }
  338. catch(EDatabaseError &E)
  339. {
  340. DBERRORMSG("UpdateVmsFormImage", String(E.ClassName()), E.Message, sQry);
  341. throw Exception(String(E.ClassName()) + E.Message);
  342. }
  343. catch(Exception &e)
  344. {
  345. DBERRORMSG("UpdateVmsFormImage", String(e.ClassName()), e.Message, sQry);
  346. throw Exception(String(e.ClassName()) + e.Message);
  347. }
  348. }
  349. __finally
  350. {
  351. if (pADO)
  352. {
  353. pADO->Close();
  354. delete pADO;
  355. }
  356. }
  357. if (LstVmsFormId->Items->Count == 0) return;
  358. //폼객체 이미지 크기 조정
  359. UpdateVmsFormImageType(ASYMB_LIB_NMBR, AOldWidth, AOldHeight, ANewWidth, ANewHeight);
  360. //폼이미지 BLOB 업데이트
  361. for (int ii = 0; ii < LstVmsFormId->Items->Count; ii++)
  362. {
  363. UpdateVmsFormImageBlob(LstVmsFormId->Items->Strings[ii]);
  364. }
  365. }
  366. //---------------------------------------------------------------------------
  367. void __fastcall TFrmLang::UpdateVmsFormImageType(String ASYMB_LIB_NMBR, String AOldWidth, String AOldHeight, String ANewWidth, String ANewHeight)
  368. {
  369. if (AOldWidth == ANewWidth && AOldHeight == ANewHeight) return;
  370. String sQry;
  371. TADOQuery *pADO = NULL;
  372. #if 0
  373. UPDATE TB_VMS_FORM_OBJECT
  374. SET VMS_DSPL_WIDTH = 320,
  375. VMS_DSPL_HEIGHT = 64
  376. WHERE (VMS_FORM_OBJECT_ID, VMS_FORM_ID)
  377. IN (SELECT VMS_FORM_OBJECT_ID, VMS_FORM_ID
  378. FROM TB_VMS_FORM_OBJECT
  379. WHERE SYMB_LIB_NMBR = 6014
  380. AND (VMS_DSPL_WIDTH <> 320 OR VMS_DSPL_HEIGHT <> 64) )
  381. #endif
  382. //기존에 이미지크기를 그래도 사용하는 폼객체인 경우에만 변경된 크기로 업데이트 해준다.
  383. //이미지 크기가 다르다는 것은 사용자가 이미지를 폼편집에서 수정한 것이라 사용자가 직접
  384. //수정하여야 한다.
  385. sQry = "UPDATE TB_VMS_FORM_OBJECT \r\n"
  386. " SET VMS_DSPL_WIDTH = :p04, \r\n"
  387. " VMS_DSPL_HEIGHT = :p05 \r\n"
  388. " WHERE (VMS_FORM_OBJECT_ID, VMS_FORM_ID) \r\n"
  389. " IN (SELECT VMS_FORM_OBJECT_ID, VMS_FORM_ID \r\n"
  390. " FROM TB_VMS_FORM_OBJECT \r\n"
  391. " WHERE SYMB_LIB_NMBR = :p01 \r\n"
  392. " AND VMS_DSPL_WIDTH = :p02 \r\n"
  393. " AND VMS_DSPL_HEIGHT = :p03) \r\n";
  394. try
  395. {
  396. try
  397. {
  398. pADO = new TADOQuery(NULL);
  399. pADO->Close();
  400. pADO->Connection = ITSDb_GetConnection();
  401. ITSDb_SQLText(pADO, sQry);
  402. ITSDb_SQLBind(pADO, "p01", ASYMB_LIB_NMBR);
  403. ITSDb_SQLBind(pADO, "p02", AOldWidth);
  404. ITSDb_SQLBind(pADO, "p03", AOldHeight);
  405. ITSDb_SQLBind(pADO, "p04", ANewWidth);
  406. ITSDb_SQLBind(pADO, "p05", ANewHeight);
  407. ITSDb_SQLExec(pADO);
  408. }
  409. catch(EDatabaseError &E)
  410. {
  411. DBERRORMSG("UpdateVmsFormImageType", String(E.ClassName()), E.Message, sQry);
  412. throw Exception(String(E.ClassName()) + E.Message);
  413. }
  414. catch(Exception &e)
  415. {
  416. DBERRORMSG("UpdateVmsFormImageType", String(e.ClassName()), e.Message, sQry);
  417. throw Exception(String(e.ClassName()) + e.Message);
  418. }
  419. }
  420. __finally
  421. {
  422. if (pADO)
  423. {
  424. pADO->Close();
  425. delete pADO;
  426. }
  427. }
  428. }
  429. //---------------------------------------------------------------------------
  430. void __fastcall TFrmLang::UpdateVmsFormImageBlob(String AVMS_FORM_ID)
  431. {
  432. if (GetVmsFormImage(ImgForm, AVMS_FORM_ID) == false)
  433. {
  434. return;
  435. }
  436. String sQry;
  437. TADOQuery *pADO = NULL;
  438. sQry = "UPDATE TB_VMS_FORM \r\n"
  439. " SET VMS_FORM_IMAG = :p02 \r\n"
  440. " WHERE VMS_FORM_ID = :p01 \r\n";
  441. TMemoryStream *dataStream = new TMemoryStream();
  442. ImgForm->Picture->Bitmap->SaveToStream(dataStream);
  443. try
  444. {
  445. try
  446. {
  447. pADO = new TADOQuery(NULL);
  448. pADO->Close();
  449. pADO->Connection = ITSDb_GetConnection();
  450. ITSDb_SQLText(pADO, sQry);
  451. ITSDb_SQLBind(pADO, "p01", AVMS_FORM_ID);
  452. pADO->Parameters->ParamByName("p02")->LoadFromStream(dataStream, ftBlob);
  453. pADO->ExecSQL();
  454. }
  455. catch(EDatabaseError &E)
  456. {
  457. DBERRORMSG("UpdateVmsFormImageBlob", String(E.ClassName()), E.Message, sQry);
  458. throw Exception(String(E.ClassName()) + E.Message);
  459. }
  460. catch(Exception &e)
  461. {
  462. DBERRORMSG("UpdateVmsFormImageBlob", String(e.ClassName()), e.Message, sQry);
  463. throw Exception(String(e.ClassName()) + e.Message);
  464. }
  465. }
  466. __finally
  467. {
  468. if (pADO)
  469. {
  470. pADO->Close();
  471. delete pADO;
  472. }
  473. if (dataStream) delete dataStream;
  474. dataStream = NULL;
  475. }
  476. }
  477. //---------------------------------------------------------------------------
  478. bool __fastcall TFrmLang::GetVmsFormImage(TImage *AImage, String AVMS_FORM_ID)
  479. {
  480. if (FFontInit == false)
  481. {
  482. FOR_STL(TCDSFontColor*, pObj, CDSFontManager->FColors)
  483. {
  484. m_pEdtDesigner->InitFontColor(pObj->VMS_FONT_COLR_CD, (TColor)pObj->VMS_FONT_COLR_VAL);
  485. }
  486. FFontInit = true;
  487. }
  488. m_pEdtDesigner->Clear();
  489. m_pEdtDesigner->EditMode = false;
  490. m_pEdtDesigner->Hide();
  491. String sQry;
  492. TADOQuery *pADO = NULL;
  493. AImage->Picture->Bitmap->FreeImage();
  494. AImage->Picture->Bitmap = NULL;
  495. sQry = "SELECT A.VMS_TYPE_CD, A.VMS_FORM_COLR_CD, \r\n"
  496. " B.VMS_WDTH, B.VMS_HGHT, \r\n"
  497. " C.*, \r\n"
  498. " E.VMS_FONT_NAME_NM, \r\n"
  499. " D.IMAG_DATA AS SYMB_IMG, \r\n"
  500. " D.SYMB_EXPL AS SYMB_IMG_NM \r\n"
  501. " FROM TB_VMS_FORM A, \r\n"
  502. " TB_VMS_TYPE B, \r\n"
  503. " TB_VMS_FORM_OBJECT C, \r\n"
  504. " TB_VMS_SYMB_LIB D, \r\n"
  505. " TB_VMS_FONT_NAME E \r\n"
  506. " WHERE A.VMS_FORM_ID = :p01 \r\n"
  507. " AND A.VMS_TYPE_CD = B.VMS_TYPE_CD \r\n"
  508. " AND A.VMS_FORM_ID = C.VMS_FORM_ID \r\n"
  509. " AND C.SYMB_LIB_NMBR = D.SYMB_LIB_NMBR(+) \r\n"
  510. " AND C.VMS_FONT_NAME_CD = E.VMS_FONT_NAME_CD(+) \r\n"
  511. " ORDER BY C.VMS_FORM_OBJECT_ID ASC \r\n";
  512. int nRows = 0;
  513. try
  514. {
  515. try
  516. {
  517. pADO = new TADOQuery(NULL);
  518. pADO->Close();
  519. pADO->Connection = ITSDb_GetConnection();
  520. ITSDb_SQLText(pADO, sQry);
  521. ITSDb_SQLBind(pADO, "p01", AVMS_FORM_ID);
  522. ITSDb_SQLOpen(pADO);
  523. int nDrawType;
  524. String sObjKind;
  525. for( ; !pADO->Eof; pADO->Next())
  526. {
  527. if (nRows == 0)
  528. {
  529. m_pEdtDesigner->SizeType = pADO->FieldByName("VMS_TYPE_CD")->AsString;
  530. m_pEdtDesigner->BkColorCode = pADO->FieldByName("VMS_TYPE_CD")->AsString;
  531. int nW = pADO->FieldByName("VMS_WDTH")->AsInteger;
  532. int nH = pADO->FieldByName("VMS_HGHT")->AsInteger;
  533. m_pEdtDesigner->SetSize(nW, nH);
  534. m_pEdtDesigner->SetPos(0, 0);
  535. AImage->Width = nW;
  536. AImage->Height = nH;
  537. AImage->Picture->Bitmap->Width = nW;
  538. AImage->Picture->Bitmap->Height = nH;
  539. }
  540. nRows++;
  541. int nObjId = pADO->FieldByName("VMS_FORM_OBJECT_ID")->AsInteger;
  542. int nObjType = pADO->FieldByName("VMS_FORM_OBJECT_TYPE_CD")->AsInteger;
  543. if (nObjType == 1 || //이미지 심볼
  544. nObjType == 2 || //파일이미지
  545. nObjType == 3 || //소통정보이미지
  546. nObjType == 17 || //소통이미지1
  547. nObjType == 27 || //소통이미지2
  548. nObjType == 37 || //소통이미지3
  549. nObjType == 47 || //소통이미지4
  550. nObjType == 200 || //동영상
  551. nObjType == 300 || //스트리밍영상
  552. nObjType == 406 || //@통합대기등급 이미지
  553. nObjType == 407 || //@미세먼지등급 이미지
  554. nObjType == 408 || //@초미세먼지등급 이미지
  555. nObjType == 413 //@오존등급이미지
  556. )
  557. {
  558. if (nObjType == 3) sObjKind = OBJKIND_IMAGE;
  559. else sObjKind = OBJKIND_IMAGEID;
  560. nDrawType = 1; //이미지그리기
  561. }
  562. else
  563. {
  564. sObjKind = OBJKIND_TEXT; //문자열
  565. nDrawType = 0; //문자열그리기
  566. }
  567. int nBlinking = pADO->FieldByName("VMS_DSPL_BLINKING")->AsInteger;
  568. int nPosX = pADO->FieldByName("VMS_DSPL_XCRDN")->AsInteger;
  569. int nPosY = pADO->FieldByName("VMS_DSPL_YCRDN")->AsInteger;
  570. int nWidth = pADO->FieldByName("VMS_DSPL_WIDTH")->AsInteger;
  571. int nHeight = pADO->FieldByName("VMS_DSPL_HEIGHT")->AsInteger;
  572. TVmsFormObject *pObj = m_pEdtDesigner->AddObject((VmsObjectDrawType)nDrawType);
  573. if (!pObj) continue;
  574. if (nObjType == 200 || nObjType == 300)
  575. {
  576. pObj->EditMode = false;
  577. }
  578. String sIfscId = pADO->FieldByName("VMS_IFSC_ID")->AsString;
  579. String sFillCd = pADO->FieldByName("TRFC_FILL_CD")->AsString;
  580. pObj->ObjSeq = nObjId;
  581. pObj->ObjId = nObjId;
  582. pObj->ObjKind = sObjKind;
  583. pObj->ObjType = pADO->FieldByName("VMS_FORM_OBJECT_TYPE_CD")->AsString;
  584. pObj->ObjSize = pADO->FieldByName("VMS_DSPL_SIZE")->AsInteger;
  585. pObj->BkColorCode = pADO->FieldByName("VMS_DSPL_BKCOLOR")->AsString;
  586. pObj->Blink = nBlinking == 1 ? true : false;
  587. pObj->ImageId = pADO->FieldByName("SYMB_LIB_NMBR")->AsString;
  588. pObj->Text = pADO->FieldByName("VMS_DSPL_TXT")->AsString;
  589. pObj->RunText = pObj->Text;
  590. pObj->SetPos(nPosX, nPosY);
  591. if (pObj->ObjKind == OBJKIND_TEXT) // 문자열
  592. {
  593. int nFontBold = pADO->FieldByName("VMS_FONT_BOLD")->AsInteger;
  594. pObj->FontName = pADO->FieldByName("VMS_FONT_NAME_NM")->AsString;
  595. pObj->FontNameCode = pADO->FieldByName("VMS_FONT_NAME_CD")->AsString;
  596. pObj->FontColorCode = pADO->FieldByName("VMS_FONT_COLR_CD")->AsString;
  597. pObj->FontSize = pADO->FieldByName("VMS_FONT_SIZE")->AsInteger;
  598. pObj->FontBold = nFontBold == 1 ? true : false;
  599. pObj->TextAlign = pADO->FieldByName("VMS_FONT_ALIGN")->AsInteger;
  600. //pObj->SetPos(nPosX, nPosY);
  601. //pObj->SetSize(pADO->FieldByName("VMS_DSPL_WIDTH")->AsInteger, pADO->FieldByName("VMS_DSPL_HEIGHT")->AsInteger);
  602. }
  603. else //if (sObjKind == "1" || sObjKind == "2") // 이미지(1), 이미지 ID(2)
  604. {
  605. if (pObj->ObjKind == OBJKIND_IMAGEID)
  606. {
  607. if (pObj->Text.Trim() == "")
  608. {
  609. pObj->Text = pObj->ImageId;
  610. }
  611. }
  612. TStream *pStream = NULL;
  613. pStream = pADO->CreateBlobStream(pADO->FieldByName("VMS_DSPL_FIGR"), bmRead);
  614. try
  615. {
  616. if (pStream && pStream->Size > 0)
  617. {
  618. Graphics::TBitmap *Bitmap = pObj->GetBitmap();
  619. pStream->Position = 0;
  620. Bitmap->LoadFromStream(pStream);
  621. #ifdef IMAGE_RESIZE
  622. #if 0
  623. if (nObjType == 1 || nObjType == 2)
  624. {
  625. pObj->GetImage()->AutoSize= false;
  626. pObj->GetImage()->Stretch = true;
  627. pObj->GetImage()->Width = nWidth;
  628. pObj->GetImage()->Height = nHeight;
  629. pObj->SetSize(nWidth, nHeight);
  630. pObj->SetPos(nPosX, nPosY);
  631. }
  632. else
  633. {
  634. pObj->SetSize(Bitmap->Width, Bitmap->Height);
  635. }
  636. #else
  637. switch(nObjType)
  638. {
  639. case 1: //심볼
  640. case 2: //이미지
  641. case 3: //소통정보배경이미지
  642. case 17: //소통정보이미지1
  643. case 27: //소통정보이미지2
  644. case 37: //소통정보이미지3
  645. case 47: //소통정보이미지4
  646. case 167: //@우회소통정보이미지
  647. case 200: //동영상이미지
  648. case 300: //스트리밍영상이미지
  649. case 406: //@통합대기등급 이미지
  650. case 407: //@미세먼지등급 이미지
  651. case 408: //@초미세먼지등급 이미지
  652. case 413: //@오존등급이미지
  653. pObj->GetImage()->AutoSize= false;
  654. pObj->GetImage()->Stretch = true;
  655. pObj->GetImage()->Width = nWidth;
  656. pObj->GetImage()->Height = nHeight;
  657. pObj->SetSize(nWidth, nHeight);
  658. pObj->SetPos(nPosX, nPosY);
  659. break;
  660. default:
  661. pObj->SetSize(Bitmap->Width, Bitmap->Height);
  662. pObj->SetPos(nPosX, nPosY); //TODO
  663. break;
  664. }
  665. #endif
  666. #else
  667. pObj->SetSize(Bitmap->Width, Bitmap->Height);
  668. pObj->SetPos(nPosX, nPosY);
  669. #endif
  670. }
  671. }
  672. __finally
  673. {
  674. SAFE_DELETE(pStream);
  675. }
  676. }
  677. //pObj->SetPos(nPosX, nPosY);
  678. //if (pObj->Left < 0) pObj->Left = 0;
  679. //if (pObj->Top < 0) pObj->Top = 0;
  680. pObj->Show();
  681. pObj->BringToFront();
  682. }
  683. }
  684. catch(EDatabaseError &E)
  685. {
  686. DBERRORMSG("UpdateVmsFormImageBlob", String(E.ClassName()), E.Message, sQry);
  687. return false;
  688. //throw Exception(String(E.ClassName()) + E.Message);
  689. }
  690. catch(Exception &e)
  691. {
  692. DBERRORMSG("UpdateVmsFormImageBlob", String(e.ClassName()), e.Message, sQry);
  693. return false;
  694. //throw Exception(String(e.ClassName()) + e.Message);
  695. }
  696. }
  697. __finally
  698. {
  699. if (pADO)
  700. {
  701. pADO->Close();
  702. delete pADO;
  703. }
  704. }
  705. m_pEdtDesigner->GetVmsFormImage(AImage);
  706. return nRows > 0 ? true : false;
  707. }
  708. //---------------------------------------------------------------------------