各位高手,数组类型只能是基本类型(integer,char等)吗? 可以是类吗 ???因为我要用到知道运行期才知道的一个类型,比如可能会用到100个button,或者50个button,我想动态的创建这些个数的button。 能给些高建吗?

解决方案 »

  1.   

    概念很混乱动态生成Button是100个对象,不是类,它们都类TButton的实例
      

  2.   

    抽象的类体现出来是什么呢?其实你也见过如TForm1=class(TForm)中的TForm1,加 class of 可直接定义如:
    type TClassButton = class of Button举个例子:
    type
      TClassForm = class of TForm;TMainForm = class(TForm)
      ...
    end;var
      TFrm:TClassForm;
      Frm:TForm;
    begin
      TFrm:=TMainForm;
      Frm:=TFrm.Create(Self);
      Frm.Show;
    end;
      

  3.   

    这样是吗?
     var
      A: array of Tbutton;
    begin
      SetLength(A, 100);
      A[0] := Tbutton.create();
      A[0].Top:=40;
      A[0].Left:=50;
      A[0].Show;
    end;这个不性啊??
     对这个语法我真的不懂啊,各位高手给点代码吧,
     动态创建,然后按给定的一个地方显示出来?
      

  4.   

    这个简单的错误相信Delphi已经给出了足够的提示另外你使用了局部变量,难道其它地方不需要使用?
    还忘了指定其容器控件!
      

  5.   

    CustomLabel: array[0..10] of Tlabel;定义的是指针
      

  6.   

    A[0] := Tbutton.create(nil);//返回一个指针
      

  7.   

    应该这样:
    const
      CtlCount=100;
      ATop=40;
      ALeft=50;
    var
      A: array of Tbutton;
      i: Integer;
    begin
      SetLength(A, CtlCount);
      for i:=Low(A) to High(A) do
      begin
        A[i]:=Tbutton.create(self);
        A[i].Width:=40;
        A[i].Height:=25;
        A[i].Top:=ATop+(i)*A[i].Height;
        A[i].Left:=ALeft;
        A[i].Parent:=self;
        A[i].Caption:=IntToStr(i);
        A[i].Show;
      end;
    end;你再不给分我可不理你了~!呵呵 我的分难挣啊 这段代码我测试过 绝对可行 你可以参考
      

  8.   

    A[i].Parent:=self;
    你没这句代码就算你创建了,也不能显示出来
      

  9.   

    恩, self代表当前窗体, 否则按钮显示在哪呢?