void CuEditableListCtrlGenericDerived::EditValue (int iItem, int iSubItem, CRect rcCell) { DERIVEDLINEINFO* lData = (DERIVEDLINEINFO*)GetItemData(iItem); if (!lData) return; if (iSubItem != 1 || iSubItem == 3) return; switch (lData->iunittype) { case GEN_LINE_TYPE_BOOL: break; case GEN_LINE_TYPE_NUM : SetEditNumber (iItem, iSubItem, rcCell); break; case GEN_LINE_TYPE_SPIN: SetEditSpin (iItem, iSubItem, rcCell); break; case GEN_LINE_TYPE_STRING: SetEditText (iItem, iSubItem, rcCell); break; default: SetEditText (iItem, iSubItem, rcCell); break; } }
void CuEditableListCtrlComponent::OnOpenCellEditor(UINT nFlags, CPoint point) { int index, iColumnNumber; int iItem = -1, iSubItem = -1; int iNumMin = 0; int iNumMax = UD_MAXVAL; CRect rect, rCell; UINT flags; index = HitTest (point, &flags); if (index < 0) return; GetItemRect (index, rect, LVIR_BOUNDS); if (!GetCellRect (rect, point, rCell, iColumnNumber)) return; rCell.top -= 2; rCell.bottom += 2; // Emb Sept 24, 97: modify for preliminary test at low level side CuCbfListViewItem* pItemData = (CuCbfListViewItem*)GetItemData(index); LPCOMPONENTINFO lpComponentInfo = &pItemData->m_componentInfo; BOOL bCanEditName = VCBFllCanNameBeEdited(lpComponentInfo); BOOL bCanEditCount = VCBFllCanCountBeEdited(lpComponentInfo); HideProperty(); switch (iColumnNumber) { case 1: if (bCanEditName) SetEditText (index, iColumnNumber, rCell); else MessageBeep(MB_ICONEXCLAMATION); break; case 2: if (bCanEditCount) SetEditSpin (index, iColumnNumber, rCell, iNumMin, iNumMax); else MessageBeep(MB_ICONEXCLAMATION); break; default: break; } }