这个简单: procedure TForm_QueryBill.SetEyeDataSet(ADataSet: TClientDataSet); var I: Integer; begin if FieldComboBox.Items.Count <> 0 then FieldComboBox.Items.Clear; FEyeDataSet := ADataSet; for I := 0 to FEyeDataSet.FieldCount - 1 do begin FEyeDataSet.Fields[I].DisplayLabel := FieldList[I]; Field_ClientDataSet.Fields[I].DisplayLabel:=FieldList[I]; end; with FEyeDataSet do begin for I := 0 to FEyeDataSet.FieldCount - 1 do begin if not Fields[I].Visible then Continue; if not CanFilter(Fields[I]) then Continue; FieldComboBox.Items.AddObject(Fields[I].DisplayLabel, Fields[I]); end; end; FFilterStr := ''; end;
procedure TForm_QueryBill.SetEyeDataSet(ADataSet: TClientDataSet);
var
I: Integer;
begin
if FieldComboBox.Items.Count <> 0 then
FieldComboBox.Items.Clear;
FEyeDataSet := ADataSet;
for I := 0 to FEyeDataSet.FieldCount - 1 do
begin
FEyeDataSet.Fields[I].DisplayLabel := FieldList[I];
Field_ClientDataSet.Fields[I].DisplayLabel:=FieldList[I];
end;
with FEyeDataSet do
begin
for I := 0 to FEyeDataSet.FieldCount - 1 do
begin
if not Fields[I].Visible then Continue;
if not CanFilter(Fields[I]) then Continue;
FieldComboBox.Items.AddObject(Fields[I].DisplayLabel, Fields[I]);
end;
end;
FFilterStr := '';
end;
CurField := TField(FieldComboBox.Items.Objects[FieldComboBox.ItemIndex]);
FieldComboBox.Items.AddObject(Fields[I].DisplayLabel, Fields[I]);