TButton/ru

From Free Pascal wiki
Jump to navigationJump to search

Deutsch (de) English (en) español (es) suomi (fi) français (fr) 日本語 (ja) русский (ru)

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

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

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

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

procedure TForm1.Button1Click(Sender: TObject);
begin

end;

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

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

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

  • Создайте новое приложение и разместите элемент управления TButton на форме.
  • Дважды щелкните по кнопке с именем Button1, расположенной на форме (по умолчанию создастся обработчик события OnClick для кнопки с именем Button1 и откроется редактор кода).
  • Добавьте следующий код в обработчик события:
procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMessage('Lazarus makes my day');  //Будет отображено сообщение с текстом...
end;
  • Запустите программу (нажав клавишу <F9>).

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

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

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

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

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

  • Создайте новое пустое графическое приложение с формой Form1 и добавьте StdCtrls в раздел Uses.
  • Измените заголовок формы с Form1 на QuickAdd.
  • Создайте для формы Form1 обработчик события OnCreate (перейдите в Инспектор Объектов и в событии OnCreate щелкните кнопку [...]).
  • Добавьте следующий код:
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;
  • Теперь вы должны создать обработчик события для щелчков мыши.
  • Добавьте класс TForm1 в секцию private в редакторе кода.
  • Добавьте procedure aButtonClick(Sender: TObject); и нажмите клавиши [CTRL] + [Shift] + [c] (опция завершения кода станет активной и создастся процедура TForm1.aButtonClick(Sender: TObject);.
  • Вставьте следующий код:
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;
  • Запустите приложение.
Light bulb  Примечание: 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!

См. также


Компоненты LCL
Вкладка Компоненты
Standard TMainMenu • TPopupMenu • TButton • TLabel • TEdit • TMemo • TToggleBox • TCheckBox • TRadioButton • TListBox • TComboBox • TScrollBar • TGroupBox • TRadioGroup • TCheckGroup • TPanel • TFrame • TActionList
Additional TBitBtn • TSpeedButton • TStaticText • TImage • TShape • TBevel • TPaintBox • TNotebook • TLabeledEdit • TSplitter • TTrayIcon • TControlBar • TFlowPanel • TMaskEdit • TCheckListBox • TScrollBox • TApplicationProperties • TStringGrid • TDrawGrid • TPairSplitter • TColorBox • TColorListBox • TValueListEditor
Common Controls TTrackBar • TProgressBar • TTreeView • TListView • TStatusBar • TToolBar • TCoolBar • TUpDown • TPageControl • TTabControl • THeaderControl • TImageList • TPopupNotifier • TDateTimePicker
Dialogs TOpenDialog • TSaveDialog • TSelectDirectoryDialog • TColorDialog • TFontDialog • TFindDialog • TReplaceDialog • TOpenPictureDialog • TSavePictureDialog • TCalendarDialog • TCalculatorDialog • TPrinterSetupDialog • TPrintDialog • TPageSetupDialog • TTaskDialog
Data Controls TDBNavigator • TDBText • TDBEdit • TDBMemo • TDBImage • TDBListBox • TDBLookupListBox • TDBComboBox • TDBLookupComboBox • TDBCheckBox • TDBRadioGroup • TDBCalendar • TDBGroupBox • TDBGrid • TDBDateTimePicker
Data Access TDataSource • TBufDataset • TMemDataset • TSdfDataSet • TFixedFormatDataSet • TDbf
System TTimer • TIdleTimer • TLazComponentQueue • THTMLHelpDatabase • THTMLBrowserHelpViewer • TAsyncProcess • TProcessUTF8 • TProcess • TSimpleIPCClient • TSimpleIPCServer • TXMLConfig • TEventLog • TServiceManager • TCHMHelpDatabase • TLHelpConnector
Misc TColorButton • TSpinEdit • TFloatSpinEdit • TArrow • TCalendar • TEditButton • TFileNameEdit • TDirectoryEdit • TDateEdit • TTimeEdit • TCalcEdit • TFileListBox • TFilterComboBox • TComboBoxEx • TCheckComboBox • TButtonPanel • TShellTreeView • TShellListView • TXMLPropStorage • TINIPropStorage • TIDEDialogLayoutStorage • TMRUManager • TStrHolder
LazControls TCheckBoxThemed • TDividerBevel • TExtendedNotebook • TListFilterEdit • TListViewFilterEdit • TLvlGraphControl • TShortPathEdit • TSpinEditEx • TFloatSpinEditEx • TTreeFilterEdit • TExtendedTabControl •
RTTI TTIEdit • TTIComboBox • TTIButton • TTICheckBox • TTILabel • TTIGroupBox • TTIRadioGroup • TTICheckGroup • TTICheckListBox • TTIListBox • TTIMemo • TTICalendar • TTIImage • TTIFloatSpinEdit • TTISpinEdit • TTITrackBar • TTIProgressBar • TTIMaskEdit • TTIColorButton • TMultiPropertyLink • TTIPropertyGrid • TTIGrid
SQLdb TSQLQuery • TSQLTransaction • TSQLScript • TSQLConnector • TMSSQLConnection • TSybaseConnection • TPQConnection • TPQTEventMonitor • TOracleConnection • TODBCConnection • TMySQL40Connection • TMySQL41Connection • TMySQL50Connection • TMySQL51Connection • TMySQL55Connection • TMySQL56Connection • TSQLite3Connection • TIBConnection • TFBAdmin • TFBEventMonitor • TSQLDBLibraryLoader
Pascal Script TPSScript • TPSScriptDebugger • TPSDllPlugin • TPSImport_Classes • TPSImport_DateUtils • TPSImport_ComObj • TPSImport_DB • TPSImport_Forms • TPSImport_Controls • TPSImport_StdCtrls • TPSCustomPlugin
SynEdit TSynEdit • TSynCompletion • TSynAutoComplete • TSynMacroRecorder • TSynExporterHTML • TSynPluginSyncroEdit • TSynPasSyn • TSynFreePascalSyn • TSynCppSyn • TSynJavaSyn • TSynPerlSyn • TSynHTMLSyn • TSynXMLSyn • TSynLFMSyn • TSynDiffSyn • TSynUNIXShellScriptSyn • TSynCssSyn • TSynPHPSyn • TSynTeXSyn • TSynSQLSyn • TSynPythonSyn • TSynVBSyn • TSynAnySyn • TSynMultiSyn • TSynBatSyn • TSynIniSyn • TSynPoSyn
Chart TChart • TListChartSource • TRandomChartSource • TUserDefinedChartSource • TCalculatedChartSource • TDbChartSource • TChartToolset • TChartAxisTransformations • TChartStyles • TChartLegendPanel • TChartNavScrollBar • TChartNavPanel • TIntervalChartSource • TDateTimeIntervalChartSource • TChartListBox • TChartExtentLink • TChartImageList
IPro TIpFileDataProvider • TIpHttpDataProvider • TIpHtmlPanel