我的DBGrid有三列数据显示,当三列的宽度没有DBGrid宽时,我希望最后一列的宽度加宽,使三列之和刚好等于DBGrid的ClientWidth.(这样好看一些)
procedure TForm1.Button1Click(Sender: TObject);
var
tmpWidth:integer;
begin
tmpWidth:=DBGridEX1.Columns[0].Width+DBGridEX1.Columns[1].Width+DBGridEX1.Columns[2].Width;
DBGridEx1.Columns[2].Width:=DBGridEx1.Columns[2].Width+(DBGridEx1.ClientWidth-tmpWidth)-16;
end;
可是为什么出现水平滚动条呢?(如果不减16)
这个到底是什么宽度?
不知道我说清楚了没有,呵呵.
procedure TForm1.Button1Click(Sender: TObject);
var
tmpWidth:integer;
begin
tmpWidth:=DBGridEX1.Columns[0].Width+DBGridEX1.Columns[1].Width+DBGridEX1.Columns[2].Width;
DBGridEx1.Columns[2].Width:=DBGridEx1.Columns[2].Width+(DBGridEx1.ClientWidth-tmpWidth)-16;
end;
可是为什么出现水平滚动条呢?(如果不减16)
这个到底是什么宽度?
不知道我说清楚了没有,呵呵.
解决方案 »
- delphi 中DBGRID 中部分值是由其中一列的输入结果查询出来的,那么怎样给这几列赋值
- SQL中字段定义varchar(4000),为什么在qrery中,加入字段时size只有255
- 网上有下载的P2p软件源码吗?我下了一个AresRegular但是里面缺好多文件。
- 怎么才能找到一个项目做呢?
- 如何在一个dbgrid中显示两个关联表的信息
- 请各位兄弟姐妹扔个FontTwister1.3的注册码上来,谢过了。
- delphi在移动控间的时候是怎么做的?
- 如何实现一个菜单项和一个PageControl的页的一一对应?
- delphi5 多线程的使用问题
- 上火了,帮个忙!
- fastReport 怎样设计不分页的连续纸打印?
- 有关dll的问题
Indicator不是算在ClientWidth中的,我试过把Indicator的宽度加宽了,可是DBGrid的ClientWidth还是没有变啊?
如果是分割线,可是减16,这个好像不是分割线的宽度.(只有三根线,不可能有这么宽吧.)
是不是滚动条的宽度?(应该不是的,不过滚动条最接近这个宽度,呵呵)
整个窗体全部是用代码生成的.(通用窗体) 没有办法了吗?
1.Indicator不是算在ClientWidth中的,我试过把Indicator的宽度加宽了,可是DBGrid的ClientWidth还是没有变啊? Indicator加宽,ClientWidth没有变,正确,应该是这样啊,因为Indicator是在ClientWidth里的,它加宽了,它的父的宽度有变化吗?比如一个FORM里有个按钮,你把按钮加宽,FORM的宽度会变吗?呵呵,其实它们是包含关系,而不是并列关系!2. 如果是分割线,可是减16,这个好像不是分割线的宽度.(只有三根线,不可能有这么宽吧.)
是不是滚动条的宽度?(应该不是的,不过滚动条最接近这个宽度,呵呵) 我这里是如果Indicator加false,有三个字段只要减去2,所以我觉得是字段之间的那根线占去了这两个位,而不是16。我试了,如果是4个字段的话,要减去3!呵呵,不知讲得对不对,请指正!
1.Indicator加宽,ClientWidth没有变,正确,应该是这样啊,因为Indicator是在ClientWidth里的,它加宽了,它的父的宽度有变化吗?比如一个FORM里有个按钮,你把按钮加宽,FORM的宽度会变吗?呵呵,其实它们是包含关系,而不是并列关系!
R:是的.Indictor属于DBGrid,是包含关系. 2.我这里是如果Indicator加false,有三个字段只要减去2,所以我觉得是字段之间的那根线占去了这两个位,而不是16。我试了,如果是4个字段的话,要减去3!呵呵,不知讲得对不对,请指正
R:是的如果把Indicator设置为Flase,那么三个字段要减去2.
可以我打开Indicator,还要减什么呢? 请多多指教.
DBGRID的ClientWidth=字段1.width + 间隔符.width +字段2.width+间隔符.width +字段3.width+..............打开Indicator的时候,计算公式应是:
DBGRID的ClientWidth=Indicator.width + 字段1.width + 间隔符.width +字段2.width+间隔符.width +字段3.width+..............
那以标准的DBGrid的IndicatorWidth是多宽呢?(好像是11)
可是这样不行?
太谢谢你了.
procedure TForm1.Button1Click(Sender: TObject);
var
tmpWidth:integer;
begin
tmpWidth:=DBGrid1.Columns[0].Width+DBGrid1.Columns[1].Width+DBGrid1.Columns[2].Width;
DBGrid1.Columns[2].Width:=DBGrid1.Columns[2].Width+(DBGrid1.ClientWidth-tmpWidth)-(DBGrid1.Columns.Count-1);
end;
这个是有Indicator时的代码:
procedure TForm1.Button1Click(Sender: TObject);
var
tmpWidth:integer;
begin
tmpWidth:=DBGrid1.Columns[0].Width+DBGrid1.Columns[1].Width+DBGrid1.Columns[2].Width;
DBGrid1.Columns[2].Width:=DBGrid1.Columns[2].Width+(DBGrid1.ClientWidth-tmpWidth)-(DBGrid1.Columns.Count-1)-11; //是这样吗?
end;
procedure TForm1.Button1Click(Sender: TObject);
var
tmpWidth:integer;
begin
tmpWidth:=DBGrid1.Columns[0].Width+DBGrid1.Columns[1].Width+DBGrid1.Columns[2].Width;
DBGrid1.Columns[2].Width:=DBGrid1.Columns[2].Width+(DBGrid1.ClientWidth-tmpWidth)-(DBGrid1.Columns.Count-1);
end;这样写可以简单些:
procedure TForm1.Button1Click(Sender: TObject);
var
tmpWidth:integer;
begin
tmpWidth:=DBGrid1.Columns[0].Width+DBGrid1.Columns[1].Width;
DBGrid1.Columns[2].Width:=DBGrid1.ClientWidth-tmpWidth-(DBGrid1.Columns.Count-1);
end;