public
    Property MyItems:TStringsprocedure TForm1.FormCreate(Sender: TObject);
begin
  MyItems:=TStringlist.Create;
  with MyItems do
  begin
    AddObject('航空母舰',Pic1);
  end
  ComboBox1.Items:=MyItems;
  ComboBox1.DropDownCount:=5;
  ComboBox1.ItemIndex:=0;
end;1.请问以MyItems创建的时候为什么要创建成TStringlist类型,ComboBox1.Items不就是TStrings类型的吗,
2.如果是创建成TStringlist,为什么定义成TStrings类型,
不懂

解决方案 »

  1.   

    TStrings是抽象类,一般用它的子类TStringList来创建实例。
    定义成TStrings保持相容和扩展。
      

  2.   

    TStrings是个抽象类,不能实例化,TStringlist是TStrings子类
    Items定义成TStrings是方便派生
      

  3.   

    1. TStrings是抽象类,是不能实例化的。
    2. 定义成TStringList也没问题。
      

  4.   

    TStrings 很多基础方法没有实现
    get getcount clear  indsert delete 都是虚的
    所以连基本功能都没有
      

  5.   

    1.请问以MyItems创建的时候为什么要创建成TStringlist类型,ComboBox1.Items不就是TStrings类型的吗, 
      TStrings是抽象类,实例化时需要向下转型
    2.如果是创建成TStringlist,为什么定义成TStrings类型
      如果是要用Stringlist,哪么    MyItems:TStrings和MyItems:TStringlist的结果是一样的
      

  6.   

    只有定义,而没实现的方法为抽象方法;含有抽象方法的类为抽象类;抽象方法一般带有abstract关键字
      

  7.   

    simonhehe 的意思是不是只要该类中有一个抽象方法,那它就算上是抽象类了。是吗。
      

  8.   

    delphi的抽象类是可以实例化的,不过会给提示而已。编译器不会强行拒绝。
      

  9.   

    TStrings是个抽象类,TStringList是TStrings的之类。
      

  10.   

    可以看源代码,这是delphi的最大优势,最喜欢的地方
      

  11.   

      怎样从tstrings实例中删除删除一个string???