// 统计各类规则数量 int CDlgAddCheckRule::GetRuleCount(HTREEITEM item) { if (!m_treeCheckRule.ItemHasChildren(item)) { return 1; } int nCount = 0; HTREEITEM itemChild; itemChild = m_treeCheckRule.GetChildItem(item); nCount += GetRuleCount(itemChild); while (1) { itemChild = m_treeCheckRule.GetNextSiblingItem(itemChild); if (!itemChild) break; nCount += GetRuleCount(itemChild); } CString strItemText = m_treeCheckRule.GetItemText(item); strItemText.Format(L"%s(%d)", strItemText, nCount); m_treeCheckRule.SetItemText(item, strItemText); return nCount; }
void CTDLFindTaskExpressionListCtrl::BuildListCtrl() { DeleteAllItems(); for (int nParam = 0; nParam < GetRuleCount(); nParam++) { const SEARCHPARAM& sp = m_aSearchParams[nParam]; // attrib CString sAttrib = m_cbAttributes.GetAttributeName(sp); int nItem = InsertItem(nParam, sAttrib); // operator CString sOp = GetOpName(sp.GetOperator()); SetItemText(nItem, OPERATOR, sOp); // value UpdateValueColumnText(nItem); // and/or (but not for last row) if (nParam < GetRuleCount() - 1) { CEnString sAndOr(sp.GetAnd() ? IDS_FP_AND : IDS_FP_OR); SetItemText(nItem, ANDOR, sAndOr); } } ValidateListData(); SetCurSel(0); }
BOOL CTDLFindTaskExpressionListCtrl::DeleteSelectedCell() { int nRow, nCol; GetCurSel(nRow, nCol); if (nRow < GetRuleCount()) { if (nCol == ATTRIB) { CInputListCtrl::DeleteSelectedCell(); m_aSearchParams.RemoveAt(nRow); ValidateListData(); SetCurSel(nRow); return TRUE; } else if (nCol == VALUE) // clear text { SetItemText(nRow, nCol, _T("")); m_aSearchParams[nRow].ClearValue(); } } // else return FALSE; }
void CTDLFindTaskExpressionListCtrl::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags) { int nItem, nCol; GetCurSel(nItem, nCol); if (GetRuleCount() > 0 || nCol == ATTRIB) { // if the user typed an alphanumeric char then begin editing automatically // numeric keys only work for value column if (isalpha(nChar) || (nCol == VALUE && isdigit(nChar))) { EditCell(nItem, nCol); // forward key down on to edit control CWnd* pEdit = GetEditControl(nItem, nCol); if (pEdit) { pEdit->PostMessage(WM_CHAR, nChar, MAKELPARAM(nRepCnt, nFlags)); return; // eat it } } } CInputListCtrl::OnChar(nChar, nRepCnt, nFlags); }
CWnd* CTDLFindTaskExpressionListCtrl::GetEditControl(int nItem, int nCol) { if (nItem < 0 || nItem > GetRuleCount() || nCol > ANDOR) return NULL; const SEARCHPARAM& sp = m_aSearchParams[nItem]; switch (nCol) { case ATTRIB: return &m_cbAttributes; case OPERATOR: if (!sp.AttributeIs(TDCA_NONE)) { return &m_cbOperators; } break; case VALUE: if (sp.OperatorIs(FO_SET) || sp.OperatorIs(FO_NOT_SET)) { // handled by operator } else { FIND_ATTRIBTYPE nType = sp.GetAttribType(); switch (nType) { case FT_DATE: return &m_dtDate; case FT_TIME: return &m_eTime; case FT_BOOL: // do nothing: it's handled by the operator break; case FT_NONE: // do nothing. break; case FT_STRING: case FT_DATE_REL: default: return CInputListCtrl::GetEditControl(); } } break; case ANDOR: return &m_cbAndOr; } // all else return NULL; }
void CTDLFindTaskExpressionListCtrl::RefreshAndOrColumnText() { for (int nParam = 0; nParam < GetRuleCount(); nParam++) { const SEARCHPARAM& sp = m_aSearchParams[nParam]; // and/or (but not for last row) if (nParam < GetRuleCount() - 1) { CEnString sAndOr(sp.GetAnd() ? IDS_FP_AND : IDS_FP_OR); SetItemText(nParam, ANDOR, sAndOr); } else { SetItemText(nParam, ANDOR, _T("")); } } }
IL_COLUMNTYPE CTDLFindTaskExpressionListCtrl::GetCellType(int nRow, int nCol) const { if (nRow < 0 || nRow >= GetRuleCount() || nCol > ANDOR) { return CInputListCtrl::GetCellType(nRow, nCol); } const SEARCHPARAM& sp = m_aSearchParams[nRow]; switch (nCol) { case ATTRIB: return ILCT_DROPLIST; case OPERATOR: if (!sp.AttributeIs(TDCA_NONE)) { return ILCT_DROPLIST; } break; case VALUE: if (sp.OperatorIs(FO_SET) || sp.OperatorIs(FO_NOT_SET)) { // handled by operator } else { switch (sp.GetAttribType()) { case FT_DATE: return ILCT_DATE; case FT_TIME: // do nothing. break; case FT_BOOL: // do nothing: it's handled by the operator break; case FT_NONE: // do nothing. break; } } break; case ANDOR: return ILCT_DROPLIST; } // all else return CInputListCtrl::GetCellType(nRow, nCol); }
BOOL CTDLFindTaskExpressionListCtrl::AddRule() { SEARCHPARAM sp(TDCA_TASKNAMEORCOMMENTS, FOP_INCLUDES); int nRow = InsertRule(GetRuleCount(), sp); // make sure the 'and/or' text of the preceding rule is set RefreshAndOrColumnText(); SetCurSel(nRow, ATTRIB); EnsureVisible(nRow, FALSE); return TRUE; }
void CTDLFindTaskExpressionListCtrl::EditCell(int nItem, int nCol) { // handle new rules if (nItem == GetRuleCount() && nCol == ATTRIB) AddRule(); CWnd* pEdit = GetEditControl(nItem, nCol); ASSERT (pEdit); if (!pEdit) return; const SEARCHPARAM& sp = m_aSearchParams[nItem]; switch (nCol) { case ATTRIB: case OPERATOR: case ANDOR: ShowControl(*pEdit, nItem, nCol); break; case VALUE: if (sp.GetOperator() != FOP_SET && sp.GetOperator() != FOP_NOT_SET) { switch (sp.GetAttribType()) { case FT_DATE: case FT_TIME: ShowControl(*pEdit, nItem, nCol); break; default: PrepareEdit(nItem, nCol); if (pEdit == &m_editBox) CInputListCtrl::EditCell(nItem, nCol); else ShowControl(*pEdit, nItem, nCol); } } break; } }
BOOL CTDLFindTaskExpressionListCtrl::AddRule() { SEARCHPARAM sp(TDCA_TASKNAMEORCOMMENTS, FO_INCLUDES); int nRow = InsertRule(GetRuleCount(), sp); // make sure the 'and/or' text of the preceding rule is set if (nRow > 0) { SEARCHPARAM& spPrev = m_aSearchParams[nRow - 1]; CEnString sAndOr(spPrev.GetAnd() ? IDS_FP_AND : IDS_FP_OR); SetItemText(nRow - 1, ANDOR, sAndOr); } SetCurSel(nRow, ATTRIB); EnsureVisible(nRow, FALSE); return TRUE; }
int CTDLFindTaskExpressionListCtrl::InsertRule(int nRow, const SEARCHPARAM& sp) { m_aSearchParams.InsertAt(nRow, sp); CString sItem = m_cbAttributes.GetAttributeName(sp); int nNew = InsertItem(nRow, sItem); SetItemText(nNew, OPERATOR, GetOpName(sp.GetOperator())); UpdateValueColumnText(nRow); // omit and/or for last rule if (nRow < GetRuleCount() - 1) { CEnString sAndOr(sp.GetAnd() ? IDS_FP_AND : IDS_FP_OR); SetItemText(nNew, ANDOR, sAndOr); } return nNew; }
void CTDLFindTaskExpressionListCtrl::ValidateListData() const { #ifdef _DEBUG for (int nRule = 0; nRule < GetRuleCount(); nRule++) { const SEARCHPARAM& rule = m_aSearchParams[nRule]; // check matching attribute text CString sRuleAttrib = m_cbAttributes.GetAttributeName(rule); CString sListAttrib = GetItemText(nRule, ATTRIB); ASSERT (sRuleAttrib == sListAttrib); // check matching operator text CString sRuleOp = GetOpName(rule.GetOperator()); CString sListOp = GetItemText(nRule, OPERATOR); ASSERT (sListOp.IsEmpty() || sRuleOp == sListOp); // check valid operator ASSERT(rule.HasValidOperator()); } #endif }
void CTDLFindTaskExpressionListCtrl::PrepareControl(CWnd& ctrl, int nRow, int nCol) { UNREFERENCED_PARAMETER(ctrl); if (!GetRuleCount()) return; SEARCHPARAM& sp = m_aSearchParams[nRow]; switch (nCol) { case ATTRIB: { ASSERT (&ctrl == &m_cbAttributes); m_cbAttributes.SelectAttribute(sp); CDialogHelper::RefreshMaxDropWidth(m_cbAttributes); } break; case OPERATOR: { ASSERT (&ctrl == &m_cbOperators); m_cbOperators.ResetContent(); FIND_ATTRIBTYPE nType = sp.GetAttribType(); switch (nType) { case FT_STRING: AddOperatorToCombo(FOP_SET); AddOperatorToCombo(FOP_NOT_SET); AddOperatorToCombo(FOP_EQUALS); AddOperatorToCombo(FOP_NOT_EQUALS); AddOperatorToCombo(FOP_INCLUDES); AddOperatorToCombo(FOP_NOT_INCLUDES); break; case FT_INTEGER: case FT_DOUBLE: case FT_TIME: AddOperatorToCombo(FOP_SET); AddOperatorToCombo(FOP_NOT_SET); AddOperatorToCombo(FOP_EQUALS); AddOperatorToCombo(FOP_NOT_EQUALS); AddOperatorToCombo(FOP_GREATER); AddOperatorToCombo(FOP_GREATER_OR_EQUAL); AddOperatorToCombo(FOP_LESS); AddOperatorToCombo(FOP_LESS_OR_EQUAL); break; case FT_DATE: AddOperatorToCombo(FOP_SET); AddOperatorToCombo(FOP_NOT_SET); // fall thru case FT_DATE_REL: AddOperatorToCombo(FOP_EQUALS); AddOperatorToCombo(FOP_NOT_EQUALS); AddOperatorToCombo(FOP_AFTER); AddOperatorToCombo(FOP_ON_OR_AFTER); AddOperatorToCombo(FOP_BEFORE); AddOperatorToCombo(FOP_ON_OR_BEFORE); break; case FT_BOOL: AddOperatorToCombo(FOP_SET); AddOperatorToCombo(FOP_NOT_SET); break; } CDialogHelper::SelectItemByData(m_cbOperators, (DWORD)sp.GetOperator()); } break; case ANDOR: { ASSERT (&ctrl == &m_cbAndOr); if (sp.GetAnd()) m_cbAndOr.SelectString(-1, CEnString(IDS_FP_AND)); else m_cbAndOr.SelectString(-1, CEnString(IDS_FP_OR)); } break; case VALUE: if (&ctrl == &m_dtcDate) { // if the rule does not yet have a date then set it now to // the current date because that's whats the date ctrl will default to if (!CDateHelper::IsDateSet(sp.ValueAsDate())) { sp.SetValue(COleDateTime::GetCurrentTime()); SetItemText(nRow, nCol, sp.ValueAsDate().Format(VAR_DATEVALUEONLY)); } else { m_dtcDate.SetTime(sp.ValueAsDouble()); } } else if (&ctrl == &m_eTime) { m_eTime.SetTime(sp.ValueAsDouble(), (TCHAR)sp.GetFlags()); } else if (&ctrl == &m_cbListValues) { m_cbListValues.ResetContent(); TDCCUSTOMATTRIBUTEDEFINITION attribDef; if (CTDCCustomAttributeHelper::GetAttributeDef(sp.GetAttribute(), m_aAttribDefs, attribDef)) { if (attribDef.IsList()) { int nItem = attribDef.aDefaultListData.GetSize(); while (nItem--) m_cbListValues.AddString(attribDef.aDefaultListData[nItem]); nItem = attribDef.aAutoListData.GetSize(); while (nItem--) m_cbListValues.AddString(attribDef.aAutoListData[nItem]); } } else { switch (sp.GetAttribute()) { case TDCA_CATEGORY: CDialogHelper::SetComboBoxItems(m_cbListValues, m_tldListContents.aCategory); break; case TDCA_ALLOCTO: CDialogHelper::SetComboBoxItems(m_cbListValues, m_tldListContents.aAllocTo); break; case TDCA_ALLOCBY: CDialogHelper::SetComboBoxItems(m_cbListValues, m_tldListContents.aAllocBy); break; case TDCA_VERSION: CDialogHelper::SetComboBoxItems(m_cbListValues, m_tldListContents.aVersion); break; case TDCA_TAGS: CDialogHelper::SetComboBoxItems(m_cbListValues, m_tldListContents.aTags); break; case TDCA_STATUS: CDialogHelper::SetComboBoxItems(m_cbListValues, m_tldListContents.aStatus); break; } } m_cbListValues.SelectString(0, sp.ValueAsString()); } else if (&ctrl == &m_cbPriority) { m_cbPriority.SetSelectedPriority(sp.ValueAsInteger()); } else if (&ctrl == &m_cbRisk) { m_cbRisk.SetSelectedRisk(sp.ValueAsInteger()); } break; } }
BOOL CTDLFindTaskExpressionListCtrl::CanMoveSelectedRuleDown() const { return (GetCurSel() < GetRuleCount() - 1); }
BOOL CTDLFindTaskExpressionListCtrl::CanMoveSelectedRuleUp() const { int nRow = GetCurSel(); return (nRow > 0 && nRow < GetRuleCount()); }
IL_COLUMNTYPE CTDLFindTaskExpressionListCtrl::GetCellType(int nRow, int nCol) const { if (nRow < 0 || nRow >= GetRuleCount() || nCol > ANDOR) { return CInputListCtrl::GetCellType(nRow, nCol); } const SEARCHPARAM& sp = m_aSearchParams[nRow]; switch (nCol) { case ATTRIB: return ILCT_DROPLIST; case OPERATOR: if (!sp.AttributeIs(TDCA_NONE)) { return ILCT_DROPLIST; } break; case VALUE: if (sp.OperatorIs(FOP_SET) || sp.OperatorIs(FOP_NOT_SET)) { // handled by operator } else { switch (sp.GetAttribType()) { case FT_DATE: return ILCT_DATE; case FT_TIME: // do nothing. break; case FT_BOOL: // do nothing: it's handled by the operator break; case FT_NONE: // do nothing. break; default: { TDC_ATTRIBUTE nAttrib = sp.GetAttribute(); switch (nAttrib) { case TDCA_ALLOCTO: case TDCA_ALLOCBY: case TDCA_STATUS: case TDCA_CATEGORY: case TDCA_VERSION: case TDCA_TAGS: case TDCA_PRIORITY: case TDCA_RISK: return ILCT_DROPLIST; default: { TDCCUSTOMATTRIBUTEDEFINITION attribDef; if (CTDCCustomAttributeHelper::GetAttributeDef(nAttrib, m_aAttribDefs, attribDef)) { if (attribDef.IsList()) return ILCT_DROPLIST; } } break; } } } } break; case ANDOR: return ILCT_DROPLIST; } // all else return CInputListCtrl::GetCellType(nRow, nCol); }
CWnd* CTDLFindTaskExpressionListCtrl::GetEditControl(int nItem, int nCol) { if (nItem < 0 || nItem > GetRuleCount() || nCol > ANDOR) return NULL; const SEARCHPARAM& sp = m_aSearchParams[nItem]; switch (nCol) { case ATTRIB: return &m_cbAttributes; case OPERATOR: if (!sp.AttributeIs(TDCA_NONE)) { return &m_cbOperators; } break; case VALUE: if (sp.OperatorIs(FOP_SET) || sp.OperatorIs(FOP_NOT_SET)) { // handled by operator } else { FIND_ATTRIBTYPE nType = sp.GetAttribType(); switch (nType) { case FT_DATE: return &m_dtcDate; case FT_TIME: return &m_eTime; case FT_BOOL: // do nothing: it's handled by the operator break; case FT_NONE: // do nothing. break; default: switch (sp.GetAttribute()) { case TDCA_ALLOCTO: case TDCA_ALLOCBY: case TDCA_STATUS: case TDCA_CATEGORY: case TDCA_VERSION: case TDCA_TAGS: return &m_cbListValues; case TDCA_PRIORITY: return &m_cbPriority; case TDCA_RISK: return &m_cbRisk; default: { TDCCUSTOMATTRIBUTEDEFINITION attribDef; if (CTDCCustomAttributeHelper::GetAttributeDef(sp.GetAttribute(), m_aAttribDefs, attribDef)) { if (attribDef.IsList()) return &m_cbListValues; } } break; } // all else return CInputListCtrl::GetEditControl(); } } break; case ANDOR: return &m_cbAndOr; } // all else return NULL; }
//=================================================================================================== // 初始化对话框 //=================================================================================================== BOOL CDlgAddCheckRule::OnInitDialog() { CDialog::OnInitDialog(); m_imageRuleNode.Create(IDB_BMP_RULESNODE, 16, 5, RGB(0, 255, 0)); m_treeCheckRule.SetImageList(&m_imageRuleNode, TVSIL_NORMAL); // 初始化导航树显示文本 HTREEITEM hRoot; // 树的根节点句柄 HTREEITEM hFirst; // 树的一级子节点句柄 HTREEITEM hSecond; // 树的二级子节点句柄 HTREEITEM hThird; // 树的三级子节点句柄 hRoot = m_treeCheckRule.InsertItem(L"检查规则库", -1, -1, TVI_ROOT); if (CheckValidLicenseByRules_MdlAttr()) { hFirst = m_treeCheckRule.InsertItem(L"模型属性检查", 0, 1, hRoot); hSecond = m_treeCheckRule.InsertItem(L"基本属性", 0, 1, hFirst); { hThird = m_treeCheckRule.InsertItem(g_strCheckRuleDesc_MdlName, 2, 4, hSecond); m_treeCheckRule.SetItemData(hThird, CRT_MDL_NAME); hThird = m_treeCheckRule.InsertItem(g_strCheckRuleDesc_CommonName, 2, 4, hSecond); m_treeCheckRule.SetItemData(hThird, CRT_MDL_COMMON_NAME); hThird = m_treeCheckRule.InsertItem(g_strCheckRuleDesc_Unit, 2, 4, hSecond); m_treeCheckRule.SetItemData(hThird, CRT_UNIT); hThird = m_treeCheckRule.InsertItem(g_strCheckRuleDesc_Tol, 2, 4, hSecond); m_treeCheckRule.SetItemData(hThird, CRT_TOL); hThird = m_treeCheckRule.InsertItem(g_strCheckRuleDesc_MdlByte, 2, 4, hSecond); m_treeCheckRule.SetItemData(hThird, CRT_MDL_BYTE); } hSecond = m_treeCheckRule.InsertItem(L"参数属性", 0, 1, hFirst); { hThird = m_treeCheckRule.InsertItem(g_strCheckRuleDesc_ParaNotExist, 2, 4, hSecond); m_treeCheckRule.SetItemData(hThird, CRT_PARA_NOTEXIST); hThird = m_treeCheckRule.InsertItem(g_strCheckRuleDesc_ParaExist, 2, 4, hSecond); m_treeCheckRule.SetItemData(hThird, CRT_PARA_EXIST); hThird = m_treeCheckRule.InsertItem(g_strCheckRuleDesc_ParaNull, 2, 4, hSecond); m_treeCheckRule.SetItemData(hThird, CRT_PARA_NULL); hThird = m_treeCheckRule.InsertItem(g_strCheckRuleDesc_ParaNotNull, 2, 4, hSecond); m_treeCheckRule.SetItemData(hThird, CRT_PARA_NOTNULL); hThird = m_treeCheckRule.InsertItem(g_strCheckRuleDesc_ParaKeyword, 2, 4, hSecond); m_treeCheckRule.SetItemData(hThird, CRT_PARA_KEYWORD); hThird = m_treeCheckRule.InsertItem(g_strCheckRuleDesc_ParaSpecifiedValue, 2, 4, hSecond); m_treeCheckRule.SetItemData(hThird, CRT_PARA_SPECIFIEDVALUE); hThird = m_treeCheckRule.InsertItem(g_strCheckRuleDesc_ParaValue, 2, 4, hSecond); m_treeCheckRule.SetItemData(hThird, CRT_PARA_VALUE); } hSecond = m_treeCheckRule.InsertItem(L"质量属性", 0, 1, hFirst); { hThird = m_treeCheckRule.InsertItem(g_strCheckRuleDesc_Quality, 2, 4, hSecond); m_treeCheckRule.SetItemData(hThird, CRT_QUALITY); hThird = m_treeCheckRule.InsertItem(g_strCheckRuleDesc_QualityProperty, 2, 4, hSecond); m_treeCheckRule.SetItemData(hThird, CRT_QUALITY_PROPERTY); } hSecond = m_treeCheckRule.InsertItem(L"材料属性", 0, 1, hFirst); { hThird = m_treeCheckRule.InsertItem(g_strCheckRuleDesc_Mat, 2, 4, hSecond); m_treeCheckRule.SetItemData(hThird, CRT_MAT); hThird = m_treeCheckRule.InsertItem(g_strCheckRuleDesc_MdlDensityValid, 2, 4, hSecond); m_treeCheckRule.SetItemData(hThird, CRT_MDL_DENSVALID); hThird = m_treeCheckRule.InsertItem(g_strCheckRuleDesc_MdlMatSystem, 2, 4, hSecond); m_treeCheckRule.SetItemData(hThird, CRT_MDL_MATSYSTEM); hThird = m_treeCheckRule.InsertItem(g_strCheckRuleDesc_MdlMatDens, 2, 4, hSecond); m_treeCheckRule.SetItemData(hThird, CRT_MDL_MATDENS); } hSecond = m_treeCheckRule.InsertItem(L"外观属性", 0, 1, hFirst); { hThird = m_treeCheckRule.InsertItem(g_strCheckRuleDesc_Appearance, 2, 4, hSecond); m_treeCheckRule.SetItemData(hThird, CRT_APPEARANCE); hThird = m_treeCheckRule.InsertItem(g_strCheckRuleDesc_ColorSystem, 2, 4, hSecond); m_treeCheckRule.SetItemData(hThird, CRT_MDL_COLORSYSTEM); } #if !(defined(DOCTOR_PROE3) || defined(DOCTOR_PROE4)) hSecond = m_treeCheckRule.InsertItem(g_strCheckRuleDesc_MdlTemplate, 2, 4, hFirst); m_treeCheckRule.SetItemData(hSecond, CRT_MDL_TEMPLATE); #endif if (g_strCustomCode.CompareNoCase(L"GX") == 0) { hSecond = m_treeCheckRule.InsertItem(g_strCheckRuleDesc_HomeMadePartName_GX, 2, 4, hFirst); m_treeCheckRule.SetItemData(hSecond, CRT_HOMEMADE_PARTNAME_GX); } } if (CheckValidLicenseByRules_MdlSpec()) { hFirst = m_treeCheckRule.InsertItem(L"建模规范性检查", 0, 1, hRoot); hSecond = m_treeCheckRule.InsertItem(L"特征规范", 0, 1, hFirst); { hThird = m_treeCheckRule.InsertItem(g_strCheckRuleDesc_FeaName, 2, 4, hSecond); m_treeCheckRule.SetItemData(hThird, CRT_FEA_NAME); hThird = m_treeCheckRule.InsertItem(g_strCheckRuleDesc_FeaSystem, 2, 4, hSecond); m_treeCheckRule.SetItemData(hThird, CRT_FEA_SYSTEM); hThird = m_treeCheckRule.InsertItem(g_strCheckRuleDesc_FeaIllegalRef, 2, 4, hSecond); m_treeCheckRule.SetItemData(hThird, CRT_ASS_FEA_ILLEGAL_REF); hThird = m_treeCheckRule.InsertItem(g_strCheckRuleDesc_FeaForLast, 2, 4, hSecond); m_treeCheckRule.SetItemData(hThird, CRT_ASS_FEA_FOR_LAST); hThird = m_treeCheckRule.InsertItem(g_strCheckRuleDesc_FeaNotReferenceEdge, 2, 4, hSecond); m_treeCheckRule.SetItemData(hThird, CRT_ASS_FEA_NOT_REFERENCE_EDGE); hThird = m_treeCheckRule.InsertItem(g_strCheckRuleDesc_NonSolidFeaHideCheck, 2, 4, hSecond); m_treeCheckRule.SetItemData(hThird, CRT_ASS_NON_SOLID_FEA_HIDE_CHECK); hThird = m_treeCheckRule.InsertItem(g_strCheckRuleDesc_SolidFeaHideCheck, 2, 4, hSecond); m_treeCheckRule.SetItemData(hThird, CRT_ASS_SOLID_FEA_HIDE_CHECK); hThird = m_treeCheckRule.InsertItem(g_strCheckRuleDesc_MdlCmd, 2, 4, hSecond); m_treeCheckRule.SetItemData(hThird, CRT_ASS_MDL_CMD); hThird = m_treeCheckRule.InsertItem(g_strCheckRuleDesc_FeaNoExternalRef, 2, 4, hSecond); m_treeCheckRule.SetItemData(hThird, CRT_ASS_FEA_NO_EXTERNAL_REF); hThird = m_treeCheckRule.InsertItem(g_strCheckRuleDesc_UnusedSketch, 2, 4, hSecond); m_treeCheckRule.SetItemData(hThird, CRT_ASS_UNUSED_SKETCH); hThird = m_treeCheckRule.InsertItem(g_strCheckRuleDesc_UnusedDatum, 2, 4, hSecond); m_treeCheckRule.SetItemData(hThird, CRT_ASS_UNUSED_DATUM); hThird = m_treeCheckRule.InsertItem(g_strCheckRuleDesc_MdlDatum, 2, 4, hSecond); m_treeCheckRule.SetItemData(hThird, CRT_ASS_MDL_DATUM); } hSecond = m_treeCheckRule.InsertItem(L"族表规范", 0, 1, hFirst); { hThird = m_treeCheckRule.InsertItem(g_strCheckRuleDesc_FamInstValid, 2, 4, hSecond); m_treeCheckRule.SetItemData(hThird, CRT_ASS_FAM_INSTVALID); hThird = m_treeCheckRule.InsertItem(g_strCheckRuleDesc_FamInstName, 2, 4, hSecond); m_treeCheckRule.SetItemData(hThird, CRT_ASS_FAM_INSTNAME); hThird = m_treeCheckRule.InsertItem(g_strCheckRuleDesc_FamInstCommonName, 2, 4, hSecond); m_treeCheckRule.SetItemData(hThird, CRT_ASS_FAM_INSTCOMMONNAME); hThird = m_treeCheckRule.InsertItem(g_strCheckRuleDesc_FamInstParaValid, 2, 4, hSecond); m_treeCheckRule.SetItemData(hThird, CRT_ASS_FAM_INSTPARAVALID); hThird = m_treeCheckRule.InsertItem(g_strCheckRuleDesc_FamInstAsm, 2, 4, hSecond); m_treeCheckRule.SetItemData(hThird, CRT_ASS_FAM_INSTASM); } hSecond = m_treeCheckRule.InsertItem(L"装配规范", 0, 1, hFirst); { hThird = m_treeCheckRule.InsertItem(g_strCheckRuleDesc_FamAssemble, 2, 4, hSecond); m_treeCheckRule.SetItemData(hThird, CRT_ASS_FAM_ASSEMBLE); hThird = m_treeCheckRule.InsertItem(g_strCheckRuleDesc_AsmConstraints, 2, 4, hSecond); m_treeCheckRule.SetItemData(hThird, CRT_ASS_ASM_CONSTRAINTS); hThird = m_treeCheckRule.InsertItem(g_strCheckRuleDesc_AsmSkel, 2, 4, hSecond); m_treeCheckRule.SetItemData(hThird, CRT_ASS_ASM_SKEL); hThird = m_treeCheckRule.InsertItem(g_strCheckRuleDesc_AsmHide, 2, 4, hSecond); m_treeCheckRule.SetItemData(hThird, CRT_ASS_ASM_HIDE); hThird = m_treeCheckRule.InsertItem(g_strCheckRuleDesc_AsmImplicit, 2, 4, hSecond); m_treeCheckRule.SetItemData(hThird, CRT_ASS_ASM_IMPLICIT); hThird = m_treeCheckRule.InsertItem(g_strCheckRuleDesc_AsmRef, 2, 4, hSecond); m_treeCheckRule.SetItemData(hThird, CRT_ASS_ASM_REF); } hSecond = m_treeCheckRule.InsertItem(L"视图规范", 0, 1, hFirst); { hThird = m_treeCheckRule.InsertItem(g_strCheckRuleDesc_LayerState, 2, 4, hSecond); m_treeCheckRule.SetItemData(hThird, CRT_ASS_LAYER_STATE); hThird = m_treeCheckRule.InsertItem(g_strCheckRuleDesc_MdlSimpRep, 2, 4, hSecond); m_treeCheckRule.SetItemData(hThird, CRT_ASS_MDL_SIMPREP); } hSecond = m_treeCheckRule.InsertItem(g_strCheckRuleDesc_MdlRegenerate, 2, 4, hFirst); m_treeCheckRule.SetItemData(hSecond, CRT_ASS_MDL_REGENERATE); hSecond = m_treeCheckRule.InsertItem(g_strCheckRuleDesc_MdlRelation, 2, 4, hFirst); m_treeCheckRule.SetItemData(hSecond, CRT_ASS_MDL_RELATION); #if !(defined(DOCTOR_PROE3) || defined(DOCTOR_PROE4)) if (g_strCustomCode.CompareNoCase(L"505") == 0) { hSecond = m_treeCheckRule.InsertItem(g_strCheckRuleDesc_AsmSystem_505, 2, 4, hFirst); m_treeCheckRule.SetItemData(hSecond, CRT_ASS_ASMSYSETM_505); hSecond = m_treeCheckRule.InsertItem(g_strCheckRuleDesc_PointFeature_505, 2, 4, hFirst); m_treeCheckRule.SetItemData(hSecond, CRT_ASS_POINTFEATURE_505); hSecond = m_treeCheckRule.InsertItem(g_strCheckRuleDesc_PubGeom_505, 2, 4, hFirst); m_treeCheckRule.SetItemData(hSecond, CRT_ASS_PUB_GEOM_505); hSecond = m_treeCheckRule.InsertItem(g_strCheckRuleDesc_FieldView_505, 2, 4, hFirst); m_treeCheckRule.SetItemData(hSecond, CRT_ASS_FIELDVIEW_505); hSecond = m_treeCheckRule.InsertItem(g_strCheckRuleDesc_CsyPolar_505, 2, 4, hFirst); m_treeCheckRule.SetItemData(hSecond, CRT_ASS_CSYPOLAR_505); hSecond = m_treeCheckRule.InsertItem(g_strCheckRuleDesc_CubicPrism_505, 2, 4, hFirst); m_treeCheckRule.SetItemData(hSecond, CRT_ASS_CUBICPRISM_505); hSecond = m_treeCheckRule.InsertItem(g_strCheckRuleDesc_CableCsys_505, 2, 4, hFirst); m_treeCheckRule.SetItemData(hSecond, CRT_ASS_CABLECSYS_505); hSecond = m_treeCheckRule.InsertItem(g_strCheckRuleDesc_SingleEquipFeat_505, 2, 4, hFirst); m_treeCheckRule.SetItemData(hSecond, CRT_ASS_SINGLEEQUIPFEAT_505); hSecond = m_treeCheckRule.InsertItem(g_strCheckRuleDesc_AsmRef_505, 2, 4, hFirst); m_treeCheckRule.SetItemData(hSecond, CRT_ASS_ASMREF_505); hSecond = m_treeCheckRule.InsertItem(g_strCheckRuleDesc_Lightweight_505, 2, 4, hFirst); m_treeCheckRule.SetItemData(hSecond, CRT_ASS_LIGHTWEIGHT_505); hSecond = m_treeCheckRule.InsertItem(g_strCheckRuleDesc_RsysMatch_505, 2, 4, hFirst); m_treeCheckRule.SetItemData(hSecond, CRT_ASS_RSYSMATCH_505); hSecond = m_treeCheckRule.InsertItem(g_strCheckRuleDesc_RsysConincide_505, 2, 4, hFirst); m_treeCheckRule.SetItemData(hSecond, CRT_ASS_RSYSCOINCIDE_505); hSecond = m_treeCheckRule.InsertItem(g_strCheckRuleDesc_SingleEquipType_505, 2, 4, hFirst); m_treeCheckRule.SetItemData(hSecond, CRT_ASS_SINGLEEQUIPTYPE_505); } #endif } if (CheckValidLicenseByRules_MdlMach()) { hFirst = m_treeCheckRule.InsertItem(L"模型可制造性检查", 0, 1, hRoot); hSecond = m_treeCheckRule.InsertItem(L"孔加工", 0, 1, hFirst); { hThird = m_treeCheckRule.InsertItem(g_strCheckRuleDesc_HoleDia, 2, 4, hSecond); m_treeCheckRule.SetItemData(hThird, CRT_HOLE_DIA); hThird = m_treeCheckRule.InsertItem(g_strCheckRuleDesc_DeepHole, 2, 4, hSecond); m_treeCheckRule.SetItemData(hThird, CRT_DEEP_HOLE); hThird = m_treeCheckRule.InsertItem(g_strCheckRuleDesc_HoleDis, 2, 4, hSecond); m_treeCheckRule.SetItemData(hThird, CRT_HOLE_DIS); hThird = m_treeCheckRule.InsertItem(g_strCheckRuleDesc_HolePartEdgeDis, 2, 4, hSecond); m_treeCheckRule.SetItemData(hThird, CRT_HOLE_PART_EDGE_DIS); hThird = m_treeCheckRule.InsertItem(g_strCheckRuleDesc_HoleAxisInMaterial, 2, 4, hSecond); m_treeCheckRule.SetItemData(hThird, CRT_HOLE_AXIS_IN_MATERIAL); hThird = m_treeCheckRule.InsertItem(g_strCheckRuleDesc_HoleCutDirPrepUp, 2, 4, hSecond); m_treeCheckRule.SetItemData(hThird, CRT_HOLE_CUT_DIR_PREP_UP); hThird = m_treeCheckRule.InsertItem(g_strCheckRuleDesc_HoleCutDirPrepDown, 2, 4, hSecond); m_treeCheckRule.SetItemData(hThird, CRT_HOLE_CUT_DIR_PREP_DOWN); hThird = m_treeCheckRule.InsertItem(g_strCheckRuleDesc_FlatBottomHole, 2, 4, hSecond); m_treeCheckRule.SetItemData(hThird, CRT_FLAT_BOTTOM_HOLE); } hSecond = m_treeCheckRule.InsertItem(L"钣金件加工", 0, 1, hFirst); { hThird = m_treeCheckRule.InsertItem(g_strCheckRuleDesc_BendRadius, 2, 4, hSecond); m_treeCheckRule.SetItemData(hThird, CRT_BEND_RADIUS); hThird = m_treeCheckRule.InsertItem(g_strCheckRuleDesc_SlotWidth, 2, 4, hSecond); m_treeCheckRule.SetItemData(hThird, CRT_SLOT_WIDTH); hThird = m_treeCheckRule.InsertItem(g_strCheckRuleDesc_SheetBendRadius, 2, 4, hSecond); m_treeCheckRule.SetItemData(hThird, CRT_SHEET_BEND_RADIUS); } hSecond = m_treeCheckRule.InsertItem(L"轴加工", 0, 1, hFirst); { hThird = m_treeCheckRule.InsertItem(g_strCheckRuleDesc_LongAxis, 2, 4, hSecond); m_treeCheckRule.SetItemData(hThird, CRT_LONG_AXIS); hThird = m_treeCheckRule.InsertItem(g_strCheckRuleDesc_AxisShoulderAng, 2, 4, hSecond); m_treeCheckRule.SetItemData(hThird, CRT_AXIS_SHOULDER_ANG); } hSecond = m_treeCheckRule.InsertItem(L"圆角、倒角加工", 0, 1, hFirst); { hThird = m_treeCheckRule.InsertItem(g_strCheckRuleDesc_RoundRad, 2, 4, hSecond); m_treeCheckRule.SetItemData(hThird, CRT_ROUND_RAD); hThird = m_treeCheckRule.InsertItem(g_strCheckRuleDesc_ChamferDim, 2, 4, hSecond); m_treeCheckRule.SetItemData(hThird, CRT_CHAMFER_DIM); hThird = m_treeCheckRule.InsertItem(g_strCheckRuleDesc_ChamferAng, 2, 4, hSecond); m_treeCheckRule.SetItemData(hThird, CRT_CHAMFER_ANG); hThird = m_treeCheckRule.InsertItem(g_strCheckRuleDesc_DeepFillet, 2, 4, hSecond); m_treeCheckRule.SetItemData(hThird, CRT_DEEP_FILLET); } hSecond = m_treeCheckRule.InsertItem(g_strCheckRuleDesc_ShellThickness, 2, 4, hFirst); m_treeCheckRule.SetItemData(hSecond, CRT_SHELL_THICKNESS); hSecond = m_treeCheckRule.InsertItem(g_strCheckRuleDesc_DraftAngle, 2, 4, hFirst); m_treeCheckRule.SetItemData(hSecond, CRT_DRAFT_ANGLE); hSecond = m_treeCheckRule.InsertItem(g_strCheckRuleDesc_PartMaxSize, 2, 4, hFirst); m_treeCheckRule.SetItemData(hSecond, CRT_PART_MAX_SIZE); hSecond = m_treeCheckRule.InsertItem(g_strCheckRuleDesc_FeaMinSize, 2, 4, hFirst); m_treeCheckRule.SetItemData(hSecond, CRT_FEA_MIN_SIZE); hSecond = m_treeCheckRule.InsertItem(g_strCheckRuleDesc_PipeContinuousBend, 2, 4, hFirst); m_treeCheckRule.SetItemData(hThird, CRT_PIPE_CONTINUOUS_BEND); } #if !(defined(DOCTOR_PROE3) || defined(DOCTOR_PROE4)) if (CheckValidLicenseByRules_Drawing()) { hFirst = m_treeCheckRule.InsertItem(L"工程图检查", 0, 1, hRoot); hSecond = m_treeCheckRule.InsertItem(L"标注", 0, 1, hFirst); { hThird = m_treeCheckRule.InsertItem(g_strCheckRuleDesc_DrwDimHandsize, 2, 4, hSecond); m_treeCheckRule.SetItemData(hThird, CRT_DRW_DIM_HANDSIZE); hThird = m_treeCheckRule.InsertItem(g_strCheckRuleDesc_DrwDimTextStyle, 2, 4, hSecond); m_treeCheckRule.SetItemData(hThird, CRT_DRW_DIM_TEXT_STYLE); hThird = m_treeCheckRule.InsertItem(g_strCheckRuleDesc_DrwNoteTextStyle, 2, 4, hSecond); m_treeCheckRule.SetItemData(hThird, CRT_DRW_NOTE_TEXT_STYLE); hThird = m_treeCheckRule.InsertItem(g_strCheckRuleDesc_DrwFakeDim, 2, 4, hSecond); m_treeCheckRule.SetItemData(hThird, CRT_DRW_DIM_FAKE); hThird = m_treeCheckRule.InsertItem(g_strCheckRuleDesc_DrwDimCount, 2, 4, hSecond); m_treeCheckRule.SetItemData(hThird, CRT_DRW_DIMCOUNT); } hSecond = m_treeCheckRule.InsertItem(g_strCheckRuleDesc_DrwSheetSize, 2, 4, hFirst); m_treeCheckRule.SetItemData(hSecond, CRT_DRW_SHEET_SIZE); hSecond = m_treeCheckRule.InsertItem(g_strCheckRuleDesc_DrwSheetIsBlank, 2, 4, hFirst); m_treeCheckRule.SetItemData(hSecond, CRT_DRW_SHEET_ISBLANK); hSecond = m_treeCheckRule.InsertItem(g_strCheckRuleDesc_DrwSheetAngle, 2, 4, hFirst); m_treeCheckRule.SetItemData(hSecond, CRT_DRW_SHEET_ANGLE); hSecond = m_treeCheckRule.InsertItem(g_strCheckRuleDesc_DrwSheetTextSize, 2, 4, hFirst); m_treeCheckRule.SetItemData(hSecond, CRT_DRW_SHEET_TEXT_SIZE); hSecond = m_treeCheckRule.InsertItem(g_strCheckRuleDesc_DrwSheetTextFont, 2, 4, hFirst); m_treeCheckRule.SetItemData(hSecond, CRT_DRW_SHEET_TEXT_FONT); hSecond = m_treeCheckRule.InsertItem(g_strCheckRuleDesc_DrwInrelSketch, 2, 4, hFirst); m_treeCheckRule.SetItemData(hSecond, CRT_DRW_INRELSKETCH); hSecond = m_treeCheckRule.InsertItem(g_strCheckRuleDesc_DrwSheetScale, 2, 4, hFirst); m_treeCheckRule.SetItemData(hSecond, CRT_DRW_SHEET_SCALE); hSecond = m_treeCheckRule.InsertItem(g_strCheckRuleDesc_DrwViewBound, 2, 4, hFirst); m_treeCheckRule.SetItemData(hSecond, CRT_DRW_VIEW_BOUND); //hSecond = m_treeCheckRule.InsertItem(g_strCheckRuleDesc_DrwDimTextOrient, 2, 4, hFirst); //m_treeCheckRule.SetItemData(hSecond, CRT_DRW_DIM_TEXT_ORIENT); //hSecond = m_treeCheckRule.InsertItem(g_strCheckRuleDesc_DrwNoteArrowSize, 2, 4, hFirst); //m_treeCheckRule.SetItemData(hSecond, CRT_DRW_NOTE_ARROW_SIZE); //hSecond = m_treeCheckRule.InsertItem(g_strCheckRuleDesc_DrwNoteArrowStyle, 2, 4, hFirst); //m_treeCheckRule.SetItemData(hSecond, CRT_DRW_NOTE_ARROW_STYLE); } if (CheckValidLicenseByRules_3DDrawing()) { hFirst = m_treeCheckRule.InsertItem(L"三维标注检查", 0, 1, hRoot); hSecond = m_treeCheckRule.InsertItem(g_strCheckRuleDesc_3ddrwFakeDim, 2, 4, hFirst); m_treeCheckRule.SetItemData(hSecond, CRT_3DDRW_FAKE_DIM); hSecond = m_treeCheckRule.InsertItem(g_strCheckRuleDesc_3DDrwView, 2, 4, hFirst); m_treeCheckRule.SetItemData(hSecond, CRT_3DDRW_VIEW); hSecond = m_treeCheckRule.InsertItem(g_strCheckRuleDesc_3DDrwColor, 2, 4, hFirst); m_treeCheckRule.SetItemData(hSecond, CRT_3DDRW_COLOR); hSecond = m_treeCheckRule.InsertItem(g_strCheckRuleDesc_3DDrwTextSize, 2, 4, hFirst); m_treeCheckRule.SetItemData(hSecond, CRT_3DDRW_TEXTSIZE); if (g_strCustomCode.CompareNoCase(L"505") == 0) { hSecond = m_treeCheckRule.InsertItem(g_strCheckRuleDesc_3DDrwLug_505, 2, 4, hFirst); m_treeCheckRule.SetItemData(hSecond, CRT_3DDRW_LUG_505); } } #endif GetRuleCount(hRoot); m_treeCheckRule.Expand(hRoot, TVE_EXPAND); GetDlgItem(IDC_STATIC_SUB_DLG_POS)->GetWindowRect(m_rectPanel); ScreenToClient(m_rectPanel); GetDlgItem(IDC_STATIC_SUB_DLG_POS)->ShowWindow(SW_HIDE); return TRUE; }
void CTDLFindTaskExpressionListCtrl::PrepareControl(CWnd& ctrl, int nRow, int nCol) { UNREFERENCED_PARAMETER(ctrl); if (!GetRuleCount()) return; SEARCHPARAM& sp = m_aSearchParams[nRow]; switch (nCol) { case ATTRIB: { ASSERT (&ctrl == &m_cbAttributes); m_cbAttributes.SelectAttribute(sp); CDialogHelper::RefreshMaxDropWidth(m_cbAttributes); } break; case OPERATOR: { ASSERT (&ctrl == &m_cbOperators); m_cbOperators.ResetContent(); FIND_ATTRIBTYPE nType = sp.GetAttribType(); switch (nType) { case FT_STRING: AddOperatorToCombo(FO_SET); AddOperatorToCombo(FO_NOT_SET); AddOperatorToCombo(FO_EQUALS); AddOperatorToCombo(FO_NOT_EQUALS); AddOperatorToCombo(FO_INCLUDES); AddOperatorToCombo(FO_NOT_INCLUDES); break; case FT_INTEGER: case FT_DOUBLE: case FT_TIME: AddOperatorToCombo(FO_SET); AddOperatorToCombo(FO_NOT_SET); AddOperatorToCombo(FO_EQUALS); AddOperatorToCombo(FO_NOT_EQUALS); AddOperatorToCombo(FO_GREATER); AddOperatorToCombo(FO_GREATER_OR_EQUAL); AddOperatorToCombo(FO_LESS); AddOperatorToCombo(FO_LESS_OR_EQUAL); break; case FT_DATE: case FT_DATE_REL: AddOperatorToCombo(FO_SET); AddOperatorToCombo(FO_NOT_SET); AddOperatorToCombo(FO_EQUALS); AddOperatorToCombo(FO_NOT_EQUALS); AddOperatorToCombo(FO_AFTER); AddOperatorToCombo(FO_ON_OR_AFTER); AddOperatorToCombo(FO_BEFORE); AddOperatorToCombo(FO_ON_OR_BEFORE); break; case FT_BOOL: AddOperatorToCombo(FO_SET); AddOperatorToCombo(FO_NOT_SET); break; } CDialogHelper::SelectItemByData(m_cbOperators, (DWORD)sp.GetOperator()); } break; case ANDOR: { ASSERT (&ctrl == &m_cbAndOr); if (sp.GetAnd()) m_cbAndOr.SelectString(-1, CEnString(IDS_FP_AND)); else m_cbAndOr.SelectString(-1, CEnString(IDS_FP_OR)); } break; case VALUE: switch (sp.GetAttribType()) { case FT_DATE: ASSERT (&ctrl == &m_dtDate); // if the rule does not yet have a date then set it now to // the current date because that's whats the date ctrl will default to if (sp.ValueAsDate().m_dt <= 0) { sp.SetValue(COleDateTime::GetCurrentTime()); SetItemText(nRow, nCol, sp.ValueAsDate().Format(VAR_DATEVALUEONLY)); } else m_dtDate.SetTime(sp.ValueAsDouble()); break; case FT_TIME: ASSERT (&ctrl == &m_eTime); m_eTime.SetTime(sp.ValueAsDouble(), (TCHAR)sp.GetFlags()); break; } break; } }