FrmCctvImgF.cpp 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  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->FData1 = 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->Open();
  81. bImage = true;
  82. }
  83. catch(EDatabaseError &E)
  84. {
  85. PnlBack->Caption = lblErr1->Caption;//"정지영상 정보 읽기 실패";
  86. ShowMessage(String(E.ClassName()) + E.Message);
  87. return false;
  88. }
  89. if (pADO->RecordCount == 0)
  90. {
  91. pADO->Close();
  92. PnlBack->Caption = lblErr2->Caption;//"정지영상 정보가 없습니다";
  93. return false;
  94. }
  95. ForceDirectories(g_sTempDir);
  96. TADOBlobStream *BS;
  97. int nFileSize = 0;
  98. String sImgFile = g_sTempDir + "CCTV_" + FObj->CCTV_CTLR_ID + ".jpg";
  99. try {
  100. DeleteFile(sImgFile);
  101. } catch(...) {}
  102. try
  103. {
  104. BS = (TADOBlobStream *)pADO->CreateBlobStream(pADO->FieldByName("IMG"), bmRead);
  105. BS->SaveToFile(sImgFile);
  106. nFileSize = BS->Size;
  107. pADO->Close();
  108. }
  109. catch(Exception &e)
  110. {
  111. delete BS;
  112. PnlBack->Caption = lblErr3->Caption;//"정지영상 스트림 로딩 실패";
  113. return false;
  114. }
  115. delete BS;
  116. if (nFileSize)
  117. {
  118. try
  119. {
  120. ImgStop->Picture->LoadFromFile(sImgFile);
  121. return true;
  122. }
  123. catch(...)
  124. {
  125. PnlBack->Caption = lblErr4->Caption;//"정지영상 파일 로딩 실패";
  126. return false;
  127. }
  128. }
  129. else
  130. {
  131. PnlBack->Caption = lblErr5->Caption;//"정지영상 이미지 사이즈 오류";
  132. }
  133. return false;
  134. }
  135. //---------------------------------------------------------------------------
  136. void __fastcall TFrmCctvImg::TmrShowTimer(TObject *Sender)
  137. {
  138. TmrShow->Enabled = false;
  139. if (FObj)
  140. {
  141. Caption = lblErr6->Caption/*"정지영상*/ + ": " + FObj->CCTV_CTLR_ID + ": " + FObj->ISTL_LCTN_NM;
  142. LoadStopImage();
  143. }
  144. }
  145. //---------------------------------------------------------------------------