Sign in Join
Wiki copytemporary

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.

Revision 1, last changed by WikiArchive .

Talk about this page

Nobody has opened a bench for this page yet. Sign in to open one.