初衷是用TComboBox组件CBFilter显示数据模块DataMod中表Table1的字段列表
请问下面两个语句差别在那里(CBFilter在FilterForm中)
我写的,语法过了,执行的时候在列表中无任何值
procedure TFilterForm.FormCreate(Sender: TObject);
var
 i:integer;begin
     with FilterForm.CBFilter do
     begin
        for i:=0 to DataMod.Table1.FieldCount-1 do
        begin
                Items[i]:=DataMod.Table1.Fields[i].FieldName;
        end;
     end;end;
例子写的,执行正确,但with...do语句能这样用哦??望高手解答呀
procedure TFilterForm.FormCreate(Sender: TObject);
var
  i: integer;
begin
  with DM.Table1 do begin
    for i := 0 to FieldCount - 1 do
      CBField.Items.Add(Fields[i].FieldName);
  end;
end;

解决方案 »

  1.   

    begin
         with FilterForm.CBFilter do
         begin
            Items.Clear;
            for i:=0 to DataMod.Table1.FieldCount-1 do
            begin
                    Items.AddString(DataMod.Table1.Fields[i].FieldName);
            end;
         end;end;
      

  2.   

    呵呵 with  do 只是方便让你少写那些重复的代码而已。执行的时候没有任何值?  你看看DM.Table1.Active:=True  吗?
      

  3.   

    题外
    zhangtz(风情):
     with  do 并不只是方便让你少写那些重复的代码,对目标代码也能有所优化的。
      

  4.   

    //--------------呵呵 with  do 只是方便让你少写那些重复的代码而已。
    --------------------------------------------------------------------
    不赞同
    减少每次寻址,只计算偏移量使程序更快