VMSBACKMF.cpp 9.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342
  1. //---------------------------------------------------------------------------
  2. #include <vcl.h>
  3. #include "AppGlobalF.h"
  4. #include "ITSSkinF.h"
  5. #include "ITSUtilF.h"
  6. #pragma hdrstop
  7. #include "VMSBACKMF.h"
  8. //---------------------------------------------------------------------------
  9. #pragma package(smart_init)
  10. #pragma link "cxContainer"
  11. #pragma link "cxControls"
  12. #pragma link "cxDropDownEdit"
  13. #pragma link "cxEdit"
  14. #pragma link "cxGraphics"
  15. #pragma link "cxLookAndFeelPainters"
  16. #pragma link "cxLookAndFeels"
  17. #pragma link "cxMaskEdit"
  18. #pragma link "cxTextEdit"
  19. #pragma link "dxSkinBlack"
  20. #pragma link "dxSkinMcSkin"
  21. #pragma link "dxSkinsCore"
  22. #pragma link "dxSkinBlue"
  23. #pragma link "dxSkinCaramel"
  24. #pragma link "dxSkinCoffee"
  25. #pragma link "dxSkinDarkRoom"
  26. #pragma link "dxSkinDarkSide"
  27. #pragma link "dxSkinFoggy"
  28. #pragma link "dxSkinGlassOceans"
  29. #pragma link "dxSkiniMaginary"
  30. #pragma link "dxSkinLilian"
  31. #pragma link "dxSkinLiquidSky"
  32. #pragma link "dxSkinLondonLiquidSky"
  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 resource "*.dfm"
  47. //TVMSBACKM *VMSBACKM = NULL;
  48. //---------------------------------------------------------------------------
  49. __fastcall TVMSBACKM::TVMSBACKM(TComponent* AOwner, HWND AHandle, String ACaption, int AScreenIdx)
  50. : TForm(AOwner)
  51. {
  52. FListForm = new TList();
  53. FScreenName = ACaption;
  54. FScreenIndex = AScreenIdx;
  55. FPlay = false;
  56. FMinWidth = 1000;
  57. FMinHeight = 1000;
  58. FMaxWidth = 0;
  59. FMaxHeight = 0;
  60. FWndParent = AHandle;
  61. Caption = ACaption;
  62. FDisplayMode = 0;
  63. FViewWidth = 320;
  64. FMonitoringType = enMonitoringPhase;
  65. }
  66. //---------------------------------------------------------------------------
  67. void __fastcall TVMSBACKM::FormCreate(TObject *Sender)
  68. {
  69. ScrollBox->ParentColor = true;
  70. }
  71. //---------------------------------------------------------------------------
  72. void __fastcall TVMSBACKM::FormShow(TObject *Sender)
  73. {
  74. Refresh();
  75. ScrollBox->Align = alClient;
  76. TmrShow->Enabled = true;
  77. }
  78. //---------------------------------------------------------------------------
  79. void __fastcall TVMSBACKM::TmrShowTimer(TObject *Sender)
  80. {
  81. TmrShow->Enabled = false;
  82. }
  83. //---------------------------------------------------------------------------
  84. void __fastcall TVMSBACKM::ScrollBoxClick(TObject *Sender)
  85. {
  86. ScrollBox->SetFocus();
  87. }
  88. //---------------------------------------------------------------------------
  89. void __fastcall TVMSBACKM::ScrollBoxMouseWheel(TObject *Sender, TShiftState Shift, int WheelDelta, TPoint &MousePos, bool &Handled)
  90. {
  91. ScrollBox->VertScrollBar->Position -= WheelDelta;
  92. }
  93. //---------------------------------------------------------------------------
  94. void __fastcall TVMSBACKM::SetPlay(bool APlay)
  95. {
  96. //AnsiString sTrace;
  97. //if (APlay) sTrace = Caption + " TVMSBACKM: SetPlay = Active";
  98. //else sTrace = Caption + " TVMSBACKM: SetPlay = DeActive";
  99. //ITSUtil_Trace(sTrace.c_str());
  100. try
  101. {
  102. for(int ii = 0; ii < FListForm->Count; ii++)
  103. {
  104. if (FMonitoringType == enMonitoringPhase)
  105. {
  106. TVMSFORM0 *pForm = (TVMSFORM0*)FListForm->Items[ii];
  107. pForm->Play = APlay;
  108. }
  109. else
  110. if (FMonitoringType == enMonitoringModule)
  111. {
  112. TVMSMODL0 *pForm = (TVMSMODL0*)FListForm->Items[ii];
  113. pForm->Play = APlay;
  114. }
  115. }
  116. }
  117. catch(Exception &e)
  118. {
  119. }
  120. }
  121. //---------------------------------------------------------------------------
  122. void __fastcall TVMSBACKM::FormResize(TObject *Sender)
  123. {
  124. RecalFormPosition();
  125. }
  126. //---------------------------------------------------------------------------
  127. void __fastcall TVMSBACKM::RecalFormPosition()
  128. {
  129. int h = 0;
  130. for (int ii = 0; ii < FpnlForm->ControlCount; ii++)
  131. {
  132. if (FpnlForm->Controls[ii]->BoundsRect.Bottom > h)
  133. h = FpnlForm->Controls[ii]->BoundsRect.Bottom;
  134. }
  135. FpnlForm->Height = h+50;
  136. ScrollBox->HorzScrollBar->Range = 0;
  137. ScrollBox->VertScrollBar->Range = FpnlForm->Height;
  138. }
  139. //---------------------------------------------------------------------------
  140. void __fastcall TVMSBACKM::RefreshVmsStatus()
  141. {
  142. try
  143. {
  144. for(int ii = 0; ii < FListForm->Count; ii++)
  145. {
  146. if (FMonitoringType == enMonitoringPhase)
  147. {
  148. TVMSFORM0 *pForm = (TVMSFORM0*)FListForm->Items[ii];
  149. pForm->RefreshVmsStatus();
  150. }
  151. else
  152. if (FMonitoringType == enMonitoringModule)
  153. {
  154. TVMSMODL0 *pForm = (TVMSMODL0*)FListForm->Items[ii];
  155. pForm->RefreshVmsStatus();
  156. }
  157. }
  158. }
  159. catch(Exception &e)
  160. {
  161. }
  162. }
  163. //---------------------------------------------------------------------------
  164. void __fastcall TVMSBACKM::RefreshVmsMessage()
  165. {
  166. try
  167. {
  168. for(int ii = 0; ii < FListForm->Count; ii++)
  169. {
  170. if (FMonitoringType == enMonitoringPhase)
  171. {
  172. TVMSFORM0 *pForm = (TVMSFORM0*)FListForm->Items[ii];
  173. pForm->RefreshVmsMessage();
  174. }
  175. else
  176. if (FMonitoringType == enMonitoringModule)
  177. {
  178. TVMSMODL0 *pForm = (TVMSMODL0*)FListForm->Items[ii];
  179. pForm->RefreshVmsMessage();
  180. }
  181. }
  182. }
  183. catch(Exception &e)
  184. {
  185. }
  186. }
  187. //---------------------------------------------------------------------------
  188. bool __fastcall TVMSBACKM::AddVmsForm(String AVmsNmbr)
  189. {
  190. TVmsCtlr *pObj = VmsCtlrManager->FLists.Find(AVmsNmbr);
  191. if (!pObj) return false;
  192. if (pObj->WIDTH > FMaxWidth) FMaxWidth = pObj->WIDTH;
  193. if (pObj->WIDTH < FMinWidth) FMinWidth = pObj->WIDTH;
  194. if (pObj->HEIGHT > FMaxHeight) FMaxHeight = pObj->HEIGHT;
  195. if (pObj->HEIGHT < FMinHeight) FMinHeight = pObj->HEIGHT;
  196. if (FMaxWidth > 512) FMaxWidth = 512;
  197. if (FMinWidth < 288) FMinWidth = 288;
  198. if (FMinHeight < 64) FMinHeight = 64;
  199. if (FMaxHeight > 384) FMaxHeight = 384;
  200. FMinWidth = 384;
  201. if (FMonitoringType == enMonitoringPhase)
  202. {
  203. TVMSFORM0 *pForm = new TVMSFORM0(this, pObj);
  204. //pForm->SetFormSize(pObj->WIDTH);
  205. pForm->SetFormSize(FMinWidth);
  206. pForm->Parent = FpnlForm;
  207. pForm->FScrollBox = ScrollBox;
  208. pForm->FWndParent = Handle;
  209. pForm->Show();
  210. FListForm->Add(pForm);
  211. }
  212. else
  213. if (FMonitoringType == enMonitoringModule)
  214. {
  215. TVMSMODL0 *pForm = new TVMSMODL0(this, pObj);
  216. pForm->SetFormSize(pObj->WIDTH);
  217. pForm->Parent = FpnlForm;
  218. pForm->FScrollBox = ScrollBox;
  219. pForm->FWndParent = Handle;
  220. pForm->Show();
  221. FListForm->Add(pForm);
  222. }
  223. return true;
  224. }
  225. //---------------------------------------------------------------------------
  226. void __fastcall TVMSBACKM::FpnlFormClick(TObject *Sender)
  227. {
  228. ScrollBox->SetFocus();
  229. }
  230. //---------------------------------------------------------------------------
  231. void __fastcall TVMSBACKM::OnVmsSelectMessage(TMessage &Msg)
  232. {
  233. if (FWndParent)
  234. {
  235. POST_MSG(FWndParent, WM_VMS_SELECT, (WPARAM)Msg.WParam, (LPARAM)Msg.LParam);
  236. }
  237. }
  238. //---------------------------------------------------------------------------
  239. void __fastcall TVMSBACKM::OnVmsSelectDblClickMessage(TMessage &Msg)
  240. {
  241. if (FWndParent)
  242. {
  243. POST_MSG(FWndParent, WM_VMS_SELECT_DBLCLICK, (WPARAM)Msg.WParam, (LPARAM)Msg.LParam);
  244. }
  245. }
  246. //---------------------------------------------------------------------------
  247. void __fastcall TVMSBACKM::FormDestroy(TObject *Sender)
  248. {
  249. ClearFormList();
  250. SAFE_DELETE(FListForm);
  251. }
  252. //---------------------------------------------------------------------------
  253. void __fastcall TVMSBACKM::SetFormSize(int AWidth)
  254. {
  255. try
  256. {
  257. LockWindowUpdate(Handle);
  258. for(int ii = 0; ii < FListForm->Count; ii++)
  259. {
  260. if (FMonitoringType == enMonitoringPhase)
  261. {
  262. TVMSFORM0 *pForm = (TVMSFORM0*)FListForm->Items[ii];
  263. pForm->SetFormSize(AWidth);
  264. FViewWidth = pForm->Width;
  265. }
  266. else
  267. if (FMonitoringType == enMonitoringModule)
  268. {
  269. TVMSMODL0 *pForm = (TVMSMODL0*)FListForm->Items[ii];
  270. pForm->SetFormSize(AWidth);
  271. FViewWidth = pForm->Width;
  272. }
  273. }
  274. }
  275. __finally
  276. {
  277. LockWindowUpdate(0);
  278. }
  279. }
  280. //---------------------------------------------------------------------------
  281. void __fastcall TVMSBACKM::ClearFormList()
  282. {
  283. try
  284. {
  285. LockWindowUpdate(Handle);
  286. for(int ii = 0; ii < FListForm->Count; ii++)
  287. {
  288. if (FMonitoringType == enMonitoringPhase)
  289. {
  290. TVMSFORM0 *pForm = (TVMSFORM0*)FListForm->Items[ii];
  291. pForm->Hide();
  292. SAFE_DELETE(pForm);
  293. }
  294. else
  295. if (FMonitoringType == enMonitoringModule)
  296. {
  297. TVMSMODL0 *pForm = (TVMSMODL0*)FListForm->Items[ii];
  298. pForm->Hide();
  299. SAFE_DELETE(pForm);
  300. }
  301. }
  302. FListForm->Clear();
  303. }
  304. __finally
  305. {
  306. LockWindowUpdate(0);
  307. }
  308. }
  309. //---------------------------------------------------------------------------