Тема: AcDbTable стиль строк
Собственно вопрос, как изменить стиль первой и второй строки с "название" и "заголовок" на "Данные"
Пробовал AcDbTable::suppressTitileRow и AcDbTable::suppressHeaderRow не помогает.
Заранее спасибо.
Информационный портал для профессионалов в области САПР
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Форумы CADUser → Программирование → ObjectARX → AcDbTable стиль строк
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Собственно вопрос, как изменить стиль первой и второй строки с "название" и "заголовок" на "Данные"
Пробовал AcDbTable::suppressTitileRow и AcDbTable::suppressHeaderRow не помогает.
Заранее спасибо.
А теперь все тоже самое, но поподробнее. С картинками, кодом и т.д. Если конечно рассчитываешь на помощь.
В автокаде при добавлении таблицы можно выбрать стиль ячеек: стиль ячеек первой строки, стиль ячеек второй строки и стиль ячеек остальных строк. По умолчанию для первой строки стоит "Название", для второй - "Заголовок", для остальных - "Данные". Автокад 2010. Как тоже самое сделать в ObjectARX?
Зарание спасибо!
Не это: AcDbTable::setCellStyle
Пробовал, получаю код ошибки eNotApplicable
Код в студию. Надоело гадать на кофейной гуще.
static void ArxTestTESTTABLE(void) { // Add your code for command ArxTest.TESTTABLE here ads_name en; ads_point p; if (acedEntSel(_T("\nВыберите таблицу: "),en,p) == RTNORM) { AcDbObjectId eid; acdbGetObjectId(eid,en); AcDbObjectPointer<AcDbTable> pTable(eid,AcDb::kForWrite); if (pTable.openStatus() == Acad::eOk) { AcString styleData; AcDbObjectPointer<AcDbTableStyle> pTableStyle(pTable->tableStyle(),AcDb::kForRead); if (pTableStyle.openStatus() == Acad::eOk) { AcStringArray styles; int nStyles = pTableStyle->getCellStyles(styles); for (int i = 0; i < nStyles; i++) { acutPrintf(_T("\nStyle[%d]=%s"),i,styles[i].kTCharPtr()); } styleData = styles.last(); } Acad::ErrorStatus es; if (!styleData.isEmpty()) { for (int i=0; i < pTable->numColumns(); i++) { // acutPrintf(_T("\npTable->cellStyle(0,%d)=%s"),i,pTable->cellStyle(0,i)); // acutPrintf(_T("\npTable->cellStyle(1,%d)=%s"),i,pTable->cellStyle(1,i)); if ((es = pTable->setCellStyle(0,i,styleData)) != Acad::eOk) { acutPrintf(_T("\npTable->setCellStyle(0,%d,styleData) = %s"),i,acadErrorStatusText(es)); } if ((es = pTable->setCellStyle(1,i,styleData)) != Acad::eOk) { acutPrintf(_T("\npTable->setCellStyle(1,%d,styleData) = %s"),i,acadErrorStatusText(es)); } } pTable->generateLayout(); } } } }
Александр Ривилис,
Спасибо за помощь, но у меня все равно не работает. Попробовал ваш код, все проходит нормально, результат eOk, но стиль строк все равно не меняется, как были первая - название, вторая - заголовок так и остались.
У себя я делал вот так
AcDbTable *pTable = new AcDbTable; if (!PostToDB(pTable)) return; pTable->setPosition(AcGePoint3d(0,0,0)); pTable->setWidth(100); pTable->setHeight(30); pTable->insertRows(1,10,10); Acad::ErrorStatus es; es = pTable->setCellStyle(0,0,_T("_DATA")); if (es!= Acad::eOk) { acutPrintf(_T("\npTable->setCellSt yle = %s"),acadErrorStatusText(es)); } pTable->close();
получаю pTable->setCellSt yle = eNotApplicable
Я проверял свой код в AutoCAD 2008 English на таблице "по умолчанию" (т.е. я ее не модифицировал никакие значения в диалоге создания таблицы). Не исключаю, что в 2010 есть какой-то глюк. Что касается твоего кода, то нужно как минимум таблице присвоить стиль таблиц, т.к. setCellStyle должна проверить что в стиле таблицы есть соответствующий стиль ячейки.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Форумы CADUser → Программирование → ObjectARX → AcDbTable стиль строк
Форум работает на PunBB, при поддержке Informer Technologies, Inc