procedure TForm1.Button1Click(Sender: TObject); var i:integer; begin for i := 0 to form1.ComponentCount-1 do if Components[i] is TEdit then TEdit(Components[i]).Visible:= strtoint(TEdit(Components[i]).Name[5])<=ADOQuery1.FieldCount; end;
或: procedure TForm1.Button1Click(Sender: TObject); var i:integer; begin for i := 0 to 4 do if Components[i] is TEdit then TEdit(Components[i]).Visible:= strtoint(TEdit(Components[i]).Name[5])<=ADOQuery1.FieldCount; end;
噢,不行,要这样: procedure TForm1.Button1Click(Sender: TObject); var i:integer; begin for i := 0 to form1.ComponentCount-1 do if (Components[i] is TEdit)and(TEdit(Components[i]).Name[5] in ['0'..'4']) then TEdit(Components[i]).Visible:= strtoint(TEdit(Components[i]).Name[5])<=ADOQuery1.FieldCount; end;
楼上能够告知下,下面的代码怎么改: procedure TForm2.Button2Click(Sender: TObject); var i:integer; sqlstr:string; begin ADOQuery3.Close; ADOQuery3.SQL.Clear; ADOQuery3.SQL.Add('select * from sheet1 where AAA = '''+trim(edit1.text)+''''); adoquery3.open; 了 sqlstr:=''; for i :=0 to ADOQuery3.FieldCount - 1 do if ADOQuery3.Fields[i].Text='是' then sqlstr:=sqlstr+','+ADOQuery3.Fields[i].FieldName; sqlstr:='select '+sqlstr+' from sheet2 where AAA='''+ADOQuery3.fieldbyname('AAA').AsString+''''; ADOQuery1.Close; ADOQuery1.SQL.Clear; adoquery1.sql.add(sqlstr); adoquery1.open; end;procedure TForm2.Button3Click(Sender: TObject); var i:integer; begin for i := 0 to adoquery1.ComponentCount-1 do if (Components[i] is TEdit)and(TEdit(Components[i]).Name[5] in ['0'..'4']) then TEdit(Components[i]).Visible:= false; end; 备注:上面的adoquery3是查询sheet1中AAA所在的一行,该行中单元格为“是”的列全部在adoquery1中显示。假如sheet1中有100个列字段,而AAA行单元格“是”的字段为5个,BBB行单元格“是”的字段是9个,CCC行单元格是“是”的12个。,不同的对应不同的字段。 我想通过AAA最终查询出5个字段的话,EDIT控件就显示Edit1-Edit5,BBB最终查询9个字段的话,就显示Edit1-Edit9。Edit1-Edit9分别对应BBB查询的第1列到第9列字段。 如何修改呢,谢谢!
var i:integer;
begin
for i := 0 to form1.ComponentCount-1 do
if Components[i] is TEdit then
TEdit(Components[i]).Visible:=
strtoint(TEdit(Components[i]).Name[5])<=ADOQuery1.FieldCount;
end;
procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
begin
for i := 0 to 4 do
if Components[i] is TEdit then
TEdit(Components[i]).Visible:=
strtoint(TEdit(Components[i]).Name[5])<=ADOQuery1.FieldCount;
end;
procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
begin
for i := 0 to form1.ComponentCount-1 do
if (Components[i] is TEdit)and(TEdit(Components[i]).Name[5] in ['0'..'4']) then
TEdit(Components[i]).Visible:=
strtoint(TEdit(Components[i]).Name[5])<=ADOQuery1.FieldCount;
end;
procedure TForm2.Button2Click(Sender: TObject);
var
i:integer;
sqlstr:string;
begin
ADOQuery3.Close;
ADOQuery3.SQL.Clear;
ADOQuery3.SQL.Add('select * from sheet1 where AAA = '''+trim(edit1.text)+'''');
adoquery3.open; 了
sqlstr:='';
for i :=0 to ADOQuery3.FieldCount - 1 do
if ADOQuery3.Fields[i].Text='是' then sqlstr:=sqlstr+','+ADOQuery3.Fields[i].FieldName;
sqlstr:='select '+sqlstr+' from sheet2 where AAA='''+ADOQuery3.fieldbyname('AAA').AsString+'''';
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
adoquery1.sql.add(sqlstr);
adoquery1.open;
end;procedure TForm2.Button3Click(Sender: TObject);
var i:integer;
begin
for i := 0 to adoquery1.ComponentCount-1 do
if (Components[i] is TEdit)and(TEdit(Components[i]).Name[5] in ['0'..'4']) then
TEdit(Components[i]).Visible:= false;
end;
备注:上面的adoquery3是查询sheet1中AAA所在的一行,该行中单元格为“是”的列全部在adoquery1中显示。假如sheet1中有100个列字段,而AAA行单元格“是”的字段为5个,BBB行单元格“是”的字段是9个,CCC行单元格是“是”的12个。,不同的对应不同的字段。
我想通过AAA最终查询出5个字段的话,EDIT控件就显示Edit1-Edit5,BBB最终查询9个字段的话,就显示Edit1-Edit9。Edit1-Edit9分别对应BBB查询的第1列到第9列字段。
如何修改呢,谢谢!