急!DBGRID如何随列的实际宽度动态变化,在线等待!
解决方案 »
- 发个A*寻径算法....
- 关于用DBGrid显示和回写的问题!请大伙帮忙啊~
- DLL中的窗体怎样才能让它显示在页面控件中????
- 求EXE压缩原理。求EXE压缩原理。求EXE压缩原理。
- 寻找在南京(市内)的Delphi程序员
- 在线等待!再问一下Delphi的时间问题.
- 3D图形高手:如何做一个柱状的发光体
- 调用socket后,退出程序后,奇怪的窗口异常错误。。。
- 我想知道RichWin for 98哪儿有下的?
- 请问有谁知道只封锁ctrl+alt+del的方法.
- 我有一个很不好解决的问题,所以请高手帮助,我用ithttp控件,发送了一个字符串信息到网上,可这个字符串很长,就出现错误.请问有什么方法解决
- 请教一下,delphi的静态方法有什么用?
w:=0;
begin
for i:=0 to dbgrid1.columns.count-1 do
w;=w+dbgrid1.columns[i].width+4;
dbgrid1.clientwidth:=w;
end;
begin
if High(DBGridColumnWidth)<>0 then
begin
TitleWidth:=Canvas.TextWidth(Trim(Column.Title.Caption))+8;
TextWidth:=Canvas.TextWidth(Trim(Column.Field.AsString))+8;
if TextWidth>=TitleWidth then
nWidth:=TextWidth
else
nWidth:=TitleWidth;
if (DataCol=Columns.Count-1) and (DBGridColumnWidth[Columns.Count-1]=0) then
begin
tmpWidth:=0;
for i:=0 to Columns.Count-1 do
begin
tmpWidth:=tmpWidth+Columns[i].Width;
end;
Columns[Columns.Count-1].Width:=Columns[Columns.Count-1].Width+(self.ClientWidth-tmpWidth)-2-IndicatorWidth;
DBGridColumnWidth[Columns.Count-1]:=Columns[Columns.Count-1].Width;
end;
if DBGridColumnWidth[DataCol]=0 then Column.Width:=nWidth;
if nWidth>DBGridColumnWidth[DataCol] then DBGridColumnWidth[DataCol]:=nWidth;
if Column.Width<DBGridColumnWidth[DataCol] then Column.Width:=DBGridColumnWidth[DataCol];
end;
end;
在表格绘制每一个单元格事件中:如在第一列,将其实际占用宽度存入列的Tag中,判断每一个单元格的实际占用宽度,与Tag中的值比较,如大于则替换并据此调整列宽删除记录时类似缩小处理代码就不给你写了
那么这个时候是不是显示为最长的宽度呢?
能不能在打开数据库的时候 先获得所有列的数值的最大的宽度
然后把列款定义为这个呢?这就需要循环来实现获得所有列的最大的长度
获得其中的某个字段的最大长度
for i:=0 to adoquery1.recordcount-1 do
var
dd:integer;
begin
aa:=length(adoquery1.fieldbyname().value);
if dd<aa then
dd:=aa
end;
然后dngrid.columns[i].width:=最大的值
w:=0;
begin
for i:=0 to dbgrid1.columns.count-1 do
w;=w+dbgrid1.columns[i].width+4;
dbgrid1.clientwidth:=w;
end;