TButton/ru

From Lazarus wiki
Revision as of 18:56, 21 February 2018 by Useroflazarus (talk | contribs) (Created page with "{{TButton}} '''TButton''' image:tbutton.png является компонентом, представляющим собой базовый элемент управле...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
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