ITSSELAMF.cpp 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719
  1. //---------------------------------------------------------------------------
  2. #include <vcl.h>
  3. #include "ITSSkinF.h"
  4. #include "ITSUtilF.h"
  5. #include "AppGlobalF.h"
  6. #include "CDSNodeF.h"
  7. #include "CDSLinkF.h"
  8. #include "CDSIfscF.h"
  9. #include "CDSRoadF.h"
  10. #include "ITSLangTransF.h"
  11. #include "ITSMapF.h"
  12. #pragma hdrstop
  13. #include "ITSSELAMF.h"
  14. //---------------------------------------------------------------------------
  15. #pragma package(smart_init)
  16. #pragma link "cxButtons"
  17. #pragma link "cxCalc"
  18. #pragma link "cxClasses"
  19. #pragma link "cxContainer"
  20. #pragma link "cxControls"
  21. #pragma link "cxCustomData"
  22. #pragma link "cxData"
  23. #pragma link "cxDataStorage"
  24. #pragma link "cxEdit"
  25. #pragma link "cxFilter"
  26. #pragma link "cxGraphics"
  27. #pragma link "cxGrid"
  28. #pragma link "cxGridCustomTableView"
  29. #pragma link "cxGridCustomView"
  30. #pragma link "cxGridLevel"
  31. #pragma link "cxGridTableView"
  32. #pragma link "cxGroupBox"
  33. #pragma link "cxLabel"
  34. #pragma link "cxLookAndFeelPainters"
  35. #pragma link "cxLookAndFeels"
  36. #pragma link "cxPC"
  37. #pragma link "cxPCdxBarPopupMenu"
  38. #pragma link "cxSplitter"
  39. #pragma link "cxStyles"
  40. #pragma link "cxTextEdit"
  41. #pragma link "dxSkinBlue"
  42. #pragma link "dxSkinsCore"
  43. #pragma link "dxSkinscxPCPainter"
  44. #pragma link "FRAME_IfscListF"
  45. #pragma link "FRAME_LinkListF"
  46. #pragma link "FRAME_NodeListF"
  47. #pragma link "FRAME_OpenMapF"
  48. #pragma link "FRAME_RoadListF"
  49. #pragma resource "*.dfm"
  50. TITSSELAM *ITSSELAM = NULL;
  51. //---------------------------------------------------------------------------
  52. void TITSSELAM_MapCallback(TObject *ASender, const String AFunc, const String AArgs, const bool AFirst)
  53. {
  54. try
  55. {
  56. if (!ITSSELAM) return;
  57. ITSSELAM->OpenMapCallback(ASender, AFunc, AArgs, AFirst);
  58. }
  59. catch(Exception &exception)
  60. {
  61. }
  62. }
  63. //---------------------------------------------------------------------------
  64. __fastcall TITSSELAM::TITSSELAM(TComponent* Owner, int ALinkLevel/*=1*/)
  65. : TForm(Owner)
  66. {
  67. LangTrans->Translate(this, ITSDb_GetConnection());
  68. ITSSkin_Load(this);
  69. CMM_LoadForm(g_sFormsDir, this);
  70. LoadLocalSkin();
  71. FTitle = Caption;//"구간 선택";
  72. FRefreshId = "";
  73. FSelPosX = "0";
  74. FSelPosY = "0";
  75. FSelected = false;
  76. FMultiSelect = false;
  77. FLinkId = "";
  78. FPosX = FPosY = 0;
  79. FMouseDownPosX = FMouseDownPosY = 0;
  80. PgList->Properties->ActivePage = TabNode;
  81. TvList->OptionsView->NoDataToDisplayInfoText = FrmLang->lblNoInfo->Caption;//"<선택구간목록>";
  82. FRAMENodeList1->PnlTop->Visible = false;
  83. FRAMENodeList1->PnlBottom->Visible = false;
  84. FRAMELinkList1->PnlTop->Visible = false;
  85. FRAMELinkList1->PnlBottom->Visible = false;
  86. FRAMEIfscList1->PnlTop->Visible = false;
  87. FRAMEIfscList1->PnlBottom->Visible = false;
  88. FRAMERoadList1->PnlTop->Visible = false;
  89. FRAMERoadList1->PnlBottom->Visible = false;
  90. FLinkLevel = ALinkLevel;
  91. ITSSELAM = this;
  92. FLayerIdx = LyrTp_Node;
  93. FRAMEOpenMap1->LayerIdx = FLayerIdx;
  94. FRAMEOpenMap1->ChkShowNmbr->Visible = false;
  95. FRAMEOpenMap1->MapCallbackFunc = TITSSELAM_MapCallback;
  96. }
  97. //---------------------------------------------------------------------------
  98. void __fastcall TITSSELAM::CommClose()
  99. {
  100. try
  101. {
  102. CMM_SaveForm(g_sFormsDir, this);
  103. }
  104. catch(...)
  105. {
  106. }
  107. }
  108. //---------------------------------------------------------------------------
  109. void __fastcall TITSSELAM::LoadLocalSkin()
  110. {
  111. }
  112. //---------------------------------------------------------------------------
  113. void __fastcall TITSSELAM::FormShow(TObject *Sender)
  114. {
  115. Refresh();
  116. FRAMEOpenMap1->OpenMap();
  117. FormInit();
  118. TmrShow->Enabled = true;
  119. }
  120. //---------------------------------------------------------------------------
  121. void __fastcall TITSSELAM::SetLinkLevel(int ALinkLevel)
  122. {
  123. TabLink->Visible = false;
  124. TabLink->TabVisible = false;
  125. TabServiceLink->Visible = false;
  126. TabServiceLink->TabVisible = false;
  127. TabRoad->Visible = false;
  128. TabRoad->TabVisible = false;
  129. switch(ALinkLevel)
  130. {
  131. case 1:
  132. FRAMELinkList1->UpdateList();
  133. TabLink->Visible = true;
  134. TabLink->TabVisible = true;
  135. TabServiceLink->Visible = false;
  136. TabServiceLink->TabVisible = false;
  137. TabRoad->Visible = false;
  138. TabRoad->TabVisible = false;
  139. break;
  140. case 2:
  141. FRAMEIfscList1->UpdateList();
  142. TabLink->Visible = false;
  143. TabLink->TabVisible = false;
  144. TabServiceLink->Visible = true;
  145. TabServiceLink->TabVisible = true;
  146. TabRoad->Visible = false;
  147. TabRoad->TabVisible = false;
  148. break;
  149. case 3:
  150. FRAMERoadList1->UpdateList();
  151. TabLink->Visible = false;
  152. TabLink->TabVisible = false;
  153. TabServiceLink->Visible = false;
  154. TabServiceLink->TabVisible = false;
  155. TabRoad->Visible = true;
  156. TabRoad->TabVisible = true;
  157. break;
  158. default: return;
  159. }
  160. FLinkLevel = ALinkLevel;
  161. }
  162. //---------------------------------------------------------------------------
  163. void __fastcall TITSSELAM::FormInit()
  164. {
  165. if (FRAMEOpenMap1->MapStart)
  166. {
  167. int nRow;
  168. TcxDataController *pGDC = TvList->DataController;
  169. try
  170. {
  171. int nSeq = 1;
  172. for (int ii = 0; ii < pGDC->RecordCount; ii++)
  173. {
  174. String sLinkId = pGDC->Values[ii][Column01->Index];
  175. sJs.printf(L"updateEditLink('%s', 0)", sLinkId.c_str());
  176. FRAMEOpenMap1->ExecScript(sJs);
  177. }
  178. }
  179. catch(...)
  180. {
  181. }
  182. }
  183. FRAMENodeList1->UpdateList();
  184. }
  185. //---------------------------------------------------------------------------
  186. void __fastcall TITSSELAM::TmrShowTimer(TObject *Sender)
  187. {
  188. TmrShow->Enabled = false;
  189. BtnSearchClick((TObject*)BtnSearch);
  190. Application->ProcessMessages();
  191. cxGroupBox1->Caption = cxGroupBox1->Caption + " - Level: " + String(LinkLevel);
  192. RefreshLink();
  193. }
  194. //---------------------------------------------------------------------------
  195. void __fastcall TITSSELAM::BtnSearchClick(TObject *Sender)
  196. {
  197. Application->ProcessMessages();
  198. RefreshData();
  199. }
  200. //---------------------------------------------------------------------------
  201. void __fastcall TITSSELAM::RefreshData()
  202. {
  203. }
  204. //---------------------------------------------------------------------------
  205. void __fastcall TITSSELAM::BtnCloseClick(TObject *Sender)
  206. {
  207. Close();
  208. }
  209. //---------------------------------------------------------------------------
  210. void __fastcall TITSSELAM::FormClose(TObject *Sender, TCloseAction &Action)
  211. {
  212. CommClose();
  213. //ITSSELAM = NULL;
  214. //Action = caFree;
  215. }
  216. //---------------------------------------------------------------------------
  217. void __fastcall TITSSELAM::FRAMENodeList1TvListCellDblClick(TcxCustomGridTableView *Sender, TcxGridTableDataCellViewInfo *ACellViewInfo,
  218. TMouseButton AButton, TShiftState AShift, bool &AHandled)
  219. {
  220. if (!FRAMEOpenMap1->MapStart) return;
  221. int nIndex = Sender->DataController->FocusedRecordIndex;
  222. if (nIndex < 0) return;
  223. String sNodeId = VarToStr(Sender->DataController->Values[nIndex][FRAMENodeList1->Column01->Index]);
  224. sJs.printf(L"selectLayerObject(%d, '%s', %d)", FLayerIdx, sNodeId.c_str(), FRAMEOpenMap1->MapZoom);
  225. FRAMEOpenMap1->ExecScript(sJs);
  226. }
  227. //---------------------------------------------------------------------------
  228. void __fastcall TITSSELAM::FRAMELinkList1TvListCellDblClick(TcxCustomGridTableView *Sender, TcxGridTableDataCellViewInfo *ACellViewInfo,
  229. TMouseButton AButton, TShiftState AShift, bool &AHandled)
  230. {
  231. int nIndex = Sender->DataController->FocusedRecordIndex;
  232. if (nIndex < 0) return;
  233. SelGisItem(1, Sender->DataController->Values[nIndex][FRAMELinkList1->Column01->Index]);
  234. }
  235. //---------------------------------------------------------------------------
  236. void __fastcall TITSSELAM::FRAMEIfscList1TvListCellClick(TcxCustomGridTableView *Sender, TcxGridTableDataCellViewInfo *ACellViewInfo,
  237. TMouseButton AButton, TShiftState AShift, bool &AHandled)
  238. {
  239. int nIndex = Sender->DataController->FocusedRecordIndex;
  240. if (nIndex < 0) return;
  241. SelGisItem(2, Sender->DataController->Values[nIndex][FRAMEIfscList1->Column01->Index]);
  242. }
  243. //---------------------------------------------------------------------------
  244. void __fastcall TITSSELAM::FRAMERoadList1TvListCellClick(TcxCustomGridTableView *Sender, TcxGridTableDataCellViewInfo *ACellViewInfo,
  245. TMouseButton AButton, TShiftState AShift, bool &AHandled)
  246. {
  247. int nIndex = Sender->DataController->FocusedRecordIndex;
  248. if (nIndex < 0) return;
  249. SelGisItem(3, Sender->DataController->Values[nIndex][FRAMERoadList1->Column01->Index]);
  250. }
  251. //---------------------------------------------------------------------------
  252. void __fastcall TITSSELAM::BtnSelectClick(TObject *Sender)
  253. {
  254. if (TvList->DataController->RecordCount <= 0)
  255. {
  256. Application->MessageBox(lblText1->Caption.c_str(),//L"구간이 선택되지 않았습니다.\r\n지도에서 구간을 선택하세요.",
  257. FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  258. return;
  259. }
  260. FLinkId = EdLinkId->Text.Trim();
  261. FSelected = true;
  262. Close();
  263. Application->ProcessMessages();
  264. }
  265. //---------------------------------------------------------------------------
  266. void __fastcall TITSSELAM::SelGisItem(int AType, String AId)
  267. {
  268. if (!FRAMEOpenMap1->MapStart) return;
  269. sJs.printf(L"extentLayerObject(%d, '%s')", LyrTp_Traffic, AId.c_str());
  270. FRAMEOpenMap1->ExecScript(sJs);
  271. }
  272. //---------------------------------------------------------------------------
  273. void __fastcall TITSSELAM::BtnDeleteClick(TObject *Sender)
  274. {
  275. try
  276. {
  277. TcxDataController *pGDC = TvList->DataController;
  278. TvList->BeginUpdate();
  279. try
  280. {
  281. for (int ii = 0; ii < pGDC->RecordCount; ii++)
  282. {
  283. String sLinkId = pGDC->Values[ii][Column01->Index];
  284. DeleteSelect(sLinkId);
  285. }
  286. TvList->Controller->DeleteSelection();
  287. }
  288. catch(...)
  289. {
  290. }
  291. }
  292. __finally
  293. {
  294. TvList->EndUpdate();
  295. }
  296. RefreshLink();
  297. }
  298. //---------------------------------------------------------------------------
  299. void __fastcall TITSSELAM::UpdateSelect(String ALinkId, double X, double Y)
  300. {
  301. try
  302. {
  303. int nRow;
  304. TcxDataController *pGDC = TvList->DataController;
  305. TvList->BeginUpdate();
  306. try
  307. {
  308. bool bAdd = true;
  309. if (!FMultiSelect)
  310. {
  311. for (int ii = 0; ii < pGDC->RecordCount; ii++)
  312. {
  313. String sLinkId = pGDC->Values[ii][Column01->Index];
  314. DeleteSelect(sLinkId);
  315. }
  316. CMM_ClearGridTableView(TvList);
  317. }
  318. else
  319. {
  320. for (int ii = 0; ii < pGDC->RecordCount; ii++)
  321. {
  322. String sTmpLinkId = pGDC->Values[ii][Column01->Index];
  323. if (sTmpLinkId == ALinkId)
  324. {
  325. pGDC->Values[ii][Column02->Index] = X;
  326. pGDC->Values[ii][Column03->Index] = Y;
  327. bAdd = false;
  328. break;
  329. }
  330. }
  331. }
  332. if (bAdd)
  333. {
  334. nRow = pGDC->AppendRecord();
  335. pGDC->Values[nRow][Column01->Index] = ALinkId;
  336. pGDC->Values[nRow][Column02->Index] = X;
  337. pGDC->Values[nRow][Column03->Index] = Y;
  338. }
  339. }
  340. catch(...)
  341. {
  342. }
  343. }
  344. __finally
  345. {
  346. TvList->EndUpdate();
  347. }
  348. RefreshLink();
  349. }
  350. //---------------------------------------------------------------------------
  351. void __fastcall TITSSELAM::DeleteSelect(String ALinkId)
  352. {
  353. if (!FRAMEOpenMap1->MapStart) return;
  354. sJs.printf(L"updateEditLink('%s', 0)", ALinkId.c_str());
  355. FRAMEOpenMap1->ExecScript(sJs);
  356. }
  357. //---------------------------------------------------------------------------
  358. void __fastcall TITSSELAM::TvListCellDblClick(TcxCustomGridTableView *Sender, TcxGridTableDataCellViewInfo *ACellViewInfo,
  359. TMouseButton AButton, TShiftState AShift,
  360. bool &AHandled)
  361. {
  362. if (!FRAMEOpenMap1->MapStart) return;
  363. int nIndex = Sender->DataController->FocusedRecordIndex;
  364. if (nIndex < 0) return;
  365. String sLinkId = VarToStr(Sender->DataController->Values[nIndex][Column01->Index]);
  366. String sX = VarToStr(Sender->DataController->Values[nIndex][Column02->Index]);
  367. String sY = VarToStr(Sender->DataController->Values[nIndex][Column03->Index]);
  368. if (!FRAMEOpenMap1->MapStart) return;
  369. if (sLinkId != "")
  370. {
  371. sJs.printf(L"extentLayerObject(%d, '%s')", LyrTp_Traffic, sLinkId.c_str());
  372. FRAMEOpenMap1->ExecScript(sJs);
  373. }
  374. sJs.printf(L"selectPos(0, '%s', '%s')", sX.c_str(), sY.c_str());
  375. FRAMEOpenMap1->ExecScript(sJs);
  376. }
  377. //---------------------------------------------------------------------------
  378. void __fastcall TITSSELAM::UpdateNode()
  379. {
  380. if (!FRAMEOpenMap1->MapStart) return;
  381. sJs.printf(L"removeLayerObject(%d)", FLayerIdx);
  382. FRAMEOpenMap1->ExecScript(sJs);
  383. String arrObj = "";
  384. String sTemp;
  385. int cnt = 0;
  386. ItsNodeManager->FLists.Lock();
  387. try
  388. {
  389. FOR_STL(TItsNode*, pObj, ItsNodeManager->FLists)
  390. {
  391. if (arrObj != "") arrObj += "|";
  392. if (cnt == 0)
  393. {
  394. sTemp.printf(L"%s,%s,%s,%.6f,%.6f,0,0,0,0", pObj->NODE_ID.c_str(), pObj->NODE_ID.c_str(), pObj->NODE_NAME.c_str(), pObj->X_CRDN, pObj->Y_CRDN);
  395. arrObj += sTemp;
  396. sJs.printf(L"addFacility(%d, '%s')", FLayerIdx, arrObj.c_str());
  397. FRAMEOpenMap1->ExecScript(sJs);
  398. }
  399. else
  400. {
  401. sTemp.printf(L"%s,%s,%s,%.6f,%.6f,0,0,0,0", pObj->NODE_ID.c_str(), pObj->NODE_ID.c_str(), pObj->NODE_NAME.c_str(), pObj->X_CRDN, pObj->Y_CRDN);
  402. sJs.printf(L"addFacilityObject(%d, '%s')", FLayerIdx, sTemp.c_str());
  403. FRAMEOpenMap1->ExecScript(sJs);
  404. }
  405. cnt++;
  406. }
  407. }
  408. __finally
  409. {
  410. ItsNodeManager->FLists.UnLock();
  411. #if 0
  412. if (arrObj != "")
  413. {
  414. sJs.printf(L"addFacility(%d, '%s')", FLayerIdx, arrObj.c_str());
  415. FRAMEOpenMap1->ExecScript(sJs);
  416. }
  417. #endif
  418. sJs.printf(L"showLayer(%d, 0)", FLayerIdx);
  419. FRAMEOpenMap1->ExecScript(sJs);
  420. }
  421. }
  422. //---------------------------------------------------------------------------
  423. void __fastcall TITSSELAM::UpdateEditLink()
  424. {
  425. if (!FRAMEOpenMap1->MapStart) return;
  426. TItsVrtx* pVrtx;
  427. TItsNode* pNode;
  428. String STRT_NM;
  429. String END_NM;
  430. try
  431. {
  432. if (FLinkLevel == 1)
  433. {
  434. ItsLinkManager->FLists.Lock();
  435. try
  436. {
  437. FOR_STL(TItsLink*, pLink, ItsLinkManager->FLists)
  438. {
  439. if (pLink->DEL_YN == "Y") continue;
  440. if (pLink->IsVertex)
  441. {
  442. pNode = ItsNodeManager->FLists.Find(pLink->F_NODE_ID);
  443. if (pNode) STRT_NM = pNode->NODE_NAME; else STRT_NM = " ";
  444. pNode = ItsNodeManager->FLists.Find(pLink->T_NODE_ID);
  445. if (pNode) END_NM = pNode->NODE_NAME; else END_NM = " ";
  446. sJs.printf(L"addEditLink('%s', '%s', '%s', '%s', '%s', '%s')",
  447. pLink->LINK_ID.c_str(),
  448. pLink->ROAD_NAME.c_str(),
  449. STRT_NM.c_str(),
  450. END_NM.c_str(),
  451. pLink->X_CRDN_ARR.c_str(),
  452. pLink->Y_CRDN_ARR.c_str());
  453. FRAMEOpenMap1->ExecScript(sJs);
  454. }
  455. }
  456. }
  457. __finally
  458. {
  459. ItsLinkManager->FLists.UnLock();
  460. }
  461. FRAMEOpenMap1->ExecScript("makeEditLinkLayer()");
  462. }
  463. else
  464. if (FLinkLevel == 2)
  465. {
  466. ItsIfscManager->FLists.Lock();
  467. try
  468. {
  469. FOR_STL(TItsIfsc*, pIfsc, ItsIfscManager->FLists)
  470. {
  471. if (pIfsc->DEL_YN == "Y") continue;
  472. if (pIfsc->IsVertex)
  473. {
  474. sJs.printf(L"addEditLink('%s', '%s', '%s', '%s', '%s', '%s')",
  475. pIfsc->IFSC_ID.c_str(),
  476. pIfsc->IFSC_NM.c_str(),
  477. pIfsc->STRT_NM.c_str(),
  478. pIfsc->END_NM.c_str(),
  479. pIfsc->X_CRDN_ARR.c_str(),
  480. pIfsc->Y_CRDN_ARR.c_str());
  481. FRAMEOpenMap1->ExecScript(sJs);
  482. }
  483. }
  484. }
  485. __finally
  486. {
  487. ItsIfscManager->FLists.UnLock();
  488. }
  489. FRAMEOpenMap1->ExecScript("makeEditLinkLayer()");
  490. }
  491. else
  492. if (FLinkLevel == 3)
  493. {
  494. ItsRoadManager->FLists.Lock();
  495. try
  496. {
  497. FOR_STL(TItsRoad*, pRoad, ItsRoadManager->FLists)
  498. {
  499. if (pRoad->DEL_YN == "Y") continue;
  500. if (pRoad->IsVertex)
  501. {
  502. sJs.printf(L"addEditLink('%s', '%s', '%s', '%s', '%s', '%s')",
  503. pRoad->ROAD_ID.c_str(),
  504. pRoad->ROAD_NM.c_str(),
  505. pRoad->STRT_NM.c_str(),
  506. pRoad->END_NM.c_str(),
  507. pRoad->X_CRDN_ARR.c_str(),
  508. pRoad->Y_CRDN_ARR.c_str());
  509. FRAMEOpenMap1->ExecScript(sJs);
  510. }
  511. }
  512. }
  513. __finally
  514. {
  515. ItsRoadManager->FLists.UnLock();
  516. }
  517. FRAMEOpenMap1->ExecScript("makeEditLinkLayer()");
  518. }
  519. }
  520. catch(...)
  521. {
  522. }
  523. }
  524. //---------------------------------------------------------------------------
  525. void __fastcall TITSSELAM::OpenMapCallback(TObject *ASender, const String AFunc, const String AArgs, const bool AFirst)
  526. {
  527. try
  528. {
  529. if (AFirst)
  530. {
  531. //지도를 편집모드로 변경
  532. sJs.printf(L"setEditMode(%d, 1)", FLayerIdx);
  533. FRAMEOpenMap1->ExecScript(sJs);
  534. //FRAMEOpenMap1->ExecScript("setMouseClick(1)");
  535. //노드아이콘 등록
  536. UpdateNode();
  537. //편집레이어 생성
  538. FRAMEOpenMap1->ExecScript("initEditLayer()");
  539. //배경링크레이어 생성
  540. UpdateEditLink();
  541. //sJs.printf(L"extentLayer(%d)", FLayerIdx);
  542. //FRAMEOpenMap1->ExecScript(sJs);
  543. return;
  544. }
  545. if (AFunc.Pos("onlinkclick"))
  546. {
  547. TStringList *pStringList = new TStringList;
  548. pStringList->CommaText = AArgs;
  549. try
  550. {
  551. String sLyrType = pStringList->Strings[0];
  552. String sLinkId = pStringList->Strings[1];
  553. String sLinkX = pStringList->Strings[2];
  554. String sLinkY = pStringList->Strings[3];
  555. String sX = pStringList->Strings[4];
  556. String sY = pStringList->Strings[5];
  557. UpdateSelect(sLinkId, sX.ToDouble(), sY.ToDouble());
  558. }
  559. catch(Exception &e)
  560. {
  561. }
  562. delete pStringList;
  563. }
  564. }
  565. catch(Exception &exception)
  566. {
  567. }
  568. }
  569. //---------------------------------------------------------------------------
  570. void __fastcall TITSSELAM::RefreshLink()
  571. {
  572. if (!FRAMEOpenMap1->MapStart) return;
  573. try
  574. {
  575. int nRow;
  576. TcxDataController *pGDC = TvList->DataController;
  577. TvList->BeginUpdate();
  578. try
  579. {
  580. int nSeq = 1;
  581. for (int ii = 0; ii < pGDC->RecordCount; ii++)
  582. {
  583. pGDC->Values[ii][ColSeq->Index] = nSeq;
  584. String sLinkId = pGDC->Values[ii][Column01->Index];
  585. sJs.printf(L"updateEditLink('%s', %d)", sLinkId.c_str(), nSeq);
  586. FRAMEOpenMap1->ExecScript(sJs);
  587. if (nSeq++ > ITSMAP_MAX_DISPCOLOR) nSeq = 1;
  588. }
  589. }
  590. catch(...)
  591. {
  592. }
  593. }
  594. __finally
  595. {
  596. TvList->EndUpdate();
  597. }
  598. }
  599. //---------------------------------------------------------------------------
  600. void __fastcall TITSSELAM::ColSeqCustomDrawCell(TcxCustomGridTableView *Sender, TcxCanvas *ACanvas, TcxGridTableDataCellViewInfo *AViewInfo,
  601. bool &ADone)
  602. {
  603. if (AViewInfo->GridRecord->RecordIndex < 0)
  604. return;
  605. if (VarIsNull(AViewInfo->Value))
  606. return;
  607. try
  608. {
  609. int nIdx = AViewInfo->Value;
  610. if (nIdx < 0)
  611. return;
  612. ACanvas->Brush->Color = ITSMap_GetDisplayColor(nIdx);
  613. ACanvas->Font->Color = ACanvas->Brush->Color;
  614. }
  615. catch(...)
  616. {
  617. }
  618. }
  619. //---------------------------------------------------------------------------
  620. void __fastcall TITSSELAM::FormCloseQuery(TObject *Sender, bool &CanClose)
  621. {
  622. FRAMEOpenMap1->OnCloseQuery(CanClose);
  623. }
  624. //---------------------------------------------------------------------------