Array of TPanel in Delphi not show

830 views Asked by At
for y:=32 downto 1 do begin
  for x := 1 to 16 do begin
    PanelArray[x,y]:=TPanel.create(self);
    PanelArray[x,y].parent:=self;
    PanelArray[x,y].Color:=clBlack;
    PanelArray[x,y].Enabled:=true;
    PanelArray[x,y].Show;
    PanelArray[x,y].BevelOuter:=bvNone;
    PanelArray[x,y].OnClick:=Panel1Click;
    PanelArray[x,y].Visible:=true;
    PanelArray[x,y].width:=10;
    PanelArray[x,y].height:=10;
    PanelArray[x,y].Refresh;
  end;
end;
1

There are 1 answers

6
Dave Olson On

All 512 are being created, they're just invisible. You need to set the ParentBackground to "false":

for y:=32 downto 1 do begin
  for x := 1 to 16 do begin
    PanelArray[x,y]:=TPanel.create(self);

    ///////////
    PanelArray[x,y].ParentBackground := false;
    ///////////

    PanelArray[x,y].parent:=self;
    PanelArray[x,y].Color:=clBlack;
    PanelArray[x,y].BevelOuter:=bvNone;
    PanelArray[x,y].OnClick:=Panel1Click;
    PanelArray[x,y].width:=10;
    PanelArray[x,y].height:=10;
  end;
end;

I also removed the various needless lines of code that were present in your question. Such as calling Show and Refresh, and setting Enabled and Visible.