Копия викизеркало

Это зеркало вики с pascal.chat. Правка, история и вход — там.

TButton/ru

Deutsch · English · Español · Français · Suomi · Русский · 日本語

TButton является компонентом, представляющим собой базовый элемент управления в виде кнопки. Данный компонент доступен на вкладке Standard палитры компонентов.

Компонент TButton является одним из самых основных элементов управления, располагаемых на форме. Щелкая мышью по кнопке (или выбирая её с помощью клавиши [Tab] и нажимая клавишу [Enter]) происходит срабатывание действия. Этот щелчок называется событием. Для его обработки вам необходим обработчик события.

Вы можете добавить кнопку на форму, щелкнув на элемент TButton (прямоугольная кнопка с надписью "OK" по середине), расположенный на вкладке Standard палитры компонентов, и пометив его на форму с помощью щелчка мыши.

Обработчик события щелчка мыши можно легко создать с помощью двойного щелчка по расположенной на форме кнопки (или выбрать событие OnClick для данной кнопки в Инспекторе Объектов). Обработчик события для кнопки с именем Button1, расположенной на форме с именем Form1, будет выглядеть так:

pascal
procedure TForm1.Button1Click(Sender: TObject);
begin

end;

Вы можете поместить ваш код между операторами begin и end, который будет вызываться при нажатии кнопки Button1.

Практически все доступные руководства для начинающих используют компонент TButton в качестве введения в Объектно-ориентированное программирование в среде Lazarus. Следующие руководства хорошо подходят для новичков, чтобы понять как использовать кнопки:

Простой пример

pascal
procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMessage('Lazarus makes my day');  //Будет отображено сообщение с текстом...
end;

Щелчок правой кнопкой мыши

Каждый элемент управления TButton имеет необязательное свойство PopupMenu, через которое можно связать элемент управления TPopupMenu с кнопкой, в результате чего всякий раз, когда вы щелкните правой кнопкой мыши по кнопке будет отображаться всплывающее меню.

Динамически создаваемая кнопка

Иногда, вместо создания кнопок (или других компонентов) в режиме разработки в Lazarus с помощью дизайнера форм легче создавать их динамически в режиме выполнения программы. Данный подход особенно полезен, если у вас есть часто повторяющиеся кнопки на форме.

Этого можно достичь, как показано в следующем примере (простой калькулятор):

pascal
procedure TForm1.FormCreate(Sender: TObject);
var
  i: Integer;
  aButton: TButton;
begin
  for i:=0 to 9 do begin              //создаем 10 кнопок 
    aButton:=TButton.Create(Self);    //создаем кнопки в родительском элементе Form1
    aButton.Parent:=Self;             //определяем, где они будут отображаться
    aButton.Width:=aButton.Height;    //ширина каждой кнопки должна соответствовать её высоте
    aButton.Left:=i*aButton.Width;    //расстояние слева
    aButton.Caption:=IntToStr(i);     //заголовки кнопок (0..9)
    aButton.OnClick:=@aButtonClick;   //обработчик события для кнопок -> будет ещё создан
  end;
  Self.Height:=aButton.Height;        //высота формы должна соответствовать высоте кнопок
  Self.Width:=aButton.Width*10;       //ширина формы для соответствия ширины всех кнопок
end;
pascal
procedure TForm1.aButtonClick(Sender: TObject);
const
  Cnt: Integer = 0;
var
  i: Integer;
begin
  if (Sender is TButton) and                       //вызывается ли обработчик события кнопки?
     TryStrToInt(TButton(Sender).Caption, i)       //попытка преобразования текста в число
  then begin
    Cnt:=Cnt + i;                                  //увеличение значения счетчика
    Caption:='QuickAdd: '+IntToStr(Cnt);           //вывод результата в заголовок формы
  end;
end;

Note: You can assign every imaginable event handlers to your buttons, as long as this the form procedure <class>.<name of procedure>(Sender: TObject); has. Thus, you can use one from another class!

См. также


From the Free Pascal wiki, page "TButton/ru", as it stood on 2020-02-29 after a change by Trev, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's Licensing page. If you have concerns about this material, message the admin.

Версия 1, последнее изменение: WikiArchive, .