查看单个帖子
旧 2009-05-06, 08:15 PM   #1
yang686526
高级会员
 
注册日期: 06-11
帖子: 14579
精华: 1
现金: 224494 标准币
资产: 234494 标准币
yang686526 向着好的方向发展
默认 【转帖】oddbtable width not updated

oddbtable width not updated
oddbtable width not updated
hi everyone
when i resize one or more columns of an existing table (filled with text-values), the total width of the table is not updated. is there any method i can call on the tableobject that forces an update of the tablewidth?
here is some code. i've made a workaround since i need the actual width of the table to position it correctly.
code:
double commonfunctions::resizetable( oddbdatabaseptr pdb, oddbobjectid tableid ){
oddbtableptr tableptr = tableid.safeopenobject( oddb::kforwrite );
unsigned int col, columns = tableptr->numcolumns();
double averagecolumnwidth = tableptr->width()/columns;
double tempwidth, sum = 0;
for( col = 0; col < columns; col++ ){
tempwidth = tableptr->columnwidth( col );
if( tempwidth >= averagecolumnwidth ){
tempwidth *= 0.7; //factor is still experimental
tableptr->setcolumnwidth( col, tempwidth );
}
sum += tempwidth;
}
tempwidth = tableptr->width(); //table width is still the same
tableptr.release();
return sum; //needs to return total width because table is not updated
}any help is appreciated.
martin
hello martin,
try to call tableptr->recomputetableblock(true) befor line
"tempwidth = tableptr->width(); //table width is still the same".
best regards,
sergey z.
ok, that's it.
hello sergey,
thanks for the hint, it works. i am pretty sure i tried this with dwgdirect 2.5 and it didn't work. anyways, it does now.
martin
yang686526离线中   回复时引用此帖
GDT自动化论坛(仅游客可见)