怎样使用及修改字段的标题控制dbgrid的display label(150分)

  • 主题发起人 主题发起人 xinjia
  • 开始时间 开始时间
X

xinjia

Unregistered / Unconfirmed
GUEST, unregistred user!
数据库为access,添加记录的操作。
原来用一个Ttable取数据库表的数据,一个Tdatasource一个Tdbgrid建立联系后,设置table
的active:=true;,就可以使用字段编辑器选择要dbgrid显示的字段,修改显示的字段名。

但是,目前要求数据库表的字段名称可能经常变幻,只好在数据库表结构中使用
tf1,tf2,tf3之类的代码表示,并通过在access国修改字段的标题来反映这种变化。还有一个
附加条件是table1的active只有程序运行时才能设置为true;,无法在程序设计期间手动
设置永久的字段显示属性和选择要显示的字段
这样就牵涉到两件相联的问题要解决:1.怎样使用dbgride的字段列display label引用
数据库表字段的标题;2.怎样只显示几个字段(如第一/二个字段不显示,其它都显示),
控制它的列宽。
也许最后得用Tquery解决,想先听听大侠们的意见。
 
程序中控制列宽现在知道了:dbgrid1.columns[0].width:=列宽
 
1.建立标题参数库结构如下:
字段名, 中文字段名,长度,排序,显示标志
tf1 代码 10 1 true
tf2 姓名 8 2 true
tf3 年龄 6 3 false
tf4 性别 4 4 true
2.显示时先查询标题参数库

select * from 标题参数库
where 显示标志 =true order by 排序

3.设置显示标题(我使用的是infopower2000的wwdbgrid)
with wwDBGrid1 do
begin
Selected.Clear;

标题参数.open;
标题参数.first;
while not 标题参数.eof do
begin
Selected.Add('标题参数.字段名' + #9 + 标题参数.长度 + #9 +标题参数.中文字段名 );
end;{endofwhile}
ApplySelected;
end;{endofwith}

open your table;


请给分吧!
 
3.应该是:
with wwDBGrid1 do
begin
Selected.Clear;

标题参数.open;
标题参数.first;
while not 标题参数.eof do
begin
Selected.Add('标题参数.字段名' + #9 + 标题参数.长度 + #9 +标题参数.中文字段名 );
标题参数.next;
end;{endofwhile}
ApplySelected;
end;{endofwith}
 
各位仔细看看Q1:
通过在access修改字段的标题来反映这种变化,
引用数据库表字段的标题,也就是说在access里设置的标题.
 
控件rinfopower2000的wwdbgrid在那里找,如果找到当然给分即使我不用,也多知道一
种解决方法。
我原打算还使用table和dbgrid解决:
我在一个窗体的onshow事件中放入
table1.active:=true;
dbgrid1.Columns[0].visible:=false;//控制不显示
digrid1.columns[1].width:=60;//控制显示列宽
dbgrid1.Columns[1].DisplayName:=table1.Fields[1].DisplayLabel//将字段标题显示
现在的问题是显示字段标题一句话老不起作用,请大侠赶快出招,不然我自己得收回一部
分数了
 
建立一个临时表,将要时的字段送到临时表中,与TDBGrid关联.至于dbgride的字段列
display label可以在程序中解决.
 
www.Woll2Woll.com
Infopower Pro v2000 S/N: IP8250248391
 
delphi中不能使用access表中字段的标题,但是为什么borland不打算增加这个功能呢
 
to yangkee:
access 自带的vba能用,access表子段中的标题,我想delphi至少可以通过API使用
 
sql 语句中带 查询数据的标题 就可以实现了。
//例:
select A1 caption1,A2 caption2 ,A3 caption3 from your_table where 条件
//再使用相应的 数据源关联就行了。
 
如果再得不到指教只好使用query了
 
你不闭对dbgrid column进行操作, leave it blank, 然后右击table 选上所有field, 再一个个选field, 对它的display label
和visible 进行修改你不想要的选visible :=false(can do it at run time as weil)
 
多人接受答案了。
 
后退
顶部