
07.06.2010, 10:43
|
Местный
|
|
Регистрация: 31.05.2010
Адрес: Москва
Сообщения: 466
Версия Delphi: 7
Репутация: 40
|
|
попробуй так:
Код:
procedure TForm1.vPanel(comp:Tcomponent);
begin
if (comp is TPanel) then begin
(comp as TPanel).Visible:=true;
if (comp as Tpanel).Parent is Tpanel then vPanel((comp as Tpanel).Parent);
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
i,k: integer; //Переменная для цикла i
ArPanel: array of TControl; //Динамический массив TControl
Vis: boolean; //Переменная, показывающая скрытость или видимость
r: integer; //Переменная, содержащая рандомное значение
begin
//Цикл для нахождения и помещения в дин. массив TControl-ов
for i := 0 to Form1.ComponentCount -1 do
if Form1.components[i] is TPanel then
begin
SetLength(ArPanel, High(ArPanel) + 2); //Установка размера массива большего на 1
ArPanel[High(ArPanel)] := (Form1.components[i] as Tcontrol);
end;
Randomize;
//Фрагмент нужен для того, чтобы не показывать панел второй раз
k:=0;
Repeat
r := Random(High(ArPanel) - Low(ArPanel) +1);
Vis := ArPanel[r].Visible;
vpanel(ArPanel[r]);//.Show;
k:=k+1;
Until (not Vis )or (k=100);
end;
|