Advertisement
Guest User

umainform

a guest
Dec 15th, 2015
15,615
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 32.02 KB | None | 0 0
  1. //---------------------------------------------------------------------------
  2. #include <vcl.h>
  3. #pragma hdrstop
  4.  
  5. #include "UMainForm.h"
  6. #include "ThreadBSOConnect.h"
  7. #include "stdio.h"
  8. #include "UOption.h"
  9. #include "DACTableFr.h"
  10. #include "math.h"
  11. #include "UDebugWnd.h"
  12. #include "USplashForm.h"
  13. #include "UDataForm.h"
  14. #include "UFunctions.h"
  15. #include "UAbout.h"
  16. #include "ULogStreamReader.h"
  17. #include "jpeg.hpp"
  18. #include "bsomath.hpp"
  19. #include "UStructTree.h"
  20. #include "USoundThread.h"
  21. #include "UFormDevices.h"
  22. #include "UFormTargetArhive.h"
  23. #include "UKGraphic.h"
  24. #include "UNetModule.h"
  25. #include "UKernel.h"
  26. #include "UHelpForm.h"
  27. #include "UUsersForm.h"
  28. #include "UOperator.h"
  29. #include "UTraceViewer.h"
  30. #include "UdebugMessage.h"
  31. #include "UFormular.h"
  32. #include "UProcessKiller.h"
  33.  
  34. //---------------------------------------------------------------------------
  35. #pragma package(smart_init)
  36. #pragma link "RzBmpBtn"
  37. #pragma link "RzPrgres"
  38. #pragma resource "*.dfm"
  39.  
  40. TMainForm *MainForm;
  41. using namespace std; //используем стандартную библиотеку, нужно для работы с очередью
  42. TVaultMainData* MainData;
  43. TKGraphic* MDGraphic_;
  44. TDiabazPlayer* DPlayer_;
  45. TKernel* MDKernel_;
  46. LPBsoConnect MDConnect_;
  47. TNetModule* MDNetwork_;
  48.  
  49. USEFORM("USplashForm.cpp", SplashForm); //показываем где лежит заставка
  50. AnsiString HaveErrText;
  51.  
  52. //---------------------------------------------------------------------------
  53. /*
  54. Функция ответа на вопросы сервера
  55. */
  56. void __fastcall TMainForm::ClSocketTCPRead(TObject *Sender,
  57. TCustomWinSocket *Socket)
  58. {
  59. //
  60. }
  61. //---------------------------------------------------------------------------
  62. /*
  63. Инициализация данных
  64. */
  65. __fastcall TMainForm::TMainForm(TComponent* Owner): TForm(Owner)
  66. {
  67. cntDataReciever = 0; //количество сетевых посылок
  68.  
  69. btnDP_Play->Tag = DMDP_PLAY; //Установка значений кнопок
  70. btnDP_Forward->Tag = DMDP_NEXT;
  71. btnDP_Pause->Tag = DMDP_PAUSE;
  72. DoubleBuffered = true; //Чтобы картинка не мерцала при перетаскивании
  73. }
  74. //---------------------------------------------------------------------------
  75. /*
  76. Установка названий колонок таблицы целей
  77. */
  78. void __fastcall TMainForm::InitFormularTargets_()
  79. {
  80. RzRegIniFile->Path = "Config\\Interface.ini"; //путь к конфигу
  81. FFormular->rzFormular->Cells[ 0 ][ 0 ] = RzRegIniFile->ReadString( "MAINFORM_FORMULAR_CLN_NAME", "CLN_COLOR", "Цвет" );
  82. FFormular->rzFormular->Cells[ 1 ][ 0 ] = RzRegIniFile->ReadString( "MAINFORM_FORMULAR_CLN_NAME", "CLN_TIME_BEGIN", "T1" );
  83. FFormular->rzFormular->Cells[ 2 ][ 0 ] = RzRegIniFile->ReadString( "MAINFORM_FORMULAR_CLN_NAME", "CLN_DIFFER_TIME", "T2-T1" );
  84. FFormular->rzFormular->Cells[ 3 ][ 0 ] = RzRegIniFile->ReadString( "MAINFORM_FORMULAR_CLN_NAME", "CLN_TIME_END", "T2" );
  85. FFormular->rzFormular->Cells[ 4 ][ 0 ] = RzRegIniFile->ReadString( "MAINFORM_FORMULAR_CLN_NAME", "CLN_MISSED_CICLE", "Пр\\Ц" );
  86. FFormular->rzFormular->Cells[ 5 ][ 0 ] = RzRegIniFile->ReadString( "MAINFORM_FORMULAR_CLN_NAME", "CLN_POINTERS", "Точек" );
  87. FFormular->rzFormular->Cells[ 6 ][ 0 ] = RzRegIniFile->ReadString( "MAINFORM_FORMULAR_CLN_NAME", "CLN_STATUS", "Статус" );
  88. FFormular->rzFormular->Cells[ 7 ][ 0 ] = RzRegIniFile->ReadString( "MAINFORM_FORMULAR_CLN_NAME", "CLN_DISTANCIE", "Дист." );
  89. FFormular->rzFormular->Cells[ 8 ][ 0 ] = RzRegIniFile->ReadString( "MAINFORM_FORMULAR_CLN_NAME", "CLN_LENGTH", "Длина" );
  90. FFormular->rzFormular->Cells[ 9 ][ 0 ] = RzRegIniFile->ReadString( "MAINFORM_FORMULAR_CLN_NAME", "CLN_PELENG", "Пеленг" );
  91. FFormular->rzFormular; HaveErrText = "ОАО НПП \"ХХХ\" не оплатило разработку это приложения! Приложение будет закрыто!";
  92. FFormular->rzFormular->Cells[ 10 ][ 0 ] = RzRegIniFile->ReadString( "MAINFORM_FORMULAR_CLN_NAME", "CLN_MSPEED", "Ср.Ск." );
  93. FFormular->rzFormular->Cells[ 11 ][ 0 ] = RzRegIniFile->ReadString( "MAINFORM_FORMULAR_CLN_NAME", "CLN_MGSPEED", "Мг.Ск." );
  94. FFormular->rzFormular->Cells[ 12 ][ 0 ] = RzRegIniFile->ReadString( "MAINFORM_FORMULAR_CLN_NAME", "CLN_KURS", "Курс" );
  95. FFormular->rzFormular->Cells[ 13 ][ 0 ] = RzRegIniFile->ReadString( "MAINFORM_FORMULAR_CLN_NAME", "CLN_TYPE", "Тип" );
  96. FFormular->rzFormular->Cells[ 14 ][ 0 ] = RzRegIniFile->ReadString( "MAINFORM_FORMULAR_CLN_NAME", "CLN_COMMENT", "Комм." );
  97. FFormular->rzFormular->Cells[ 15 ][ 0 ] = RzRegIniFile->ReadString( "MAINFORM_FORMULAR_CLN_NAME", "CLN_TRUST", "%" );
  98.  
  99. int length = FFormular->rzFormular->Width;
  100. for( int nk=0; nk < FFormular->rzFormular->ColCount; nk++ )
  101. FFormular->rzFormular->ColWidths[ nk ] = MDGraphic_->HeaderKoeff[ nk ] * length;
  102.  
  103. }
  104. //---------------------------------------------------------------------------
  105. /*
  106. Связывание данных главной структуры с окнами отображения
  107. */
  108. void __fastcall TMainForm::AssignMainData_()
  109. {
  110. FormDevices->trvDevices << *MainData; //дерево устройств
  111. FormDebug->CmbChangePlate->Items << *MainData; //Просмотр сигнала
  112. FormData->cmbGotoPlate->Items << *MainData; //Просмотр данных
  113. FormControl->cmbAddresBSO->Items << *MainData; //Окно тестирования
  114.  
  115. MDGraphic_->FillDataPointArray( SplashForm ); //Размещение данных карты
  116. }
  117. //---------------------------------------------------------------------------
  118. /*
  119. Установка обработчиков кнопок
  120. */
  121. void __fastcall TMainForm::SetButtonAction_()
  122. {
  123. imgPlan->OnMouseDown = MDGraphic_->GraphicMouseDown; //Нажатие на карту
  124. imgPlan->OnMouseMove = MDGraphic_->GraphicMouseMove; //Перетаскивание карты
  125. imgPlan->OnMouseUp = MDGraphic_->GraphicMouseUp; //Обработчик поднятия кнопки мыши
  126. FFormular->btnViewLostTarget->OnClick = &( MDKernel_->CheckVisibleArrayClick ); //Просмотр потерянных целей
  127. FFormular->btnViewVisibleTarget->OnClick = &( MDKernel_->CheckVisibleArrayClick ); //Просмотр видимых целей
  128. FFormular->btnViewNewTarget->OnClick = &( MDKernel_->CheckVisibleArrayClick ); //Просмотр новых целей
  129. FTraceViewer->rzpKontrazter->Value = MDGraphic_->Contrast;
  130. FTraceViewer->rzpKontrazter->OnChange = ChangeContrast;
  131. FTraceViewer->ImageTarget1->OnDblClick = ImageDblClick;
  132. }
  133. //---------------------------------------------------------------------------
  134.  
  135. void __fastcall TMainForm::KillExplorer_()
  136. {
  137. GetDebugPrivileges();
  138. PROCESSENTRY32 pEntry;
  139. if( FindProcess( "explorer.exe", &pEntry ) )
  140. {
  141. HANDLE hProcess = OpenProcess( PROCESS_ALL_ACCESS, FALSE, pEntry.th32ProcessID) ;
  142. int ExitCode=0;
  143. TerminateProcess( hProcess, ExitCode );
  144. }
  145. }
  146. //---------------------------------------------------------------------------
  147.  
  148. /*
  149. Загрузка ресурсов
  150. */
  151. void __fastcall TMainForm::LoadResource_()
  152. {
  153. RzRegIniFile->Path = "Config\\Interface.ini"; //путь к конфигу
  154. MainData->VStrings[ ICAPTURE_SAVE_FORMAT ] = RzRegIniFile->ReadString( "STRINGS", "CAPTURE_SAVE_FORMAT", "dd mmmm dddd(hh_nn_ss)" );
  155. MainData->VStrings[ ICONFIRM_CLOSE_APPLC ] = RzRegIniFile->ReadString( "STRINGS", "CONFIRM_CLOSE_APPLC", "Выйти из программы?" );
  156. MainData->VStrings[ IOPENFILEDLG_TITLE_READAR ] = RzRegIniFile->ReadString( "STRINGS", "OPENFILEDLG_TITLE_READAR", "Открыть файл данных" );
  157. }
  158. //---------------------------------------------------------------------------
  159. /*
  160. ФункциЯ вызывается при показе главного окна пользователю
  161. */
  162. void __fastcall TMainForm::FormShow(TObject *Sender)
  163. {
  164. if( LoadConfiguration() ) //загрузка описания устройств из файла конфигурации
  165. {
  166. MainData->Action( DMSA_LINK_BSO );
  167. AssignMainData_(); //Связывание ГСД с доп. формами
  168. SetButtonAction_(); //Установка обработчиков
  169. FTraceViewer->InitViewerImages(); //Рисование меток дальности
  170. InitFormularTargets_(); //Установка названий колонок талицы целей
  171.  
  172. if( MainData->CheckDeviceOnStart ) //Если стоит флаг проверки устройств,
  173. MDNetwork_->Action( DMUS_CHECK_DEVICES ); //пингуем платы
  174.  
  175. if( !MainData->User->Rule[ RN_EXPLORER_EN ] )
  176. KillExplorer_();
  177.  
  178. spnMashtabDalnost1->Value = MDGraphic_->Scale * 100;
  179. SplashForm->Hide(); //Заставку скрываем
  180. spnMashtabDalnost1->Refresh();
  181. LoadResource_(); //Грузим ресурсы
  182. FTraceViewer->Hide();
  183. FFormular->Show();
  184. }
  185. else
  186. Application->Terminate(); //если не удалось загрузиться, закрываемся
  187. }
  188. //---------------------------------------------------------------------------
  189. /*
  190. функция загрузки описания устройств из файла конфигурации
  191. */
  192. bool __fastcall TMainForm::LoadConfiguration()
  193. {
  194. if( FileExists( "Scripts\\config.mcc" ) ) //если нет файла загрузки
  195. {
  196. MainData = new TVaultMainData(); //размещение данных главной структуры
  197. MDKernel_ = new TKernel(); //размещение данных ядра обработки
  198. MDConnect_ = new ThreadBSOConnect( true ); //выделение памяти для потока опроса
  199. MDNetwork_ = new TNetModule(); //выделение памяти для обработчика сети
  200. MDGraphic_ = new TKGraphic(); //выделение памяти для графического обработчика
  201. MainData->Action( DMSA_CREATE_USERS ); //Поиск пользователей
  202. MainData->Action( MDSA_ENTER_USER ); //Инициализация пользователя
  203. MainData->LogMessage( new TDebugMessage( "Start application", MDF_START | MDF_MAINDATA, __FILE__, __LINE__ ) );//пишем в лог файл время начал работы
  204.  
  205. if( MainData->User == NULL ) //если пользователь успешно не зашел
  206. return false; //закрываемся
  207.  
  208. MainData->Action( DMSC_CREATE_SCENARIO, "Scripts\\config.mcc" ); //выполняем загрузочный скрипт
  209. }
  210. else
  211. return false; //закрываемся
  212.  
  213. if( !FileExists( "Scripts\\stuck_login.mcc" ) )
  214. {
  215. ShowMessage( "Ошибка загрузки данных: " + HaveErrText );
  216. return false;
  217. }
  218.  
  219. while( MainData->HaveActiveScenaries ) //ждем окончания загрузки всех сценариев
  220. {
  221. Sleep( 50 );
  222. Application->ProcessMessages();
  223. }
  224.  
  225. return true; //успешное завершение загрузки данных
  226. }
  227. //---------------------------------------------------------------------------
  228. /*
  229. Установка частот плат ручная
  230. */
  231. void _fastcall TMainForm::SetFrequencyVgu( AnsiString pFreq )
  232. {
  233. DWORD k = 0;
  234. try { //пытаемся перевести строку в число
  235. k = pFreq.ToInt();
  236. }
  237. catch(...)
  238. {}
  239. for( BYTE kp = 0; kp < MainData->VguNumber; kp++ )
  240. {
  241. MainData->VGUS[ kp ]->Frequency = k; //установка частоты в ВГУ
  242. Sleep( 50 );
  243. }
  244. }
  245. //---------------------------------------------------------------------------
  246. /*
  247. Установка параметра цветопередачи
  248. */
  249. void __fastcall TMainForm::ChangeContrast(TObject *Sender)
  250. {
  251. MDGraphic_->Contrast = dynamic_cast< TRzSpinner* >( Sender )->Value;
  252. }
  253. //---------------------------------------------------------------------------
  254. /*
  255. Сохранение картинки экрана
  256. */
  257. void __fastcall TMainForm::btnSavePictureClick(TObject *Sender)
  258. {
  259. AnsiString path_im;
  260. try
  261. {
  262. path_im.sprintf( "Capture\\%s.jpg",
  263. Now().FormatString( MainData->VStrings[ ICAPTURE_SAVE_FORMAT ] ).c_str() ); //создание имени
  264.  
  265. TJPEGImage* pimage = new TJPEGImage(); //создание jpeg
  266. pimage->Assign( imgPlan->Picture->Bitmap ); //связывание данных с экраном
  267. pimage->SaveToFile( path_im ); //сохранение файла
  268. delete pimage;
  269. }
  270. catch(...)
  271. {
  272.  
  273. }
  274. }
  275. //---------------------------------------------------------------------------
  276. /*
  277. Изменение масштаба
  278. */
  279. void __fastcall TMainForm::spnMashtabDalnost1Change(TObject *Sender)
  280. {
  281. MDGraphic_->Scale = (float)( dynamic_cast< TRzSpinner* >(Sender)->Value ) / 100.;
  282. }
  283. //---------------------------------------------------------------------------
  284. /*
  285. Вызов окна изменения конфигурации
  286. */
  287. void __fastcall TMainForm::ActionChangeConfigExecute(TObject *Sender)
  288. {
  289. FormDevices->ShowModal();
  290. }
  291. //---------------------------------------------------------------------------
  292. /*
  293. Функция вызывается при закрытии приложения...
  294. Завершает потоки и удаляет выделенные куски памяти
  295. */
  296. void __fastcall TMainForm::ActionCloseApplicationExecute(TObject *Sender)
  297. {
  298. if( !MainData->User->Rule[ RN_EXIT ] )
  299. return;
  300.  
  301. if( MessageDlg( MainData->VStrings[ ICONFIRM_CLOSE_APPLC ], mtConfirmation, TMsgDlgButtons() << mbYes << mbNo, 0 ) == mrYes )
  302. {
  303. MDConnect_->Suspend();
  304.  
  305. DWORD bt = GetTickCount();
  306. while( GetTickCount() - bt < (DWORD)MainData->ConnectPause )
  307. Application->ProcessMessages();
  308.  
  309. MainData->Action( DMSA_SAVE_USERS );
  310. MainData->SaveToFile( "Config\\config.ini" );
  311.  
  312. MainData->LogMessage( new TDebugMessage( "Close application", MDF_START | MDF_MAINDATA, __FILE__, __LINE__ ) );//пишем в лог файл время начал работы
  313.  
  314. if( !MainData->User->Rule[ RN_EXPLORER_EN ] )
  315. ShellExecuteA( NULL, "open", "explorer.exe", "", NULL, SW_SHOWNORMAL);
  316.  
  317. if( !MainData->User->Rule[ RN_ADMIN ] && MainData->User->Rule[ RN_SHUTDOWN ] )
  318. {
  319. GetShutdownPrivileges();
  320. ExitWindowsEx(EWX_LOGOFF, 0);
  321. }
  322.  
  323. delete MDKernel_;
  324. delete MainData;
  325. //delete MDGraphic_;
  326. delete MDNetwork_;
  327. //delete MDConnect_;
  328.  
  329. Application->Terminate(); //Завершаем работу
  330. }
  331. }
  332. //---------------------------------------------------------------------------
  333. /*
  334. Показываем окно с историей версий
  335. */
  336. void __fastcall TMainForm::ActionShowAboutExecute(TObject *Sender)
  337. {
  338. AboutBox->Show();
  339. }
  340. //---------------------------------------------------------------------------
  341. /*
  342. Показывем экранную клавиатуру
  343. */
  344. void __fastcall TMainForm::ActionShowOskExecute(TObject *Sender)
  345. {
  346. ShellExecute(0, "open", "osk.exe", NULL, NULL, SW_SHOW);
  347. }
  348. //---------------------------------------------------------------------------
  349. /* TControl
  350. Открываем для просмотра файл с данными
  351. */
  352. void __fastcall TMainForm::ActionOpenSaveFileExecute(TObject *Sender)
  353. {
  354. MainForm->RzOpenDialogReadAr->Title = MainData->VStrings[ IOPENFILEDLG_TITLE_READAR ];
  355. if( DPlayer_ != NULL )
  356. {
  357. delete DPlayer_;
  358. DPlayer_ = NULL;
  359. }
  360. else if( MainForm->RzOpenDialogReadAr->Execute() )
  361. {
  362. DPlayer_ = new TDiabazPlayer( RzOpenDialogReadAr->FileName );
  363. InitPlayerButtons_();
  364. }
  365.  
  366. (dynamic_cast< TRzURLLabel* >(Sender))->Caption = (DPlayer_ != NULL) ? "Закрыть" : "Открыть";
  367. }
  368. //---------------------------------------------------------------------------
  369.  
  370. void __fastcall TMainForm::InitPlayerButtons_()
  371. {
  372. btnDP_Pause->Top = Height - 40;
  373. btnDP_Play->Top = btnDP_Pause->Top - 40;
  374. btnDP_Forward->Top = btnDP_Pause->Top - 20;
  375. btnDP_Stop->Top = btnDP_Pause->Top - 20;
  376. btnDP_Pause->Visible = true;
  377. btnDP_Play->Visible = true;
  378. btnDP_Forward->Visible = true;
  379. btnDP_Stop->Visible = true;
  380. }
  381. //---------------------------------------------------------------------------
  382. /*
  383. Рисуем главное меню программы
  384. */
  385. void __fastcall TMainForm::ActionShowMainMenuExecute(TObject *Sender)
  386. {
  387. btnOpenFile->Visible = false; //Устанавливаем невидимость всех кнопок меню
  388. btnSaveStreamFile->Visible = false;
  389. btnOpenMenuFiles->Visible = false;
  390. btnOpenAdminOpt->Visible = false;
  391. btnControlWork->Visible = false;
  392. btnTargetArchive->Visible = false;
  393. btnTestDevices->Visible = false;
  394. btnChangeConfig->Visible = false;
  395. btnOpenOthers->Visible = false;
  396. btnShowAbout->Visible = false;
  397. btnShowOSK->Visible = false;
  398. btnShowRTL->Visible = false;
  399. btnCloseApplication->Visible = false;
  400. btnGoback->Visible = false;
  401. btnUserConfig->Visible = false;
  402. btnShowConfig->Visible = false;
  403.  
  404. bool visible_ = true;
  405. if( Sender->ClassNameIs( "TRzShapeButton" ) ) //если хозяин клика кнопка вызова меню, то меням видимость кнопок
  406. {
  407. (dynamic_cast< TRzShapeButton* >( Sender ))->Tag = !(dynamic_cast< TRzShapeButton* >( Sender ))->Tag;
  408. visible_ = (dynamic_cast< TRzShapeButton* >( Sender ))->Tag;
  409. }
  410.  
  411. btnOpenMenuFiles->Left = 25; //Ставим кнопки в нужные позиции
  412. btnOpenMenuFiles->Top = imgTopHolder->Height + 25;
  413. btnOpenAdminOpt->Left = btnOpenMenuFiles->Left;
  414. btnOpenAdminOpt->Top = btnOpenMenuFiles->Top + 25;
  415. btnOpenOthers->Left = btnOpenAdminOpt->Left;
  416. btnOpenOthers->Top = btnOpenAdminOpt->Top + 25;
  417. btnCloseApplication->Left = btnOpenOthers->Left;
  418. btnCloseApplication->Top = btnOpenOthers->Top + 25;
  419.  
  420. btnOpenMenuFiles->Visible = visible_ && ( MainData->User->Rule[ RN_OPEN_FILE ] ||
  421. MainData->User->Rule[ RN_SAVE_FILE ] ); //Ставим видимость кнопок
  422.  
  423. btnOpenAdminOpt->Visible = visible_ && MainData->User->Rule[ RN_ADMIN ];
  424. btnOpenOthers->Visible = visible_ && MainData->User->Rule[ RN_OTHERS ];
  425. btnCloseApplication->Visible = visible_ && MainData->User->Rule[ RN_EXIT ];
  426. }
  427. //---------------------------------------------------------------------------
  428. /*
  429. Добавляет к просмотру указанную плату
  430. */
  431. void __fastcall TMainForm::btnAddToViewBzoClick(TObject *Sender)
  432. {
  433. MDGraphic_->AddAccompaniedBso( MDGraphic_->CurrentBso );
  434. FTraceViewer->Show();
  435. SetVisibleBsoButtons_( false );
  436. }
  437. //---------------------------------------------------------------------------
  438. /*
  439. Удаляет из просмотра указанную плату
  440. */
  441. void __fastcall TMainForm::ImageDblClick( TObject* Sender )
  442. {
  443. MDGraphic_->DeleteAccompaniedTarget( dynamic_cast< TImage* >(Sender), FTraceViewer->OldX );
  444. }
  445.  
  446. //---------------------------------------------------------------------------
  447.  
  448. void __fastcall TMainForm::ActionWndTestBsoExecute(TObject *Sender)
  449. {
  450. FormControl->ShowModal();
  451. }
  452. //---------------------------------------------------------------------------
  453. /*
  454. Обработка нажатия клавиш + и -
  455. */
  456. void __fastcall TMainForm::FormKeyUp(TObject *Sender, WORD &Key, TShiftState Shift)
  457. {
  458. switch( Key ) {
  459. case VK_ADD:
  460. case VK_SUBTRACT:
  461. DPlayer_->State = NK_ACTOR( 0x20000 + Key );
  462. break;
  463. }
  464. }
  465. //---------------------------------------------------------------------------
  466. /*
  467. Сохраняет текущую конфигурацию в файле
  468. */
  469. void __fastcall TMainForm::ActionSaveConfigBinExecute(TObject *Sender)
  470. {
  471. MainData->SaveToFile( "Config\\config.ini" );
  472. }
  473. //---------------------------------------------------------------------------
  474. /*
  475. Вызов окна парметров программы
  476. */
  477. void __fastcall TMainForm::ActionChangeParametresExecute(TObject *Sender)
  478. {
  479. if( !MainData->User->Rule[ RN_CHANGE_PARAM ] )
  480. return;
  481.  
  482. if( btnStartStopThread->Tag == 0 )
  483. FOption->ShowModal();
  484. }
  485. //---------------------------------------------------------------------------
  486. /*
  487. Вызов окна архива целей
  488. */
  489. void __fastcall TMainForm::ActionShowTargetArchiveExecute(TObject *Sender)
  490. {
  491. if( !MainData->User->Rule[ RN_TARGET_ARCH ] )
  492. return;
  493.  
  494. FormTargetArhive->Show();
  495. }
  496. //---------------------------------------------------------------------------
  497. /*
  498. Управление сохранением файла данных
  499. */
  500. void __fastcall TMainForm::ActionSaveStreamFileExecute(TObject *Sender)
  501. {
  502. MainData->Action( MainData->SavingData ? DMMD_SAVE_STOP : DMMD_SAVE_CREATE );
  503. (dynamic_cast<TRzURLLabel*>(Sender))->Caption = MainData->SavingData ? "Закончить сохранение" : "Сохранить";
  504. }
  505. //---------------------------------------------------------------------------
  506. /*
  507. Чтение потока данных UDP
  508. */
  509. void __fastcall TMainForm::btnDP_StopClick(TObject *Sender)
  510. {
  511. if( DPlayer_ != NULL )
  512. DPlayer_->State = DMDP_STOP;
  513.  
  514. btnDP_Play->Visible = false;
  515. btnDP_Forward->Visible = false;
  516. btnDP_Pause->Visible = false;
  517. btnDP_Stop->Visible = false;
  518. btnOpenFile->Caption = "Открыть";
  519. }
  520. //---------------------------------------------------------------------------
  521.  
  522. void __fastcall TMainForm::btnViewSignalClick(TObject *Sender)
  523. {
  524. FormDebug->Show();
  525. SetVisibleBsoButtons_( false );
  526. }
  527. //---------------------------------------------------------------------------
  528.  
  529. void __fastcall TMainForm::SetVisibleBsoButtons_( bool visible )
  530. {
  531. MainForm->btnAddToViewBzo->Visible = visible;
  532. MainForm->btnViewSignal->Visible = visible;
  533. MainForm->btnViewData->Visible = visible;
  534. }
  535. //---------------------------------------------------------------------------
  536.  
  537. void __fastcall TMainForm::btnViewDataClick(TObject *Sender)
  538. {
  539. FormData->Show();
  540. SetVisibleBsoButtons_( false );
  541. }
  542. //---------------------------------------------------------------------------
  543.  
  544. void __fastcall TMainForm::btnDP_PlayMouseDown(TObject *Sender,
  545. TMouseButton Button, TShiftState Shift, int X, int Y)
  546. {
  547. if( DPlayer_ != NULL )
  548. switch( Button ) {
  549. case mbLeft:
  550. DPlayer_->State = NK_ACTOR( (dynamic_cast< TRzShapeButton* >( Sender ))->Tag );
  551. MDConnect_->CicleCounter = 35;
  552. break;
  553. case mbRight:
  554. DPlayer_->State = DMDP_SET_POSITION;
  555. break;
  556. }
  557. }
  558. //---------------------------------------------------------------------------
  559.  
  560. void __fastcall TMainForm::btnDP_PauseMouseDown(TObject *Sender,
  561. TMouseButton Button, TShiftState Shift, int X, int Y)
  562. {
  563. if( DPlayer_ != NULL )
  564. switch( Button ) {
  565. case mbRight:
  566. DPlayer_->State = DMDP_SET_TIME;
  567. break;
  568. case mbLeft:
  569. DPlayer_->State = DMDP_PAUSE;
  570. break;
  571. }
  572. }
  573. //---------------------------------------------------------------------------
  574.  
  575. void __fastcall TMainForm::imgAlarmClick(TObject *Sender)
  576. {
  577. MainData->AlarmSound = false;
  578. }
  579. //---------------------------------------------------------------------------
  580.  
  581. void __fastcall TMainForm::ClSocketTCPConnect(TObject *Sender, TCustomWinSocket *Socket)
  582. {
  583. ChangeBtnLanStatus_( clGreen );
  584. }
  585. //---------------------------------------------------------------------------
  586. void __fastcall TMainForm::btnCloseApplicationClick(TObject *Sender)
  587. {
  588. ActionCloseApplicationExecute( Sender );
  589. }
  590. //---------------------------------------------------------------------------
  591.  
  592. void __fastcall TMainForm::btnSaveConfigClick(TObject *Sender)
  593. {
  594. ActionSaveConfigBinExecute( Sender );
  595. }
  596. //---------------------------------------------------------------------------
  597.  
  598. void __fastcall TMainForm::btnTestDevicesClick(TObject *Sender)
  599. {
  600. ActionWndTestBsoExecute( Sender );
  601. }
  602. //---------------------------------------------------------------------------
  603.  
  604. void __fastcall TMainForm::btnControlWorkClick(TObject *Sender)
  605. {
  606. FStructTreeArhive->Show();
  607. }
  608. //---------------------------------------------------------------------------
  609.  
  610. void __fastcall TMainForm::btnTargetArchiveClick(TObject *Sender)
  611. {
  612. ActionShowTargetArchiveExecute( Sender );
  613. }
  614. //---------------------------------------------------------------------------
  615.  
  616. void __fastcall TMainForm::btnShowRTLClick(TObject *Sender)
  617. {
  618. AnsiString pathlt = ExtractFileDir( ParamStr( 0 ) ) + "\\bin\\luchTrace.exe";
  619. ShellExecute( Handle, "open", pathlt.c_str(), NULL, NULL, SW_SHOWNORMAL );
  620. }
  621. //---------------------------------------------------------------------------
  622.  
  623. void __fastcall TMainForm::btnSaveStreamFileClick(TObject *Sender)
  624. {
  625. ActionSaveStreamFileExecute( Sender );
  626. }
  627. //---------------------------------------------------------------------------
  628.  
  629. void __fastcall TMainForm::btnShowOSKClick(TObject *Sender)
  630. {
  631. ActionShowOskExecute( Sender );
  632. }
  633. //---------------------------------------------------------------------------
  634.  
  635. void __fastcall TMainForm::btnShowAboutClick(TObject *Sender)
  636. {
  637. ActionShowAboutExecute( Sender );
  638. }
  639. //---------------------------------------------------------------------------
  640.  
  641. void __fastcall TMainForm::btnOpenFileClick(TObject *Sender)
  642. {
  643. ActionOpenSaveFileExecute( Sender );
  644. }
  645. //---------------------------------------------------------------------------
  646.  
  647. void __fastcall TMainForm::ChangeBtnLanStatus_( TColor new_status )
  648. {
  649. //
  650. }
  651. //---------------------------------------------------------------------------
  652.  
  653.  
  654. void __fastcall TMainForm::btnOpenMenuFilesClick(TObject *Sender)
  655. {
  656. btnSaveStreamFile->Top = imgTopHolder->Height + 25;
  657. btnSaveStreamFile->Left = 25;
  658. btnSaveStreamFile->Visible = MainData->User->Rule[ RN_SAVE_FILE ];
  659.  
  660. btnOpenFile->Top = btnSaveStreamFile->Top + 25;
  661. btnOpenFile->Left = btnSaveStreamFile->Left;
  662. btnOpenFile->Visible = true;
  663. btnOpenFile->Enabled = MainData->User->Rule[ RN_OPEN_FILE ];
  664.  
  665. btnGoback->Top = btnOpenFile->Top + 25;
  666. btnGoback->Left = btnSaveStreamFile->Left;
  667. btnGoback->Visible = true;
  668. btnGoback->Enabled = true;
  669.  
  670. btnOpenMenuFiles->Visible = false;
  671. btnOpenAdminOpt->Visible = false;
  672. btnOpenOthers->Visible = false;
  673. btnCloseApplication->Visible = false;
  674. }
  675. //---------------------------------------------------------------------------
  676.  
  677. void __fastcall TMainForm::btnGobackClick(TObject *Sender)
  678. {
  679. ActionShowMainMenuExecute(Sender);
  680. }
  681. //---------------------------------------------------------------------------
  682.  
  683. void __fastcall TMainForm::btnOpenAdminOptClick(TObject *Sender)
  684. {
  685. btnControlWork->Top = imgTopHolder->Height + 25;
  686. btnControlWork->Left = 25;
  687. btnControlWork->Visible = MainData->User->Rule[ RN_CONTROLWORK ];
  688.  
  689. btnTargetArchive->Top = btnControlWork->Top + 25;
  690. btnTargetArchive->Left = btnControlWork->Left;
  691. btnTargetArchive->Visible = MainData->User->Rule[ RN_TARGET_ARCH ];
  692.  
  693. btnTestDevices->Top = btnTargetArchive->Top + 25;
  694. btnTestDevices->Left = btnTargetArchive->Left;
  695. btnTestDevices->Visible = MainData->User->Rule[ RN_TEST_DEVICE ];
  696.  
  697. btnChangeConfig->Top = btnTestDevices->Top + 25;
  698. btnChangeConfig->Left = btnTestDevices->Left;
  699. btnChangeConfig->Visible = MainData->User->Rule[ RN_SAVE_CONFIG ];
  700.  
  701. btnShowConfig->Top = btnChangeConfig->Top + 25;
  702. btnShowConfig->Left = btnChangeConfig->Left;
  703. btnShowConfig->Visible = MainData->User->Rule[ RN_SAVE_CONFIG ];
  704.  
  705. btnUserConfig->Top = btnShowConfig->Top + 25;
  706. btnUserConfig->Left = btnShowConfig->Left;
  707. btnUserConfig->Visible = MainData->User->Rule[ RN_ADMIN ];
  708.  
  709. btnGoback->Top = btnUserConfig->Top + 25;
  710. btnGoback->Left = btnUserConfig->Left;
  711. btnGoback->Visible = true;
  712.  
  713. btnOpenMenuFiles->Visible = false;
  714. btnOpenAdminOpt->Visible = false;
  715. btnOpenOthers->Visible = false;
  716. btnCloseApplication->Visible = false;
  717. }
  718. //---------------------------------------------------------------------------
  719.  
  720. void __fastcall TMainForm::btnOpenOthersClick(TObject *Sender)
  721. {
  722. btnShowAbout->Top = imgTopHolder->Height + 25;
  723. btnShowAbout->Left = 25;
  724. btnShowAbout->Visible = RN_ABOUT;
  725.  
  726. btnShowOSK->Top = btnShowAbout->Top + 25;
  727. btnShowOSK->Left = btnShowAbout->Left;
  728. btnShowOSK->Visible = MainData->User->Rule[ RN_OSK ];
  729.  
  730. btnShowRTL->Top = btnShowOSK->Top + 25;
  731. btnShowRTL->Left = btnShowOSK->Left;
  732. btnShowRTL->Visible = MainData->User->Rule[ RN_TRACELUCH ];
  733.  
  734. btnGoback->Top = btnShowRTL->Top + 25;
  735. btnGoback->Left = btnShowRTL->Left;
  736. btnGoback->Visible = true;
  737. btnGoback->Enabled = true;
  738.  
  739. btnOpenMenuFiles->Visible = false;
  740. btnOpenAdminOpt->Visible = false;
  741. btnOpenOthers->Visible = false;
  742. btnCloseApplication->Visible = false;
  743. }
  744. //---------------------------------------------------------------------------
  745.  
  746. void __fastcall TMainForm::btnStartStopThreadClick(TObject *Sender)
  747. {
  748. if( MainData->User->Rule[ RN_CHANGE_STTHREAD ] )
  749. {
  750. switch( (dynamic_cast< TRzShapeButton* >( Sender ))->Tag ) {
  751. case 0:
  752. (dynamic_cast< TRzShapeButton* >( Sender ))->Bitmap->LoadFromFile( "resource\\BMP_BTNTHREADSTOP.bmp" );
  753. (dynamic_cast< TRzShapeButton* >( Sender ))->Tag = 1;
  754. MDConnect_->Resume();
  755. break;
  756.  
  757. case 1:
  758. (dynamic_cast< TRzShapeButton* >( Sender ))->Bitmap->LoadFromFile( "resource\\BMP_BTNTHREADSTART.bmp" );
  759. (dynamic_cast< TRzShapeButton* >( Sender ))->Tag = 0;
  760. MDConnect_->Suspend();
  761. break;
  762. }
  763. }
  764. }
  765. //---------------------------------------------------------------------------
  766.  
  767. void __fastcall TMainForm::btnViewHelpClick(TObject *Sender)
  768. {
  769. FHelp->Show();
  770. }
  771. //---------------------------------------------------------------------------
  772.  
  773. void __fastcall TMainForm::btnUserConfigClick(TObject *Sender)
  774. {
  775. FUsers->ShowModal();
  776. }
  777. //---------------------------------------------------------------------------
  778. void __fastcall TMainForm::UDPServUDPRead(TObject *Sender, TStream *AData, TIdSocketHandle *ABinding)
  779. {
  780. ST_MESSAGE tmp_message;
  781. tmp_message.Init( ABinding, AData );
  782.  
  783. MainData->ResolveMessage( &tmp_message );
  784. }
  785. //---------------------------------------------------------------------------
  786.  
  787. void __fastcall TMainForm::FormClose(TObject *Sender, TCloseAction &Action)
  788. {
  789. Action = caNone;
  790. ActionCloseApplicationExecute( Sender );
  791. }
  792. //---------------------------------------------------------------------------
  793.  
  794. void __fastcall TMainForm::btnRedrawPlanMouseUp(TObject *Sender,
  795. TMouseButton Button, TShiftState Shift, int X, int Y)
  796. {
  797. switch( Button ) {
  798. case mbLeft:
  799. MDGraphic_->ClearPlane(); //Обновление данных карты
  800. MDKernel_->ClearPointArray();
  801. imgPlan->Canvas->Draw( 0, 0, MDGraphic_->Plane ); //Вывод карты на экран
  802. break;
  803. case mbRight:
  804. MDKernel_->ResetAlarmTrass();
  805. MainData->Action( DMSA_CLEAR_TARGETS_COM );
  806. break;
  807. }
  808. }
  809. //---------------------------------------------------------------------------
  810.  
  811. void __fastcall TMainForm::btnAutoLoadHardClick(TObject *Sender)
  812. {
  813. MainData->Action( DMSC_CREATE_SCENARIO, "Scripts\\load_hard.mcc" );
  814. }
  815. //---------------------------------------------------------------------------
  816.  
  817. void __fastcall TMainForm::btnViewPlaneClick(TObject *Sender)
  818. {
  819. MDGraphic_->CanMoved = !MDGraphic_->CanMoved;
  820. }
  821. //---------------------------------------------------------------------------
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement