Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Итерация элементов управления компонента Notebook

Delphi , Компоненты и Классы , Вкладки и Страницы

Итерация элементов управления компонента Notebook

Вот две малениких процедурки, присваивающие заголовкам всех компонентов Label на всех страницах компонента NoteBook значение 'Foo'. (Я вам не говорил, что это будет ПОЛЕЗНЫМ примером!)


procedure TForm1.Button1Click(Sender: TObject);
var
  M, N: Word;
begin
  for N := 0 to TabbedNotebook1.Pages.Count - 1 do
    with TabbedNotebook1.pages.Objects[N] as TTabPage do
      for M := 0 to ControlCount - 1 do
        if Controls[M] is TLabel then
          with Controls[M] as TLabel do
            Caption := 'Foo';
end;

procedure TForm1.TabSet1Change(Sender: TObject; NewTab: Integer;
  var AllowChange: Boolean);
begin
  Notebook1.PageIndex := TabSet1.TabIndex;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
  M, N: Word;
begin
  for N := 0 to TabbedNotebook1.Pages.Count - 1 do
    with Notebook1.pages.Objects[N] as TPage do
      for M := 0 to ControlCount - 1 do
        if Controls[M] is TLabel then
          with Controls[M] as TLabel do
            Caption := 'Foo';

end;

Пример итерации над контролами в приложении на Delphi!

Давайте разберемся, что эти процедуры делают:

Button1Click Эта процедура устанавливает свойство Caption для всех компонентов TLabel на каждой странице TabbedNotebook1 в значение 'Foo'. Она это делает следующим образом: 1. Итерация над страницами заметки с помощью цикла for. 2. Для каждой страницы она использует свойство ControlCount для итерации над контролами на этой странице. 3. Для каждого контрола она проверяет, является ли он компонентом TLabel с помощью оператора if. 4. Если контрол является компонентом TLabel, то она устанавливает его свойство Caption в значение 'Foo'.

TabSet1Change Эта процедура вызывается при изменении активной страницы в TabSet1. Она обновляет индекс активной страницы Notebook1 для соответствия новому индексу вкладки. Это обеспечивает, что активная страница заметки всегда синхронизирована с текущим выбранным вкладкой.

Button2Click Эта процедура идентична Button1Click, за исключением того, что она использует Notebook1.Pages вместо TabbedNotebook1.Pages. Обе процедуры достигают одного и того же результата: установка заголовков для всех контролов-етикет на каждой странице заметки в значение 'Foo'.

Альтернативное решение: Вместо итерации над контролами можно использовать метод FindComponent для поиска всех компонентов TLabel и затем установить их заголовки в цикле. Это подход более эффективен и легче поддерживать.

Например, вы можете создать отдельную процедуру, как это:

procedure SetLabelsCaption(const Value: string);
var
  L: TLabel;
begin
  for N := 0 to TabbedNotebook1.Pages.Count - 1 do
    with TabbedNotebook1.Pages[N].Controls.FindComponent(TLabel) as TLabel do
      if Assigned(L) then
        L.Caption := Value;
end;

Затем вы можете вызывать эту процедуру из событий кнопок:

procedure TForm1.Button1Click(Sender: TObject);
begin
  SetLabelsCaption('Foo');
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  SetLabelsCaption('Foo');
end;

Этот подход более компактен и легче поддерживать, особенно если у вас есть несколько мест, где вам нужно установить заголовки контролов-етикет.

В статье описывается два небольших кода на Delphi, которые итерируют элементы управления компонента Notebook и присваивают заголовкам всех Label-компонентов значение 'Foo'.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Вкладки и Страницы ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-11-30 11:42:55
2024-12-21 14:50:59/0.0030369758605957/0