![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
![]() Код:
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; |
#2
|
|||
|
|||
![]() Как некорректно работает-то?
А связанно это, видимо, с тем, что панель это тоже контейнер и может содержать другие панели и надо бы учитывать этот момент. |
#3
|
|||
|
|||
![]() lmikle, ну может показывать одну панель подряд несколько раз, в общем непонятно.
|
#4
|
|||
|
|||
![]() Попробуй так
Код:
for i := 0 to Form1.ComponentCount - 1 do if Form1.Component[i] is TPanel then begin SetLength(ArPanel, High(ArPanel) + 2); //Установка размера массива большего на 1 ArPanel[High(ArPanel)] := Form1.Controls[i]; end; |
#5
|
|||
|
|||
![]() Black Raider, не помогло...
|
#6
|
|||
|
|||
![]() Цитата:
|