void CComputerGrid::UpdateComputerInfoToRow(DWORD_PTR dwData, CComputerInfo& computer) { computer.SetUpdateState(CComputerInfo::EUS_NORMAL); CBCGPGridRow* pRow = FindRowByData(dwData); if (pRow != NULL) //已经存在的行 { if (CheckShowCondition(computer)) { UpdateRowData(pRow, computer); } else { RemoveRow(pRow->GetRowId()); //移除该行 } } else //添加新行 { if (CheckShowCondition(computer)) { pRow = CreateRow(GetColumnCount()); pRow->SetData(dwData); UpdateRowData(pRow, computer); AddRow(pRow, FALSE); } } }
// 重新加载现场测道数据 void CSensorListCtrl::OnReloadSiteDataCMD() { // 现场数据对象初始化 OnSiteDataInit(); matrix_data::data_base_helper::device_info_map& map = data_base_helper_->get_devices_info(); matrix_data::data_base_helper::device_info_map::const_iterator itr; matrix_data::data_base_helper::device_info di; CBCGPGridRow* pRow = NULL; data_base_helper_->devices_info_lock(); for(itr = map.begin(); itr != map.end(); ++itr) { pRow = FindRowByData(itr->second.ip_, FALSE); // 填充本次数据 if(pRow != NULL) { SetRowData(pRow, itr->second); // 设置一行的数据 } else { pRow = CreateRow(GetColumnCount()); SetRowData(pRow, itr->second); AddRow(pRow, FALSE); } } // 删除没有用到的行 for(int i = (GetRowCount() - 1); i >= 0; i--) { pRow = GetRow(i); if(pRow != NULL) { // 找到行 di.ip_ = pRow->GetData(); if(data_base_helper_->find_device(di.ip_, di)) RemoveRow(i, FALSE); } } data_base_helper_->devices_info_unlock(); AdjustLayout (); }
void CActiveMemberGrid::RedrawUpdateActiveMembers() { while (TRUE) { UINT nMemberId = m_lpActiveMemberList->GetUpdateActiveMemberId(); if (nMemberId > 0) { CActiveMember ActiveMember; if (m_lpActiveMemberList->GetActiveMember(nMemberId, ActiveMember)) { CBCGPGridRow* pRow = FindRowByData(ActiveMember.GetMemberID(), FALSE); if (pRow != NULL)//已经存在的 { UpdateRowData(pRow, ActiveMember); } else //新增加的 { AddNewRow(ActiveMember); } } else { //已经删除了 CBCGPGridRow* pRow = FindRowByData(nMemberId, FALSE); if (pRow != NULL) { RemoveRow(pRow->GetRowId()); } } } else { //更新完毕了 break; } } }
void CComputerGrid::UpdateAllComputersUseTime() { for (INT_PTR i = 0; i < m_lpComputerList->GetCount(); i++) { CComputerInfo& computer = m_lpComputerList->GetComputer(i); CBCGPGridRow* pRow = FindRowByData(i); if (pRow != NULL) { pRow->GetItem(6)->SetValue(computer.GetUseTimeAsString().GetString()); } } }
// 为新的测试数据刷新显示 void CSensorListCtrl::OnRefreshForNewTestValue(int iTestType) { CBCGPGridRow* pRow = NULL; matrix_data::data_base_helper::device_info_map map = data_base_helper_->get_devices_info(); matrix_data::data_base_helper::device_info_map::const_iterator itr; for(itr = map.begin(); itr != map.end(); ++itr) { pRow = FindRowByData(itr->second.ip_, FALSE); if(pRow != NULL) { // 找到行 SetRowDataOfTestByTestType(pRow, itr->second, iTestType); // 判断:不是新加检波器的初始测试 if(iTestType != 45) SetRowDataOfTestByTestType(pRow, itr->second, 40); } } }
void CActiveMemberGrid::UpdateAllComputersUseTime() { CActiveMember ActiveMember; CSingleLock lock(&m_lpActiveMemberList->ActiveMemberListLock, TRUE); m_lpActiveMemberList->StartEnumActiveMember(); while (m_lpActiveMemberList->GetEachActiveMember(ActiveMember)) { CBCGPGridRow* pRow = FindRowByData(ActiveMember.GetMemberID()); if (pRow != NULL) { pRow->GetItem(7)->SetValue(ActiveMember.GetUseTimeAsString().GetString()); } } }