FrmCctvImgF.cpp 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165
  1. //---------------------------------------------------------------------------
  2. #include <vcl.h>
  3. #include "ITSDbF.h"
  4. #include "ITSUtilF.h"
  5. #include "AppGlobalF.h"
  6. #include "ITSLangTransF.h"
  7. #pragma hdrstop
  8. #include "FrmCctvImgF.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 "dxSkinMcSkin"
  22. #pragma resource "*.dfm"
  23. TFrmCctvImg *FrmCctvImg;
  24. //---------------------------------------------------------------------------
  25. __fastcall TFrmCctvImg::TFrmCctvImg(TComponent* Owner)
  26. : TForm(Owner)
  27. {
  28. LangTrans->Translate(this, ITSDb_GetConnection());
  29. }
  30. //---------------------------------------------------------------------------
  31. void __fastcall TFrmCctvImg::FormClose(TObject *Sender, TCloseAction &Action)
  32. {
  33. try {
  34. FObj->FData2 = NULL;
  35. } catch(...) {}
  36. Action = caFree;
  37. }
  38. //---------------------------------------------------------------------------
  39. void __fastcall TFrmCctvImg::FormShow(TObject *Sender)
  40. {
  41. TmrShow->Enabled = true;
  42. }
  43. //---------------------------------------------------------------------------
  44. void __fastcall TFrmCctvImg::LoadStopImage()
  45. {
  46. PnlBack->Caption = "";
  47. if (LoadDbImage())
  48. {
  49. ImgStop->Visible = true;
  50. }
  51. else
  52. {
  53. ImgStop->Visible = false;
  54. }
  55. }
  56. //---------------------------------------------------------------------------
  57. bool __fastcall TFrmCctvImg::LoadDbImage()
  58. {
  59. bool bImage = false;
  60. String sQry;
  61. if (!FObj)
  62. {
  63. return false;
  64. }
  65. sQry = "SELECT A.CCTVID, A.COLLDT, A.IMG \r\n"
  66. " FROM CCTVIMG_BLOB A, \r\n"
  67. " (SELECT CCTVID, \r\n"
  68. " MAX(COLLDT) AS COLLDT \r\n"
  69. " FROM CCTVIMG_BLOB \r\n"
  70. " WHERE CCTVID = :p01 \r\n"
  71. " GROUP BY CCTVID) B \r\n"
  72. " WHERE A.CCTVID = B.CCTVID \r\n"
  73. " AND A.COLLDT = B.COLLDT \r\n";
  74. try
  75. {
  76. pADO->Close();
  77. pADO->SQL->Clear();
  78. pADO->Connection = ITSDb_GetConnection();
  79. pADO->SQL->Text = sQry;
  80. pADO->Parameters->ParamByName("p01")->Value = FObj->CTLR_ID;
  81. pADO->Prepared = true;
  82. pADO->Open();
  83. bImage = true;
  84. }
  85. catch(EDatabaseError &E)
  86. {
  87. PnlBack->Caption = lblErr1->Caption;//"정지영상 정보 읽기 실패";
  88. ShowMessage(String(E.ClassName()) + E.Message);
  89. return false;
  90. }
  91. if (pADO->RecordCount == 0)
  92. {
  93. pADO->Close();
  94. PnlBack->Caption = lblErr2->Caption;//"정지영상 정보가 없습니다";
  95. return false;
  96. }
  97. ForceDirectories(g_sTempDir);
  98. TADOBlobStream *BS;
  99. int nFileSize = 0;
  100. String sImgFile = g_sTempDir + "CCTV_" + FObj->CTLR_ID + ".jpg";
  101. try {
  102. DeleteFile(sImgFile);
  103. } catch(...) {}
  104. try
  105. {
  106. BS = (TADOBlobStream *)pADO->CreateBlobStream(pADO->FieldByName("IMG"), bmRead);
  107. BS->SaveToFile(sImgFile);
  108. nFileSize = BS->Size;
  109. pADO->Close();
  110. }
  111. catch(Exception &e)
  112. {
  113. delete BS;
  114. PnlBack->Caption = lblErr3->Caption;//"정지영상 스트림 로딩 실패";
  115. return false;
  116. }
  117. delete BS;
  118. if (nFileSize)
  119. {
  120. try
  121. {
  122. ImgStop->Picture->LoadFromFile(sImgFile);
  123. return true;
  124. }
  125. catch(...)
  126. {
  127. PnlBack->Caption = lblErr4->Caption;//"정지영상 파일 로딩 실패";
  128. return false;
  129. }
  130. }
  131. else
  132. {
  133. PnlBack->Caption = lblErr5->Caption;//"정지영상 이미지 사이즈 오류";
  134. }
  135. return false;
  136. }
  137. //---------------------------------------------------------------------------
  138. void __fastcall TFrmCctvImg::TmrShowTimer(TObject *Sender)
  139. {
  140. TmrShow->Enabled = false;
  141. if (FObj)
  142. {
  143. Caption = lblErr6->Caption/*"정지영상*/ + ": " + FObj->CTLR_ID + ": " + FObj->ISTL_LCTN_NM;
  144. LoadStopImage();
  145. }
  146. }
  147. //---------------------------------------------------------------------------