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

Создать массив кнопок во время выполнения

Delphi , Компоненты и Классы , RTTI

Создать массив кнопок во время выполнения

Оформил: DeeCo
Автор: http://www.swissdelphicenter.ch

private
   {...}
   procedure RunTimeButtonClick(Sender: TObject);
 end;


   {...}
 var
   Form1: TForm;
   {Declare an Array of TButtons}
   RunTimeButtons: array[1..10] of TButton;

 {...}

 implementation

 {...}

 procedure TForm1.RunTimeButtonClick(Sender: TObject);
 begin
   {Show the Button Nummer that was clicked}
   ShowMessage('Button' + IntToStr((Sender as TButton).Tag) + ' clicked!');
 end;

 procedure TForm1.Button13Click(Sender: TObject);
 var
   i: Byte;
 begin
   for i := 1 to 10 do
   begin
     {Create the buttons}
     RunTimeButtons[i] := TButton.Create(Self);
     with RunTimeButtons[i] do
     begin
       Parent  := Form1;
       Caption := 'Button ' + IntToStr(i);
       Top     := i * Height;
       Tag     := i;
       {Assign a OnClick handler}
       OnClick := RunTimeButtonClick;
       Visible := True;
     end;
   end;
 end;

Программный код на Delphi создает массив TButton-компонентов в runtime. Вот подробное описание того, что код делает:

  1. Объявляется процедура RunTimeButtonClick, которая будет использоваться как обработчик события для кликов по кнопкам.
  2. Создается массив TButtons, называемый RunTimeButtons, с 10 элементами.
  3. В процедуре Button13Click выполняется цикл от 1 до 10.
  4. Внутри цикла каждый элемент в массиве RunTimeButtons инициализируется следующим образом:
    • Создается новый TButton-компонент с помощью метода Create и присваивается текущему элементу массива.
    • Родитель кнопки устанавливается в основное окно (Self).
    • Заголовок кнопки устанавливается в "Кнопка X", где X - значение счетчика цикла.
    • Верхняя позиция кнопки устанавливается в X раз высота кнопки, что создает вертикальную раскладку.
    • Свойство Tag кнопки устанавливается в значение счетчика цикла (X).
    • Обработчик события (RunTimeButtonClick) присваивается событию OnClick кнопки.
    • Свойство Visible кнопки устанавливается в True, что делает ее видимой на форме.

Результатом является создание 10 кнопок в runtime с различными заголовками и позициями, каждая из которых имеет обработчик события, который будет вызван при клике по кнопке. Когда кнопка кликается, процедура RunTimeButtonClick отображает сообщение об ошибке, содержащее номер кнопки, которая была кликана (например, "Кнопка 3 кликана!").

Альтернативное решение:

Вместо создания кнопок в runtime и присваивания их массиву, можно создавать их динамически с помощью цикла и хранить в списке или коллекции. Этоapproach будет упрощать управление кнопками и их свойствами.

Например:

procedure TForm1.Button13Click(Sender: TObject);
var
  i: Integer;
begin
  for i := 1 to 10 do
  begin
    var Button: TButton := TButton.Create(Self);
    Button.Parent := Self;
    Button.Caption := 'Button ' + IntToStr(i);
    Button.Top := i * Height;
    Button.Tag := i;
    Button.OnClick := RunTimeButtonClick;
    Button.Visible := True;
    // Хранение кнопки в списке или коллекции
    Buttons.Add(Button);
  end;
end;

procedure TForm1.RunTimeButtonClick(Sender: TObject);
begin
  ShowMessage('Button ' + IntToStr((Sender as TButton).Tag) + ' clicked!');
end;

В этом примере мы создаем список, называемый Buttons, для хранения динамически созданных кнопок. Затем мы добавляем каждую кнопку в список после ее создания. Это позволяет легко доступаться и управлять кнопками позднее.

В статье описывается создание массива кнопок в динамическом режиме с помощью языка программирования Delphi, где каждая кнопка имеет уникальный номер и на клик можно отображать информацию о номере нажатой кнопки.


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

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




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


:: Главная :: RTTI ::


реклама


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

Время компиляции файла: 2024-08-19 13:29:56
2024-11-21 11:35:55/0.0058441162109375/1