我这个alarmbutton是一个全局变量,在另一个unit里定义的,你说的指拥有者是什么意思
是说它的作用域吗,还是.parent?

解决方案 »

  1.   

    你的写法是不正确的,应该这样:  SetLength(alarmButton, alarmButtonColumn);
      for i := 0 to alarmButtonColumn - 1 do
      begin
        SetLength(alarmButton[i], alarmButtonRow);
        for j := 0 to alarmButtonRow - 1 do
        begin
          alarmButton[i][j] := BasicButton.Create(Form1);
          alarmButton[i][j].Parent := Form1;
          alarmButton[i][j].Top := 50 + j * 30;
          alarmButton[i][j].Left := 50 + i * 50;
          alarmButton[i][j].Caption := 'asdasd';
          alarmButton[i][j].Show;
        end;
      end;
      

  2.   

        我不觉得你的程序和我的程序有什么区别啊,只是我把setlength(alarmButton[i],alarmButtonRow) 放在外面的循环里
        并且,我的程序在运行中是没有问题的,可以生成控件,并且都可以使用(可根据onclick
    调用不同的东西),就是在关闭整个程序的时候会出现那个错误提示
      

  3.   

    怎么会没区别呢?
    更省事的写法。  SetLength(alarmButton, alarmButtonColumn,alarmButtonRow);
      for i := 0 to alarmButtonColumn - 1 do
        for j := 0 to alarmButtonRow - 1 do
        begin
          alarmButton[i][j] := BasicButton.Create(Form1);
          alarmButton[i][j].Parent := Form1;
          alarmButton[i][j].Top := 50 + j * 30;
          alarmButton[i][j].Left := 50 + i * 50;
          alarmButton[i][j].Caption := 'asdasd';
          alarmButton[i][j].Show;
        end;
      

  4.   

    为什么我的写法没问题而你的写法有问题,
    请你仔细看一下Delphi中关于SetLength的帮助。
      

  5.   

        多谢了,不过我还是不明白我分两次SetLength()为什么会和你的一次setlength()和
    放在不同地方的setlength()会不同,难道这两种分配方法,引用位置会有不同吗?