看一下代码有什么问题.(查询结果出来以后,dbgrideh不是按照YSFGPL这个表的宽度和标题进行排列)
with unit2.Data.adoymsx do
begin
close;
sql.Clear;
sql.Add('select id as 序号,name as 项目名称,kjf as 可见否,width as 宽度 from YSFGPL');
open;
unit2.Data.adoymsx.First;
i:=0;
while not unit2.Data.adoymsx.Eof do
begin
i:=i;
edit1.text:=unit2.Data.adoymsx.FieldByName('可见否').Asstring;
kd:=unit2.Data.adoymsx.fieldbyname('宽度').AsInteger;
name:=unit2.Data.adoymsx.fieldbyname('项目名称').AsString; if edit1.text='False' then
begin
DBGridEh1.Columns[i].Title.Caption:=name;
DBGRIDEH1.Columns[i].Width:=0;
DBGRIDEH1.Columns[i].Visible:=false; end;
if edit1.text='True' then
begin
DBGridEh1.Columns[i].Title.Caption:=name;
DBGRIDEH1.Columns[i].Width:=kd;
end;
i:=i+1;
unit2.Data.adoymsx.Next;
end;
end;
with unit2.Data.adoymsx do
begin
close;
sql.Clear;
sql.Add('select id as 序号,name as 项目名称,kjf as 可见否,width as 宽度 from YSFGPL');
open;
unit2.Data.adoymsx.First;
i:=0;
while not unit2.Data.adoymsx.Eof do
begin
i:=i;
edit1.text:=unit2.Data.adoymsx.FieldByName('可见否').Asstring;
kd:=unit2.Data.adoymsx.fieldbyname('宽度').AsInteger;
name:=unit2.Data.adoymsx.fieldbyname('项目名称').AsString; if edit1.text='False' then
begin
DBGridEh1.Columns[i].Title.Caption:=name;
DBGRIDEH1.Columns[i].Width:=0;
DBGRIDEH1.Columns[i].Visible:=false; end;
if edit1.text='True' then
begin
DBGridEh1.Columns[i].Title.Caption:=name;
DBGRIDEH1.Columns[i].Width:=kd;
end;
i:=i+1;
unit2.Data.adoymsx.Next;
end;
end;
程序是循环读取的,所以你的sql语句要加个排序才行: order by id
begin
***************//换一种方式算了,看者都麻烦
end;