Difference between revisions of "TButton/ru"

From Lazarus wiki
Jump to navigationJump to search
(Created page with "{{TButton}} '''TButton''' image:tbutton.png является компонентом, представляющим собой базовый элемент управле...")
 
m (Fixed syntax highlighting)
 
Line 8: Line 8:
  
 
Обработчик события щелчка мыши можно легко создать с помощью двойного щелчка по расположенной на форме кнопки (или выбрать событие OnClick для данной кнопки в Инспекторе Объектов). Обработчик события для кнопки с именем ''Button1'', расположенной на форме с именем ''Form1'', будет выглядеть так:
 
Обработчик события щелчка мыши можно легко создать с помощью двойного щелчка по расположенной на форме кнопки (или выбрать событие OnClick для данной кнопки в Инспекторе Объектов). Обработчик события для кнопки с именем ''Button1'', расположенной на форме с именем ''Form1'', будет выглядеть так:
<syntaxhighlight>
+
 
 +
<syntaxhighlight lang=pascal>
 
procedure TForm1.Button1Click(Sender: TObject);
 
procedure TForm1.Button1Click(Sender: TObject);
 
begin
 
begin
Line 14: Line 15:
 
end;
 
end;
 
</syntaxhighlight>
 
</syntaxhighlight>
 +
 
Вы можете поместить ваш код между операторами '''begin''' и '''end''', который будет вызываться при нажатии кнопки '''Button1'''.
 
