![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
![]() Как узнать количество компонентов на Panel или GroupBox.
Когда использую Код:
GroupBox.ComponentCount |
#2
|
|||
|
|||
![]() Похоже, что придется считать в цикле (с учетом свойства Parent) ...
|
#3
|
|||
|
|||
![]() Как вариант, что-то вроде этого :
Код:
procedure TForm1.Button3Click(Sender: TObject); Var c,i : integer; begin c:=0; for i:=0 to (Form1.ComponentCount-1) do begin if (Form1.Components[i] is TControl) then begin if ((Form1.Components[i] as TControl).Parent.Name='GroupBox1') then c:=c+1; end; end; ShowMessage('Count='+IntToStr(c)); end; |
#4
|
|||
|
|||
![]() Придётся перебирать все компоненты формы, чтобы узнать, что расположено в GroupBox? На форме до фига компонентов. Программа работать будет слишком медленно.
|
#5
|
|||
|
|||
![]() Расскажу подробней зачем это надо.
Программа делает отчёты. Пользователь выбирает из RadioGroup тип отчёта. Появляется Panel или GroupBox, на которой он (пользователь) может устанавливать параметры отчёта. Например, отчёт по одной фабрике, или по двум, или...и т.д. Поля для ввода фабрики, по которым делается отчёт, создаются динамически. Пользователь нажимает кнопку "Добавить фабрику" и в GroupBox появляется ещё одно поле. Количество этих полей должно равняться количеству столбцов в отчёте (1 столбец - 1 фабрика). Вот для этого и нужно посчитать количество полей? Просматривать каждый компонент формы слиииишкооом дооолгооо. |
#6
|
|||
|
|||
![]() Вы говорили о компонентах :
Цитата:
а не о "полях".. |