Код:
procedure TForm1.Button1Click(Sender: TObject);
var
i: integer; //Переменная для цикла i
ArPanel: array of TControl; //Динамический массив TControl
Vis: boolean; //Переменная, показывающая скрытость или видимость
r: integer; //Переменная, содержащая рандомное значение
begin
//Цикл для нахождения и помещения в дин. массив TControl-ов
for i := 0 to Form1.ControlCount -1 do
if Form1.Controls[i] is TPanel then
begin
SetLength(ArPanel, High(ArPanel) + 2); //Установка размера массива большего на 1
ArPanel[High(ArPanel)] := Form1.Controls[i];
end;
Randomize;
//Фрагмент нужен для того, чтобы не показывать панел второй раз
Repeat
r := Random(High(ArPanel) - Low(ArPanel) +1);
Vis := ArPanel[r].Visible;
ArPanel[r].Show;
Until not Vis ;
end;
этот код перебирает в произвольном порядке все панели. и все замечательно, если панели раскиданы по форме. а вот если панели накладывать одну на другую, то почему-то работает не корректно... с чем может быть это связано?