紧急求助!!! (50分)

  • 主题发起人 主题发起人 Najasna
  • 开始时间 开始时间
N

Najasna

Unregistered / Unconfirmed
GUEST, unregistred user!
我最近用Delphi6在windows2000环境下,写了一段程序,其中有一段代码如下:
procedure TFmUse_Def2.SetTableName(ss:string);
var
buf:string[100];
cot,cott:integer;
begin
Table2.TableName:=ss; //置表名称
Table2.Active:=True; //激活表
DBGrid1.Columns.Clear; //清除以前的列
DBGrid1.Columns.Add.FieldName:='A1'; //指定列1
DBGrid1.Columns.Items[0].Title.Caption:='编 号';//修改列的标题
DBGrid1.Columns.Items[0].Title.Alignment:=taCenter;//标题居中
DBGrid1.Columns.Items[0].ReadOnly:=False; //该列只读
DBGrid1.Columns.Add.FieldName:='A2'; //指定列2
DBGrid1.Columns.Items[1].Title.Caption:='姓 名';
DBGrid1.Columns.Items[1].Title.Alignment:=taCenter;
DBGrid1.Columns.Items[1].ReadOnly:=False;
cot:=3;
cott:=2;
Table1.First;
while NOT Table1.Eof do //从工资项目中读取列的内容
begin
if Table1.FieldByName('S_Static').AsBoolean then
begin
buf:=trim(Table1.FieldByName('S_Name').AsString);
DBGrid1.Columns.Add.FieldName:='A'+trim(IntToStr(cot));
DBGrid1.Columns.Items[cott].Title.Caption:=buf;
DBGrid1.Columns.Items[cott].Title.Alignment:=taCenter;
cott:=cott+1;
end;
Table1.Next;
cot:=cot+1;
end;
end;
可是在运行中发现:
只有表格中第一列和第二列的宽度是10,其余的列的宽度只有1,
不知何故,敬请高手帮助!
谢谢!
 
我的数据表格用是DBGRID,用的是标准的datasource和标准的Tdata,用的是缺省值,未作任何其他设置。
现在我要下网了,明天才能上网,希望大家能给我一个良好的解决方案。谢谢!
 
还是用stringgrid的好啊......
就是代码麻烦一点..
 
dbgrid1.Columns[0].Width:=90;
手动用代码控制啊
 
是不是其它列里没有数据呵

而列的宽度又是设为自动适应大小的呵
 
我觉得还是在程序里面手动设置的好。
dbgrid1.Columns[0].Width:=10;

看看你是不是列的宽度是设为自适应大小?
好运!^_^

 
同意楼上的
 
共有两个DBGRID和Ttable,两个数据表均为dbf,table1的数据库结构如下:
S_NAME(款项名称)类型C尺寸16
S_TYPE(类型,字符或数据)类型L
S_WIDTH(字符宽)类型N尺寸3
S_BASE(计算数据)类型L
S_STATIC(固定数据)类型L
S_MOVE(变动数据)类型L
S_PRT(可打印项)类型L
table2根据table1中存储的数据来生成一个新的数据表。
 
我已发现问题所在,是我在定义新的数据表时,忘了将从第三个字段开始
的字段宽度定义了。
谢谢大家!
 
多人接受答案了。
 
后退
顶部