FFildList:TObjectList;//字段列表
TFieldElement = class(TObject)
  private
    FField:string;
    FCaption:string;
  end;procedure TF_Find.InitField;
var
  i:Integer;
  FieldElement:TFieldElement;
begin
  C_FieldList.Clear;
  C_FieldList.OnChange := FieldChange;  for i:= 0 to FFildList.Count-1 do
  begin  
    FieldElement := TFieldElement(FFildList.Items[i]);//请问这句什么意思?
    if Trim(FieldElement.FCaption) <> '' then
      C_FieldList.AddItem(FieldElement.FCaption,FieldElement)
    else
      C_FieldList.AddItem(FieldElement.FField,FieldElement);
  end;
  
  if FFildList.Count > 0 then
  begin
    C_FieldList.ItemIndex := 0;
    C_FieldList.OnChange(C_FieldList);
  end;
end;

解决方案 »

  1.   

    FieldElement := TFieldElement(FFildList.Items[i]);//请问这句什么意思?
    TFieldElement这个类应该有个构造函数,上面就是构造函数代码
      

  2.   

    构造函数不是这样写的吗?TFieldElement.create;为什么搞成这样?
    再有这句什么意思: C_FieldList.OnChange(C_FieldList); 
      

  3.   

    FieldElement := TFieldElement(FFildList.Items[i]);//请问这句什么意思? 这里是从TFieldElement对象列表中取1个元素 ,然后转换为该类型
    C_FieldList.OnChange(C_FieldList); //C_FieldList 执行对象事件 
      

  4.   

    这叫类型转换。因为FFildList.Items[i]返回的是TObject类型,而里面装的是TFieldElement类型,所以要转一下
      

  5.   

    简单来说吧。用户用TFieldElement对象封装了字段(或继承字段)。