TButton/fi

From Free Pascal wiki
Revision as of 17:08, 18 January 2017 by Djzepi (talk | contribs)

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

TButton tbutton.png on komponentti, joka tarjoaa painonapin perustoiminnot. Se löytyy komponenttipaletin Standard-välilehdeltä.


TButton on yksi useimmin käytetyistä komponenteista lomakkeella. Klikkaamalla hiirellä sitä ( tai siirrytään sille <tab>-näppäimellä ja painetaan <enter>-näppäintä) niin tapahtuma syntyy. Tämä klikkaus kutsuu tapahtumaa. Tähän tarvitaan tapahtumakäsittelijää johon kutsun jälkeen hypätään.

Lisätään painike lomakkeelle, klikkaamalla TButton-komponenttia (painikkeen kuvake on se jossa on "OK" teksti keskellä) komponenttipaletin Standard-välilehdellä ja asettamalla se klikkauksella lomakkeelle.

Tapahtumakäsittelijä saadaan hiiren napsautuksella voidaan melko helposti, Tuplaklikkaa Button:a(tai komponenttimuokkaimessa valitaan Button:n onclick tapahtuma). Button1 tapahtuma lomakkeella Form1 näyttää tältä:

procedure TForm1.Button1Click(Sender: TObject);
begin

end;

Begin ja end lauseiden välille kirjoitetaan koodi, jota kutsutaan, kun Button1:stä klikataan.

Yleensä aloittelijoiden oppaat käyttävät TButton:a helppona tulona olio-ohjelmointiin Lazaruksella. Seuraavat oppaat sopivat hyvin aloittelijoille ymmärtääkseen painikkeiden käytön:

Yksinkertainen esimerkki

  • Luo uusi sovellus, vedä ja pudota TButton lomakkeelle.
  • Tuplaklikkaa tätä Button1-painiketta lomakkeella (luodaan Button1 oletuskäsittelijä: onClick, lähdekoodieditori avautuu).
  • Lisää seuraava koodi tapahtumakäsittelijään (lisää puuttuva rivi):
procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMessage('Lazarus makes my day');  //A message will be displayed with the content...
end;
  • Käynnistä ohjelma (esim. funktionäppäimellä F9).

Dynaamisesti luotu painike

Joskus suunnitteluaikaisen luomisen sijasta painikkeita (tai muita komponentteja), on helpompaa luoda niitä dynaamisesti suorituksen aikana. Tämä lähestymistapa on hyödyllinen varsinkin jos täytyy tehdä toistuvia painikkeita lomakkeelle.

Tämä voidaan saavuttaa kuten seuraavassa esimerkissä (nopeasti tehty laskin):

  • Luo uusi tyhjä graafinen sovellus lomakkeelle Form1 ja lisää StdCtrls uses lauseeseen (koska siellä on TButton määritelty).
  • vaihda caption Form1 --> QuickAdd.
  • Luo OnCreate tapahtumankäsittelijä Form1:lle (Siirry komponenttimuokkaimessa tapahtumaan OnCreate ja klikkaa painonappia [...]).
  • Täydennä koodi seuraavanlaiseksi:
procedure TForm1.FormCreate(Sender: TObject);
var
  i: Integer;
  aButton: TButton;
begin
  for i:=0 to 9 do begin              //create 10 Buttons 
    aButton:=TButton.Create(Self);    //create Button, Owner is Form1, where the button is released later
    aButton.Parent:=Self;             //determine where it is to be displayed
    aButton.Width:=aButton.Height;    //Width should correspond to the height of the buttons
    aButton.Left:=i*aButton.Width;    //Distance from left
    aButton.Caption:=IntToStr(i);     //Captions of the buttons (0.9)
    aButton.OnClick:=@aButtonClick;   //the event handler for the button -> will be created yet
  end;
  Self.Height:=aButton.Height;        //Height of the form should correspond to the height of the buttons
  Self.Width:=aButton.Width*10;       //Width of the form to match the width of all buttons
end;
  • Nyt täytyy luoda tapahtuman käsittelijä painikkeen klikkaukseen.
  • Lähdekoodieditorissa, siirry luokan TForm1 osioon private.
  • Lisää procedure aButtonClick(Sender: TObject); ja paina näppäimiä <CTRL> + <Shift> + <c> (Koodin täydentäjä tulee aktiiviseksi ja luo aliohjelman TForm1.aButtonClick(Sender: TObject);.
  • Täydennä lähdekoodi seuraavaksi:
procedure TForm1.aButtonClick(Sender: TObject);
const
  Cnt: Integer = 0;
var
  i: Integer;
begin
  if (Sender is TButton) and                       //called the event handler of a button out?
     TryStrToInt(TButton(Sender).Caption, i)       //then try to convert the label in a integer
  then begin
    Cnt:=Cnt + i;                                 //the adding counter is incremented by the number of entrechende
    Caption:='QuickAdd: '+IntToStr(Cnt);          //write the result to the caption of the form
  end;
end;
  • Käynnistä sovellus.
Note-icon.png

Huomaa: Painikkeiden tapahtumankäsittelijäksi voidaan liittää mikä tahansa lomakkeella oleva procedure <class>.<name of procedure>(Sender: TObject);. Siten voidaan käyttää yhtä ja samaa aliohjelmaa muissakin luokissa!

Katso myös


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 • TTaskDialog • TOpenPictureDialog • TSavePictureDialog • TCalendarDialog • TCalculatorDialog • TPrinterSetupDialog • TPrintDialog • TPageSetupDialog
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 • TJSONPropStorage • 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