怎么调整tbgrid中调整单元格大小

sungoco100 2006-01-26 06:04:57
在grid中显示了一张表,但是,它每列的宽度太宽,怎么调整?
...全文
116 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
daydayup234 2006-02-06
  • 打赏
  • 举报
回复


void __fastcall Tmain_::FormShow(TObject *Sender)
{
int I;
TComponent *Temp;
for(I=ComponentCount-1;I>=0;I--)
{
Temp=Components[I];
if(dynamic_cast<TDBGrid *>(Temp)!=NULL)
{
TDBGrid* dgrid=(TDBGrid *)(Temp);
TIBQuery *dset=(TIBQuery *)dgrid->DataSource->DataSet;
int count,fontSize,k;
count=dgrid->Columns->Count;
fontSize=dgrid->Font->Size;
k=count;
while(--k>0)
dset->Fields->Fields[k]->DisplayWidth=(dgrid->ClientWidth)/(count+1)/fontSize;
//因为取整的缘故,让 “列”数多1个
}
}
}
sungoco100 2006-01-27
  • 打赏
  • 举报
回复
谢谢`~
lvjack 2006-01-26
  • 打赏
  • 举报
回复
效果不理想,给你参考吧
lvjack 2006-01-26
  • 打赏
  • 举报
回复
随便写的一个
void TfmMain::fit_width()
{
if(ADOQuery1->Active==true)
{
int i=ADOQuery1->RecordCount;
if(i>10)
i=i/10;
int max_width=0;
DBGrid1->Canvas->Font=DBGrid1->Font;
for(int k=0;k<ADOQuery1->FieldCount;k++)
{
for(int j=0;j<i;j=j+i)
{
max_width=max(max_width,DBGrid1->Canvas->TextWidth(DBGrid1->Fields[k]->AsString));

}
if(max_width>0)
{
max_width=max_width+3 ;
}
else
{
max_width=6;
}
DBGrid1->Columns->Items[k]->Width=max_width;
max_width=0;
}
}
}
//---------------------------------------------------------------------------

1,178

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 数据库及相关技术
社区管理员
  • 数据库及相关技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