我用BCB写的,
void TMainForm::SetStringGridWidth(TStringGrid *StringGrid1)
{
int max_width=0;
int i=0;
int j=0;
for(j=0;j<StringGrid1->ColCount;j++)
{
max_width=StringGrid1->Canvas->TextWidth(StringGrid1->Cells[j][0]);
for(i=0;i<StringGrid1->RowCount;i++)
{
if(max_width<StringGrid1->Canvas->TextWidth(StringGrid1->Cells[j][i]))
{
max_width=StringGrid1->Canvas->TextWidth(StringGrid1->Cells[j][i]);
}
}
StringGrid1->ColWidths[j]=max_width+10;
}
}如果在窗体显示后执行这个函数,那么效果很好,但是如果这个函数放在FormCreate中,那么有的列就不能显示完全了,但是我的程序要在窗体一显示出来就进行现实,只能放在FormCreate中,,各位大峡有什么好方法吗?
在线等待....
void TMainForm::SetStringGridWidth(TStringGrid *StringGrid1)
{
int max_width=0;
int i=0;
int j=0;
for(j=0;j<StringGrid1->ColCount;j++)
{
max_width=StringGrid1->Canvas->TextWidth(StringGrid1->Cells[j][0]);
for(i=0;i<StringGrid1->RowCount;i++)
{
if(max_width<StringGrid1->Canvas->TextWidth(StringGrid1->Cells[j][i]))
{
max_width=StringGrid1->Canvas->TextWidth(StringGrid1->Cells[j][i]);
}
}
StringGrid1->ColWidths[j]=max_width+10;
}
}如果在窗体显示后执行这个函数,那么效果很好,但是如果这个函数放在FormCreate中,那么有的列就不能显示完全了,但是我的程序要在窗体一显示出来就进行现实,只能放在FormCreate中,,各位大峡有什么好方法吗?
在线等待....
解决方案 »
- 拦截鼠标右键连续按六下消息后,进行一些操作!!!
- 我写了个办公自动化的软件,需要一套相关的图片,比如说:按钮上的图片(增加、删除,添加,确定,取消,关闭,移除),哪个能提供好看点的?
- 关于线程的使用问题!
- 如何更新一个时间字段?必须对该更新的内容进行有效限制!进来的都有分!
- 我用的wise8.14打包时,想要反安装程序在我的程序目录下怎么办?
- 关于日期类型的查询
- 大家来看看CSDN改版的小九九,为了避免垄断,呼吁建立中国程序员论坛联盟。
- 怎么我的query1不能修改记录?(在线)
- 救命!!!用 delphi 使用 sock5 协议的办法???
- 使用delphi,进入Oracle数据库查询数据,日期控件
- 如何使combobox只能选择,不能输入,而且combobox里面的第一项是默认的选取值
- 高分求支持HTTP代理控件 急 在线等
var
len:string;
begin
len := Length('我是中国人');
StringGrid1.ColWidths[1] := 8 * len;//一个字符大概8个象素的宽度,可以根据自己要求改
end;
我发现StringGrid1->Canvas->TextWidth这个函数在窗体创建的时候运行会出现问题