TButton/es

From Lazarus wiki
Jump to: navigation, search

Deutsch (de) English (en) español (es) suomi (fi) 日本語 (ja)

Un TButton tbutton.png es un componente que provee un control básico de presionar un botón. Está disponible en la Standard_tab/es de la Component Palette.

Un TButton es un de los controles más básicos en un Form. Haciendo click con el ratón sobre él (o mediante la tecla [tab] sobre el botón y presionándole mediante la tecla Entrar/Intro/Enter), se activa una acción. Ese click se llama evento. Para esto se necesita un event handler que se llama después del salto.

Se puede añadir un botón en un formulario haciendo click en TButton (un botón cuadrado con un "OK" en el medio) en la paleta de componentes Standard y ubicarlo haciendo click en el formulario.

Para acceder fácilmente al manejador de evento para el click del ratón basta con hacer doble click sobre el botón que se creó en el formulario (o en el inspector de objetos, seleccionar el evento "OnClick" del botón). El manejador de evento para un Button1 en un formulario Form1 tendrá este aspecto:

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

Entre las sentencias begin y end se puede escribir el código que será ejecutado cuando Button1 es presionado.

Casi todos los tutoriales de principiantes disponibles utilizan TButtons como una entrada fácil en la Programación Orientada a Objetos con Lazarus. Los siguientes tutoriales son adecuados para que los principiantes entiendan el uso de los botones:

Un ejemplo sencillo

  • Crea una nueva aplicación y suelta un TButton en el formulario (Form).
  • Haz doble click sobre ese Button1 en el formulario (el método predeterminado para el evento: OnClick se crea para Button1y se abre el editor de código fuente).
  • Agrega el siguiente código en el procedimiento:
procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMessage('Lazarus me alegró el día');  //Se muestra un mensaje con ese contenido (texto)...
end;
  • Corre o ejecuta tu programa (con la tecla <F9> o presionando el botón verde de Play).

Generar un botón dinámicamente

A veces, en lugar de crear botones (u otros componentes) con el diseñador de formularios de Lazarus, es más fácil crearlos dinámicamente en tiempo de ejecución. Este enfoque es útil especialmente si tiene continuamente botones repetidos en un formulario (aunque también se pueden copiar y pegar en el formulario en tiempo de diseño).

Esto se puede lograr como en el siguiente ejemplo (una calculadora rápida):

  • Crea una nueva GUI application en blanco con el formulario Form1 y agrega StdCtrls a la Cláusula uses (ahí es donde está TButton).
  • Cambia el caption Form1 a Suma Rápida.
  • Crea el método (procedure) para el evento OnCreate del Form1 (en el Inspector de Objetos debes ir hasta el evento OnCreate y hacer click en el botón [...]).
  • Agrega el siguiente código:
procedure TForm1.FormCreate(Sender: TObject);
var
  i: Integer;
  aButton: TButton;
begin
  for i:=0 to 9 do begin              //crea 10 botones 
    aButton:=TButton.Create(Self);    //Crea botón, el dueño (Owner) es Form1, donde el botón se libera luego
    aButton.Parent:=Self;             //determina donde se mostrará
    aButton.Width:=aButton.Height;    //El ancho debe corresponder a la altura de los botones
    aButton.Left:=i*aButton.Width;    //Distancia desde la izquierda
    aButton.Caption:=IntToStr(i);     //Captions (leyendas) de los botones (0.9)
    aButton.OnClick:=@aButtonClick;   //El controlador de eventos para el botón -> se creará aún
  end;
  Self.Height:=aButton.Height;        //Altura del formulario debe corresponder a la altura de los botones
  Self.Width:=aButton.Width*10;       //Ancho del formulario para que coincida con el ancho de todos los botones
end;
  • Ahora debes crear el controlador de eventos para los clics del botón,
  • en el editor del código, ingresando su clase (class) TForm1 en la sección private.
  • Agrega procedure aButtonClick(Sender: TObject); y presiona las teclas [CTRL] + [Shift] + [c] (La finalización del código se activa y crea el procedimiento TForm1.aButtonClick(Sender: TObject);.
  • Pega el siguiente código:
procedure TForm1.aButtonClick(Sender: TObject);
const
  Cnt: Integer = 0;
var
  i: Integer;
begin
  if (Sender is TButton) and                       //Llamado el controlador de eventos de un botón?
     TryStrToInt(TButton(Sender).Caption, i)       //entonces intente convertir la etiqueta (Texto de la leyenda/Caption) en un número entero.
  then begin
    Cnt:=Cnt + i;                                 //El contador de la suma se incrementa por el número de entrechende ¿?
    Caption:='Suma rápida: '+IntToStr(Cnt);       //Escriba el resultado en el título del formulario
  end;
end;
  • Ejecuta tu aplicación.
  • Debería verse así:

quickadd.png

Note-icon.png

Note: Puedes asignar todos los manejadores de eventos imaginables a tus botones, siempre y cuando estén en el formulario procedure <class>.<name of procedure>(Sender: TObject);. Por lo tanto, puedes utilizar uno de otra clase!!

Lea también


LCL Components
Component Tab Components
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 • TTreeFilterEdit • TShortPathEdit • TLvlGraphControl
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