Как получить число и список всех компонентов, расположенных на TNoteBook
Warp 4 спpашивает у хозяина:
- Хозяяяин, а у меня в pоду была DesqView?
- Hет, не было.
- Хозяяяин, а Windows 3.1 у меня в pоду не было?
- Hет, конечно не было.
- Хозяяяяин, а почему же тогда я такой тоpмозноооой?
procedure TForm1.Button1Click(Sender: TObject);
var
n, p: integer;
begin
ListBox1.Clear;
with Notebook1 dofor n := 0 to ControlCount - 1 dowith TPage(Controls[n]) dobegin
ListBox1.Items.Add('Notebook Page: ' + TPage(Notebook1.Controls[n]).Caption);
for p := 0 to ControlCount - 1 do
ListBox1.Items.Add(Controls[p].name);
ListBox1.Items.Add(EmptyStr);
end;
end;
Для получения количества страниц и списка всех компонентов на TNoteBook можно использовать предоставленный код.
Вот разбивка, что каждый раздел делает:
procedure TForm1.Button1Click(Sender: TObject);: Это обработчик события, который запускается при клике по кнопке Button1.
var n, p: integer;: Эти переменные типа integer объявлены для итерации над контролами на Notebook1.
ListBox1.Clear;: Эта строка очищает любые существующие элементы из списка ListBox1.
with Notebook1 do for n := 0 to ControlCount - 1 do begin: Это цикл, который итерирует по каждой странице на Notebook1. Свойство ControlCount возвращает количество контролов (страниц) на заметке, а Controls[n] получает nth страницу.
with TPage(Controls[n]) do begin: Это вложено в цикл для доступа к свойствам текущей страницы.
ListBox1.Items.Add('Notebook Page: ' + TPage(Notebook1.Controls[n]).Caption);: Эта строка добавляет элемент в список ListBox1, с заголовком текущей страницы. Класс TPage используется для получения заголовка страницы.
for p := 0 to ControlCount - 1 do begin: Это другой цикл, который итерирует по каждому контролу (компоненту) на текущей странице.
ListBox1.Items.Add(Controls[p].name);: Эта строка добавляет имя каждого компонента на текущей странице как новый элемент в список ListBox1.
ListBox1.Items.Add(EmptyStr);: Эта строка добавляет пустую строку для разделения элементов для разных страниц.
Альтернативное решение:
procedureTForm1.Button1Click(Sender:TObject);varn,p:integer;beginListBox1.Clear;forn:=0toNotebook1.PageCount-1dobeginTPage(Notebook1.Pages[n]).Caption;// Получение заголовка страницыListBox1.Items.Add('Notebook Page '+IntToStr(n)+': '+TPage(Notebook1.Pages[n]).Caption);forp:=0toTPage(Notebook1.Pages[n]).ControlCount-1dobeginListBox1.Items.Add(TPage(Notebook1.Pages[n]).Controls[p].name);// Получение имени каждого компонента на страницеend;end;end;
В этом альтернативном решении я использовал Notebook1.PageCount для получения количества страниц в заметке. Затем, для каждой страницы, я использовал TPage(Notebook1.Pages[n]).Caption для получения ее заголовка и добавил его в список вместе с именами ее компонентов.
В статье описывается процедура, которая позволяет получить количество и список всех компонентов, расположенных на TNoteBook в Delphi приложении, путем перебора страниц иControls каждого элемента.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.