Показать сообщение отдельно
  #10  
Старый 07.06.2010, 21:52
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,096
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Значится так.
Выбрасывай свой код нафиг, т.к. у тебя там несколько проблем, которые так просто не решишь. Тебе надо показать ВСЕ панели случайным образом. Так?

Код:
procedure TForm1.ShowPanels(APanels : Array Of TPanel);
var
  I, Idx : Integer;
begin
  For I := Low(APanels) To High(APanels) Do
    Begin
       Idx := Random(Length(APanels));
       While APanels[Idx].Visible Do
           Begin
              Inc(AIdx);
              If Idx = High(APanels)+1 Then AIdx := Low(APanels);
           End;
       APanels[Idx].Visible := True;
    End;
end;

Что делает код.
Он выполняет цикл столько раз, скольно у тебя панелей.
Внутри каждой итерации он генерит случайный индекс панели в их, панелей, массиве. Далее, если панель уже видима, то он циклически сдвигает этот индекс на 1, пока не найдет первую невидимую панель. Тогда он делает ее видимой и переходит к следующей итерации внешнего цикла.

Ну а массив панелей ты и так умеешь собирать. Не вставлял этот код для простоты понимания.