Вы можете поместить ваш код между операторами '''begin''' и '''end''', который будет вызываться при нажатии кнопки '''Button1'''.
  
 
Практически все доступные руководства для начинающих используют компонент TButton в качестве введения в [[Glossary#OO|Объектно-ориентированное программирование]] в среде Lazarus. Следующие руководства хорошо подходят для новичков, чтобы понять как использовать кнопки:
 
Практически все доступные руководства для начинающих используют компонент TButton в качестве введения в [[Glossary#OO|Объектно-ориентированное программирование]] в среде Lazarus. Следующие руководства хорошо подходят для новичков, чтобы понять как использовать кнопки:
 +
 
* [[Form_Tutorial#The_first_GUI_application|Первое графическое приложение]] для новичков
 
* [[Form_Tutorial#The_first_GUI_application|Первое графическое приложение]] для новичков
 
* [[Lazarus_Tutorial/ru#Начнем - Ваша первая Lazarus-программа!|Ваша первая программа на Lazarus]] руководство по Lazarus
 
* [[Lazarus_Tutorial/ru#Начнем - Ваша первая Lazarus-программа!|Ваша первая программа на Lazarus]] руководство по Lazarus
Line 22: Line 25:
  
 
== Простой пример ==
 
== Простой пример ==
 +
 
* Создайте новое приложение и разместите элемент управления '''TButton''' на форме.
 
* Создайте новое приложение и разместите элемент управления '''TButton''' на форме.
 
* Дважды щелкните по кнопке с именем ''Button1'', расположенной на форме (по умолчанию создастся обработчик события ''OnClick'' для кнопки с именем ''Button1'' и откроется редактор кода).
 
* Дважды щелкните по кнопке с именем ''Button1'', расположенной на форме (по умолчанию создастся обработчик события ''OnClick'' для кнопки с именем ''Button1'' и откроется редактор кода).
 
* Добавьте следующий код в обработчик события:
 
* Добавьте следующий код в обработчик события:
<syntaxhighlight>
+
 
 +
<syntaxhighlight lang=pascal>
 
procedure TForm1.Button1Click(Sender: TObject);
 
procedure TForm1.Button1Click(Sender: TObject);
 
begin
 
begin
Line 31: Line 36:
 
end;
 
end;
 
</syntaxhighlight>
 
</syntaxhighlight>
 +
 
* Запустите программу (нажав клавишу <F9>).
 
* Запустите программу (нажав клавишу <F9>).
  
 
== Щелчок правой кнопкой мыши ==
 
== Щелчок правой кнопкой мыши ==
 +
 
Каждый элемент управления '''TButton''' имеет необязательное свойство ''PopupMenu'', через которое можно связать элемент управления [[TPopupMenu/ru|TPopupMenu]] с кнопкой, в результате чего всякий раз, когда вы щелкните правой кнопкой мыши по кнопке будет отображаться всплывающее меню.
 
Каждый элемент управления '''TButton''' имеет необязательное свойство ''PopupMenu'', через которое можно связать элемент управления [[TPopupMenu/ru|TPopupMenu]] с кнопкой, в результате чего всякий раз, когда вы щелкните правой кнопкой мыши по кнопке будет отображаться всплывающее меню.
  
 
== Динамически создаваемая кнопка ==
 
== Динамически создаваемая кнопка ==
 +
 
Иногда, вместо создания кнопок (или других компонентов) в режиме разработки в Lazarus с помощью дизайнера форм легче создавать их динамически в режиме выполнения программы. Данный подход особенно полезен, если у вас есть часто повторяющиеся кнопки на форме.
 
Иногда, вместо создания кнопок (или других компонентов) в режиме разработки в Lazarus с помощью дизайнера форм легче создавать их динамически в режиме выполнения программы. Данный подход особенно полезен, если у вас есть часто повторяющиеся кнопки на форме.
  
Line 44: Line 52:
 
* Создайте для формы Form1 обработчик события ''OnCreate'' (перейдите в Инспектор Объектов и в событии ''OnCreate'' щелкните кнопку [...]).
 
* Создайте для формы Form1 обработчик события ''OnCreate'' (перейдите в Инспектор Объектов и в событии ''OnCreate'' щелкните кнопку [...]).
 
* Добавьте следующий код:
 
* Добавьте следующий код:
<syntaxhighlight>
+
 
 +
<syntaxhighlight lang=pascal>
 
procedure TForm1.FormCreate(Sender: TObject);
 
procedure TForm1.FormCreate(Sender: TObject);
 
var
 
var
Line 62: Line 71:
 
end;  
 
end;  
 
</syntaxhighlight>
 
</syntaxhighlight>
 +
 
* Теперь вы должны создать обработчик события для щелчков мыши.
 
* Теперь вы должны создать обработчик события для щелчков мыши.
 
* Добавьте класс ''TForm1'' в секцию '''<code>private</code>''' в редакторе кода.
 
* Добавьте класс ''TForm1'' в секцию '''<code>private</code>''' в редакторе кода.
 
* Добавьте '''<code>procedure aButtonClick(Sender: TObject);</code>''' и нажмите клавиши [CTRL] + [Shift] + [c] (опция завершения кода станет активной и создастся процедура <code>TForm1.aButtonClick(Sender: TObject);</code>.
 
* Добавьте '''<code>procedure aButtonClick(Sender: TObject);</code>''' и нажмите клавиши [CTRL] + [Shift] + [c] (опция завершения кода станет активной и создастся процедура <code>TForm1.aButtonClick(Sender: TObject);</code>.
 
* Вставьте следующий код:
 
* Вставьте следующий код:
<syntaxhighlight>
+
 
 +
<syntaxhighlight lang=pascal>
 
procedure TForm1.aButtonClick(Sender: TObject);
 
procedure TForm1.aButtonClick(Sender: TObject);
 
const
 
const
Line 76: Line 87:
 
     TryStrToInt(TButton(Sender).Caption, i)      //попытка преобразования текста в число
 
     TryStrToInt(TButton(Sender).Caption, i)      //попытка преобразования текста в число
 
   then begin
 
   then begin
     Cnt:=Cnt + i;                                 //увеличение значения счетчика
+
     Cnt:=Cnt + i;                                 //увеличение значения счетчика
     Caption:='QuickAdd: '+IntToStr(Cnt);         //вывод результата в заголовок формы
+
     Caption:='QuickAdd: '+IntToStr(Cnt);           //вывод результата в заголовок формы
 
   end;
 
   end;
 
end;
 
end;
 
</syntaxhighlight>
 
</syntaxhighlight>
 +
 
* Запустите приложение.
 
* Запустите приложение.
 
{{Note|You can assign every imaginable event handlers to your buttons, as long as this the form '''<code>procedure <class>.<name of procedure>(Sender: TObject);</code>''' has. Thus, you can use one from another class!}}
 
{{Note|You can assign every imaginable event handlers to your buttons, as long as this the form '''<code>procedure <class>.<name of procedure>(Sender: TObject);</code>''' has. Thus, you can use one from another class!}}
  
 
== См. также ==
 
== См. также ==
 +
 
* [[doc:lcl/stdctrls/tbutton.html|Документация по TButton]]
 
* [[doc:lcl/stdctrls/tbutton.html|Документация по TButton]]
 
* [[TBitBtn/ru|TBitBtn]]
 
* [[TBitBtn/ru|TBitBtn]]

Latest revision as of 05:55, 29 February 2020

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