with advSGEmployee do
      begin
        Filter.Clear;
        Filteractive := False;
        with filter.add do
        begin
          condition := '!=999999';
          column := 2; 
        end;
      end;
     advSGEmployee.FilterActive:=True;  advSGEmployee.Filter.Clear;
  advSGEmployee.Filteractive := False;
  advSGEmployee.Filter.Add.Condition :='!=999999';
  advSGEmployee.Filter.Add.column := 2;
  advSGEmployee.filteractive := true; 
这2段代码执行起来不一样 楞是没看到 为什么

解决方案 »

  1.   

                    with   filter.add   do                // Add 1个项
                    begin
                        condition   :=   '!=999999';
                        column   :=   2;  
                    end; 上面是对一个项2个属性赋值。    advSGEmployee.Filter.Add.Condition   :='!=999999'; // Add 1个项
        advSGEmployee.Filter.Add.column   :=   2;          // 又Add 1个项上面是对二个项的不同属性赋值,所以执行结果不一样!
      

  2.   

    .Add这是一个方法。.Add.Condition,这是先调用了方法.Add得到了一个返回值,然后再访问该返回值的属性.Condition。由此应该注意到后面的代码写出来实际上是两次调用了.Add方法,得到的也是两个不同的返回值(一先一后)。