要循环。
var sNewColumnName:string;//新的字段的名称
....
for i:=0 to dbgrid1.columns.count-1 do
begin
if uppercase(trim(dbgrid1.columns[i].fieldname))=uppercase(trim(snewcolumnname)) then
begin
dbgrid1.columns[i].picklist:=''
dbgrid1.columns[i].alignment:=tacenter;
dbgrid1.columns[i].title.alignment:=tacenter;
end;
end;如果全部都要,那么把if 去掉就可以了。
var sNewColumnName:string;//新的字段的名称
....
for i:=0 to dbgrid1.columns.count-1 do
begin
if uppercase(trim(dbgrid1.columns[i].fieldname))=uppercase(trim(snewcolumnname)) then
begin
dbgrid1.columns[i].picklist:=''
dbgrid1.columns[i].alignment:=tacenter;
dbgrid1.columns[i].title.alignment:=tacenter;
end;
end;如果全部都要,那么把if 去掉就可以了。
解决方案 »
- 程序图标透明的问题
- delphi 中计算字符长度的函数是什么啊?急
- delphi在英文操作系统下输入的汉字都是乱码
- ▲平时咬不开的核桃,这会轻轻一用力就开,莫非凌晨时身体机能最强?
- 斑竹呢,近来,我的信誉分为什么少了4分.给我个理由!~~~~~~~~~~~~~给我个理由!!!,近来,近来
- 谢谢zfang回答我的问题,请进来领分:)
- 高手,高分相送!
- 如何用7来写webservie程序,请举个简单的例子,把过程描述一下,并把源代码附上???
- ***使用ADO连接ACCESS,ConnectionString如何写?*****
- 请教高手怎样提取windows补丁的等级
- 请问:我该如何用程序操纵WINDOWS桌面的快捷方式?
- 有难度的问题,不是高手恐怕不行
用代码添加:
如果下拉菜单的内容已经确定,如下:
dbgrid1.columns[i].picklist.clear;
dbgrid1.columns[i].picklist.add('选项1');
dbgrid1.columns[i].picklist.add('选项2');
dbgrid1.columns[i].picklist.add('选项3');
至于其他的,正如楼上的兄台所言。
table1.close;
table1.dataname:=xxx.db;
table1.open;的代码):
var sNewColumnName:string;//新的字段的名称(可我不能确定新字段就是叫什么的啊?比如新字段叫y2001,那sNewColumnName是不是就改成y2001了?)
....
for i:=0 to dbgrid1.columns.count-1 do
begin
if uppercase(trim(dbgrid1.columns[i].fieldname))=uppercase(trim(snewcolumnname)) then//这一句是什么意思?
begin
dbgrid1.columns[i].picklist.clear;
dbgrid1.columns[i].picklist.add('选项1');
dbgrid1.columns[i].picklist.add('选项2');
dbgrid1.columns[i].picklist.add('选项3');
bgrid1.columns[i].alignment:=tacenter;
dbgrid1.columns[i].title.alignment:=tacenter;
end;
end;
如果不知道特定的字段名,那就只能所有列都加上picklist了。
begin
dbgrid1.columns[i].picklist:=''吗?
if 已知不用加picklist的 then begin picklist='' end;
if 已知要加picklist的 then begin dbgrid1.columns[i].picklist.add('选项1') end;
if 不知的但加同样picklist的 then begin 同上。end;//这一句的if 又如何写?
这样来实现的?
var list1:Tstringlist;
i,j:integer;
begin
list1:=Tstringlist.create;
list1.add('字段名1');
list1.add('字段名2');
list1.add('字段名3');
for j:=0 to list1.count-1 do
begin
for i:=0 to dbgrid1.columns.count-1 do
begin
if uppercase(trim(dbgrid1.columns[i].fieldname))<>
uppercase(trim(list1.strings[j])) then
begin
dbgrid1.columns[i].picklist.clear;
dbgrid1.columns[i].picklist.add('选项1');
dbgrid1.columns[i].picklist.add('选项2');
dbgrid1.columns[i].picklist.add('选项3');
end;
end;
end;
end;
我的意思是固定的字段名外的所有字段名(包括新增的)都加上picklist,也就是说StringList里的都是原来就有的固定不变的字段名。所以我用了<>,结果表里所有记录全都加上了picklist。
如果你是用tstringlist来记录固定的字段名的话,用indexof('xxx')来判断某字符串是否在stringlist中。indexof分不分大小写你就试一下吧。 for i:=0 to dbgrid1.columns.count-1 do
begin
if list1.indexof(trim(dbgrid1.columns[i].fieldname))=-1 then
begin
dbgrid1.columns[i].picklist.clear;
dbgrid1.columns[i].picklist.add('选项1');
dbgrid1.columns[i].picklist.add('选项2');
dbgrid1.columns[i].picklist.add('选项3');
end;
end;