FrmCctvImgF.cpp 4.3 KB

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