#include "StdAfx.h" #include "resource.h" // 主符号 #include ".\itemgrid.h" #include "SigmaDoc.h" #include "MxnFormat\AxisLayout.h" namespace NItem { CItemEditGrid::CItemEditGrid(CSigmaDoc* ppDoc) : CItemEditNet(ppDoc) , m_pGrid(NULL) { this->SetType(ITEM_GRID); } CItemEditGrid::~CItemEditGrid(void) { if(m_pGrid) delete m_pGrid; m_pGrid=NULL; } int CItemEditGrid::Create(RectangularCSGridData * pData, CDC* pDC) { GetDC()->Create(pDC); if (pData == NULL) return -1; CRect8 rect(pData->left, pData->top, pData->right, pData->bottom); m_pGrid = new CGridding; *(CRect8*)m_pGrid = rect; m_pGrid->m_step.SetSize(pData->stepX, pData->stepY); //自动根据单位设置文字大小 //step=GetDoc()->GetCurrentUnitScale(); m_pGrid->ScaleProperty(1000, 1000); m_pGrid->SetProjection(&(GetDoc()->GetDraw()->m_ExchangeXYZ)); COLORREF color = RGB(pData->girdColorR, pData->girdColorG, pData->girdColorB); m_pGrid->m_szText.cy = pData->textHeight; m_pGrid->m_szText.cx = pData->textHeight*0.4; m_pGrid->m_ptBase.x0 = pData->baseX; m_pGrid->m_ptBase.y0 = pData->baseY; TextFormat = pData->textScale; SetTextFormat(m_pGrid); MarkText = pData->notatioinMode; SetMarkText(m_pGrid); DisplayIdea = pData->showMode; SetDisplayIdea(m_pGrid); ItemEditNetData data; data.blackOutterBorder = pData->blackOutterBorder; data.borderColorR = pData->borderColorR; data.borderColorG = pData->borderColorG; data.borderColorB = pData->borderColorB; data.borderThickness = pData->borderThickness; data.isShowOutBorder = pData->isShowOutBorder; ChangeSetting(&data, m_pGrid); CGridding* pGrid = new CGridding; *pGrid = *m_pGrid; POSITION pos = AddElement(pGrid, DOUBLEFOX_GRID, FALSE); GetDoc()->GetDraw()->SetElementColor(pos, color); CItem::SetPos(pos); delete m_pGrid; m_pGrid = NULL; COne* pOne = GetDoc()->GetDraw()->GetAt(pos); pOne->Draw(*GetDC()); //GetView()->Select(pos); return 1; } int CItemEditGrid::GetStepAndRange(RectangularCSGridData * pData) { if (pData == NULL) return -1; CRect8 rect = GetRect(); pData->left = rect.left; pData->top = rect.top; pData->right = rect.right; pData->bottom = rect.bottom; //自动计算步长 CAxisLayout al(rect.left, rect.right, 1); TIntervalStep sx = al.sd; double step = min(sx.step, al.sd.step); pData->stepX = pData->stepY = step; pData->textHeight = step / 25.0; pData->borderThickness = pData->textHeight / 2.0; return 1; } void CItemEditGrid::DoLButtonUp(CDC* pDC) { } void CItemEditGrid::OnDraw(CXyDC* pDC) { //if(m_pGrid==NULL) return; //pDC->Draw(*m_pGrid); } /* BOOL CItemEditGrid::InitPropertyGrid(CXTPPropertyGrid& grid) { if(this->IsEditState()) { COne* pOne=(COne*)GetDoc()->GetDraw()->GetAt(GetPos()); color=pOne->color; CGridding* pValue=(CGridding*)pOne->GetValue(); InitPropertyGrid(grid,pValue); } else if(m_pGrid) { this->InitPropertyGrid(grid,m_pGrid); CItemEditNet::InitPropertyGrid(grid,m_pNet); } CItem::InitPropertyGrid(grid); return 0; } BOOL CItemEditGrid::OnGridItemChangeValue(CXTPPropertyGridItem* pItem) { if(this->IsEditState()) { CGridding* pValue=(CGridding*)GetDoc()->GetDraw()->GetAtValue(GetPos()); return OnGridItemChangeValue(pItem,pValue); } //为增加状态时 BOOL rt=OnGridItemChangeValue(pItem,m_pGrid); CItemEditNet::OnGridItemChangeValue(pItem,m_pNet); return rt; } BOOL CItemEditGrid::InitPropertyGrid(CXTPPropertyGrid& grid, CGridding* pValue) { if(pValue==NULL) return FALSE; CXTPPropertyGridItem* pItem; CPropertyGridItemAdd ItemAdd(NULL); CString strFormat=GetFloatFormatString(); GetTextFormat(pValue); GetDisplayIdea(pValue); GetMarkText(pValue); //网格//IDS_STRING_GRID_ITEM//网格 pItem=grid.AddCategory(IDS_STRING_GRID); ItemAdd.SetItem(pItem); pItem->Expand(); m_step = GetUnitMode().toPrintUnit(pValue->m_step); pItem=ItemAdd.AddItemUnitSize8(IDS_GI_GRID_STEP_GRID, GetUnit(), m_step, &m_step); pItem->Expand(); ItemAdd.AddItemCombo(IDS_GI_GRID_VIEW, IDS_GI_GRID_VIEW_COMBO, DisplayIdea, &DisplayIdea); ItemAdd.AddItemColor(IDS_GI_COLOR, color, NULL); //文字 pItem=grid.AddCategory(IDS_STRING_Text); ItemAdd.SetItem(pItem); pItem->Expand(); //ItemAdd.AddItemSize(IDS_STRING_TEXT_SIZE, pValue->m_szText, NULL, IDS_STRING_WIDTH, IDS_STRING_HEIGHT); m_szText = GetUnitMode().toPrintUnit(pValue->m_szText); ItemAdd.AddItemUnitDouble(IDS_STRING_TEXT_HEIGHT, GetUnit(), m_szText.cy, strFormat, &m_szText.cy); ItemAdd.AddItemCombo(IDS_GI_GRID_SCALE, IDS_GI_GRID_SCALE_COMBO, TextFormat, &TextFormat); ItemAdd.AddItemCombo(IDS_GI_GRID_MARK, IDS_GI_GRID_MARK_COMBO, MarkText, &MarkText); //高级设置 pItem=grid.AddCategory(IDS_STRING_SETTING); ItemAdd.SetItem(pItem); pItem->Expand(); ItemAdd.AddItemPoint(IDS_GI_GRID_BASE, pValue->m_ptBase, NULL); //基数 ItemAdd.AddItemSize8(IDS_GI_GRID_COEFFICIENT,pValue->m_szCoefficient,NULL); //系数 ItemAdd.AddItemRect(IDS_GI_COORDINATE_RECT, *(CRect8*)pValue, NULL); //范围 //边框 return InitPropertyGrid_Frame(grid, pValue); } BOOL CItemEditGrid::OnGridItemChangeValue(CXTPPropertyGridItem* pItem, CGridding* pValue) { if(pValue==NULL) return FALSE; COne* pOne=NULL; if(IsEditState()) pOne=(COne*)GetDoc()->GetDraw()->GetAt(GetPos()); BOOL bUpdate=FALSE; switch(pItem->GetID()) { case IDS_GI_COLOR: color=atol(pItem->GetValue()); if(pOne) pOne->color=color; bUpdate=TRUE; break; case IDS_GI_GRID_STEP_GRID: { CSize8 sz=((CCustomItemPoint*)pItem)->GetValuePoint(); if(m_step.cx>ZERO) pValue->m_step.cx = GetUnitMode().toRealUnit(m_step.cx); if(m_step.cy>ZERO) pValue->m_step.cy = GetUnitMode().toRealUnit(m_step.cy); } bUpdate=TRUE; break; case IDS_STRING_TEXT_HEIGHT: pValue->m_szText.cy = GetUnitMode().toRealUnit(m_szText.cy); pValue->m_szText.cx = pValue->m_szText.cy*0.4; bUpdate=TRUE; break; case IDS_GI_GRID_BASE: pValue->m_ptBase=((CCustomItemPoint*)pItem)->GetValuePoint(); bUpdate=TRUE; break; case IDS_GI_GRID_COEFFICIENT: { CSize8 sz=((CCustomItemPoint*)pItem)->GetValuePoint(); if(sz.cxm_szCoefficient=((CCustomItemPoint*)pItem)->GetValuePoint(); bUpdate=TRUE; break; case IDS_GI_COORDINATE_RECT: *(CRect8*)pValue=((CCustomItemRect*)pItem)->GetValueRect8(); bUpdate=TRUE; break; case IDS_GI_GRID_VIEW: SetDisplayIdea(pValue); bUpdate=TRUE; break; case IDS_GI_GRID_SCALE: SetTextFormat(pValue); bUpdate=TRUE; break; case IDS_GI_GRID_MARK: SetMarkText(pValue); bUpdate=TRUE; break; default: bUpdate=OnGridItemChangeValue_Frame(pItem, pValue); break; } return bUpdate | CItem::OnGridItemChangeValue(pItem); } */ }//namespace