int CReportCtrl::InsertItem(UINT nMask, int nItem, LPCTSTR lpItem, UINT nState, UINT nStateMask, int nImage, LPARAM lParam) { EndEdit(TRUE); _UnsetSortedColumn(); const int IDX = CListCtrl::InsertItem(nMask, nItem, lpItem, nState, nStateMask, nImage, lParam); if (IDX >= 0) _AllocItemMemory(IDX); return IDX; }
int CReportCtrl::InsertItem(int nIndex, LPCTSTR lpText) { EndEdit(TRUE); _UnsetSortedColumn(); const int IDX = CListCtrl::InsertItem(nIndex, lpText); if (IDX >= 0) _AllocItemMemory(IDX); return IDX; }
int CReportCtrl::InsertItem(const LVITEM *pItem) { EndEdit(TRUE); _UnsetSortedColumn(); const int IDX = CListCtrl::InsertItem(pItem); if (IDX >= 0) _AllocItemMemory(IDX); return IDX; }
int CReportCtrl::InsertItem(int nItem, LPCTSTR lpItem, int nImage) { EndEdit(TRUE); _UnsetSortedColumn(); const int IDX = CListCtrl :: InsertItem(nItem, lpItem, nImage); if(IDX >= 0) { _AllocItemMemory(IDX); } return(IDX); }
int CReportCtrl::MoveTo(int nItem, int nNewPosition) { if(!_IsValidIndex(nItem)) { return(-1); } EndEdit(TRUE); const int ITEMS = CListCtrl :: GetItemCount(); nNewPosition = max(0, nNewPosition); nNewPosition = min(ITEMS - 1, nNewPosition); if(nItem == nNewPosition) { return(nNewPosition); } _UnsetSortedColumn(); // Backup all states and attributes const int COLS = GetColumnCount(); const DWORD STATES = GetItemStates(nItem); const DWORD DATA = CListCtrl :: GetItemData(nItem); CArray<int, int> aImages; CStringArray aTexts; aImages.SetSize(COLS); aTexts.SetSize(COLS); for(int i = 0; i < COLS; i++) { aImages[i] = GetItemImage(nItem, i); aTexts[i] = GetItemText(nItem, i); } // Delete the item CListCtrl :: DeleteItem(nItem); // Insert a new item to the new position const int IDX = CListCtrl :: InsertItem(nNewPosition, _T("")); // Restore all states & attributes to the newly inserted item for(int j = 0; j < COLS; j++) { CListCtrl :: SetItemText(IDX, j, aTexts[j]); SetItemImage(IDX, j, aImages[j]); } CListCtrl :: SetItemData(IDX, DATA); SetItemStates(IDX, STATES); return(IDX); }
BOOL CReportCtrl::SetSortable(BOOL bSet) { if (!HasColumnHeader()) return FALSE; LONG lStyle = ::GetWindowLong(GetHeaderCtrl()->GetSafeHwnd(), GWL_STYLE); if (bSet) { lStyle |= HDS_BUTTONS; } else { lStyle &= ~HDS_BUTTONS; _UnsetSortedColumn(); } ::SetWindowLong(GetHeaderCtrl()->GetSafeHwnd(), GWL_STYLE, lStyle); CListCtrl::GetHeaderCtrl()->RedrawWindow(); return TRUE; }
BOOL CReportCtrl::SwapItems(int nItem1, int nItem2) { EndEdit(TRUE); if(!_IsValidIndex(nItem1) || !_IsValidIndex(nItem2)) { return(FALSE); } if(nItem1 == nItem2) { return(TRUE); } _UnsetSortedColumn(); // record previous states first const DWORD STATES1 = GetItemStates(nItem1); const DWORD STATES2 = GetItemStates(nItem2); const DWORD DATA1 = CListCtrl :: GetItemData(nItem1); const DWORD DATA2 = CListCtrl :: GetItemData(nItem2); // swap item texts and images for(int i = 0; i < GetColumnCount(); i++) { CString str = GetItemText(nItem1, i); CListCtrl :: SetItemText(nItem1, i, GetItemText(nItem2, i)); CListCtrl :: SetItemText(nItem2, i, str); UINT nImg = GetItemImage(nItem1, i); SetItemImage(nItem1, i, GetItemImage(nItem2, i)); SetItemImage(nItem2, i, nImg); } // swap item data CListCtrl :: SetItemData(nItem1, DATA2); CListCtrl :: SetItemData(nItem2, DATA1); // restore states SetItemStates(nItem1, STATES2); SetItemStates(nItem2, STATES1); return(TRUE); }
BOOL CReportCtrl::EndEdit(BOOL bCommit) { if (!_IsEditVisible()) return FALSE; CString str; m_pWndEdit->GetWindowText(str); BOOL bChanged = bCommit && str.Compare(GetItemText(m_ptEditting.x, m_ptEditting.y)) != 0; if (bChanged) { // update the list item CListCtrl::SetItemText(m_ptEditting.x, m_ptEditting.y, str); _UnsetSortedColumn(); GetParent()->SendMessage(WM_EDIT_COMMITTED, (WPARAM)m_ptEditting.x, (LPARAM)m_ptEditting.y); } m_pWndEdit->ShowWindow(SW_HIDE); m_ptEditting.x = -1; m_ptEditting.y = -1; return bChanged; }
BOOL CReportCtrlEx::EndCombo(BOOL bCommit) { //if (!_IsEditVisible()) // return FALSE; //if (m_pWndCombo->IsWindowVisible()) // return FALSE; CString str; m_pWndCombo->GetWindowText(str); BOOL bChanged = bCommit && str.Compare(GetItemText(m_ptEditting.x, m_ptEditting.y)) != 0; if (bChanged) { // update the list item CListCtrl::SetItemText(m_ptEditting.x, m_ptEditting.y, str); _UnsetSortedColumn(); GetParent()->SendMessage(WM_EDIT_COMMITTED, (WPARAM)m_ptEditting.x, (LPARAM)m_ptEditting.y); // Si el Tipo no es Alquiler se elimina lo que tuviera Tip de Alquiler if (m_ptEditting.y == 3) { if (str == ALQUILER) { CString strTipoAlquiler = GetItemText(m_ptEditting.x, 4); if (strTipoAlquiler.IsEmpty()) SetItemTextCB(m_ptEditting.x, 4, MENSUAL); } else if (str != ALQUILER) SetItemTextCB(m_ptEditting.x, 4, ""); } } m_pWndCombo->ShowWindow(SW_HIDE); m_ptEditting.x = -1; m_ptEditting.y = -1; return bChanged; }
int CReportCtrl::InsertItemEx(int nItem, LPCTSTR lpText, ...) { EndEdit(TRUE); _UnsetSortedColumn(); const int IDX = CListCtrl :: InsertItem(nItem, lpText); if(IDX < 0) { return(-1); } va_list list; va_start(list, lpText); for(int iColumn = 1; iColumn < GetColumnCount(); iColumn++) { LPCTSTR lp = va_arg(list, LPCTSTR); if(lp != NULL) { CListCtrl :: SetItemText(IDX, iColumn, lp); } else { break; } } va_end(list); if(IDX >= 0) { _AllocItemMemory(IDX); } return(IDX); }
BOOL CReportCtrl::SetItemText(int nItem, int nSubItem, LPCTSTR lpText) { EndEdit(TRUE); _UnsetSortedColumn(); return CListCtrl::SetItemText(nItem, nSubItem, lpText); }