Difference between revisions of "TButton/fi"

From Free Pascal wiki
Jump to navigationJump to search
(Created page with "{{TButton}} '''TButton''' image:tbutton.png on komponentti, joka tarjoaa painonapin perustoiminnot. Se löytyy komponenttipaletin Standard tab/fi|...")
 
m (Fixed syntax highlighting)
 
(2 intermediate revisions by one other user not shown)
Line 1: Line 1:
 
{{TButton}}
 
{{TButton}}
  
'''TButton''' [[image:tbutton.png]] on komponentti, joka tarjoaa painonapin perustoiminnot. Se löytyy [[Component Palette|komponenttipaletin]] [[Standard tab/fi|Standard-välilehdeltä]].
+
'''TButton''' [[image:tbutton.png]] on komponentti, joka tarjoaa painonapin perustoiminnot. Se löytyy [[Component Palette/fi|komponenttipaletin]] [[Standard tab/fi|Standard-välilehdeltä]].
  
  
  
TButton on yksi useimmin käytetyistä komponenteista [[TForm|lomakkeella]].  Klikkaamalla hiirellä sitä ( tai siirrytään sille <tab>-näppäimellä ja painetaan <enter>-näppäintä) niin tapahtuma syntyy.
+
TButton on yksi useimmin käytetyistä komponenteista [[TForm/fi|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 [[Event_order|tapahtumakäsittelijää]] johon kutsun jälkeen hypätään.
 
Tämä klikkaus kutsuu tapahtumaa. Tähän tarvitaan [[Event_order|tapahtumakäsittelijää]] johon kutsun jälkeen hypätään.
  
Line 12: Line 12:
 
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ä:
 
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ä:
  
<syntaxhighlight>
+
<syntaxhighlight lang=pascal>
 
procedure TForm1.Button1Click(Sender: TObject);
 
procedure TForm1.Button1Click(Sender: TObject);
 
begin
 
begin
Line 18: Line 18:
 
end;
 
end;
 
</syntaxhighlight>
 
</syntaxhighlight>
'''Begin''' ja '''end''' lauseiden välille kirjoitetaan koodi, jota kutsutaan, kun '''Button1''':stä klikataan.
+
 
 +
'''[[Begin/fi|Begin]]''' ja '''[[End/fi|end]]''' lauseiden välille kirjoitetaan koodi, jota kutsutaan, kun '''Button1''':stä klikataan.
  
 
Yleensä aloittelijoiden oppaat käyttävät TButton:a helppona tulona [[Glossary#OO|olio-ohjelmointiin]] Lazaruksella. Seuraavat oppaat sopivat hyvin aloittelijoille ymmärtääkseen painikkeiden käytön:
 
Yleensä aloittelijoiden oppaat käyttävät TButton:a helppona tulona [[Glossary#OO|olio-ohjelmointiin]] Lazaruksella. Seuraavat oppaat sopivat hyvin aloittelijoille ymmärtääkseen painikkeiden käytön:
 
* [[Form_Tutorial#The_first_GUI_application|Ensimmäinen graafinen sovellus]] täydellisille aloittajille
 
* [[Form_Tutorial#The_first_GUI_application|Ensimmäinen graafinen sovellus]] täydellisille aloittajille
* [[Lazarus_Tutorial#Your_first_Lazarus_Program.21|Ensimmäinen Lazarus ohjelmasi]] Lazarus opastus
+
* [[Lazarus_Tutorial/fi#Ensimm.C3.A4inen_Lazarus_ohjelma.21|Ensimmäinen Lazarus ohjelmasi]] Lazarus opastus
 
* [[Object_Oriented_Programming_with_FreePascal_and_Lazarus#Programming_Example|Ohjelmointi esimerkki]] olio-ohjelmoinnista Free Pascal:lla ja Lazaruksella
 
* [[Object_Oriented_Programming_with_FreePascal_and_Lazarus#Programming_Example|Ohjelmointi esimerkki]] olio-ohjelmoinnista Free Pascal:lla ja Lazaruksella
  
Line 29: Line 30:
 
* Tuplaklikkaa tätä ''Button1''-painiketta lomakkeella (luodaan ''Button1'' oletuskäsittelijä: ''onClick'', lähdekoodieditori avautuu).  
 
* Tuplaklikkaa tätä ''Button1''-painiketta lomakkeella (luodaan ''Button1'' oletuskäsittelijä: ''onClick'', lähdekoodieditori avautuu).  
 
* Lisää seuraava koodi tapahtumakäsittelijään (lisää puuttuva rivi):
 
* Lisää seuraava koodi tapahtumakäsittelijään (lisää puuttuva rivi):
<syntaxhighlight>
+
 
 +
<syntaxhighlight lang=pascal>
 
procedure TForm1.Button1Click(Sender: TObject);
 
procedure TForm1.Button1Click(Sender: TObject);
 
begin
 
begin
   ShowMessage('Lazarus makes my day');  //A message will be displayed with the content...
+
   ShowMessage('Lazarus makes my day');  //Viesti-dialogi (message) näyttää sisällön
 
end;
 
end;
 
</syntaxhighlight>
 
</syntaxhighlight>
  
* Käynnistä ohjelma (esim. funktionäppäimellä <F9>).
+
* Käynnistä ohjelma (esim. funktionäppäimellä {{keypress|F9}}).
 +
 
 +
==Hiiren oikea painike==
 +
 
 +
Jokaisella painikkeella (kuten monella muullakin komponentilla) on (valinnainen) PopupMenu ominaisuus (ponnahdusvalikko), joka aktivoi siihen liitetyn [[TPopupMenu/fi|TPopupMenu]]:n kun hiiren oikeata painiketta klikataan.
  
 
==Dynaamisesti luotu painike==
 
==Dynaamisesti luotu painike==
Line 43: Line 49:
  
 
Tämä voidaan saavuttaa kuten seuraavassa esimerkissä (nopeasti tehty laskin):
 
Tämä voidaan saavuttaa kuten seuraavassa esimerkissä (nopeasti tehty laskin):
* Luo uusi '''tyhjä''' [[Form_Tutorial#The_first_GUI_application|graafinen sovellus]] lomakkeelle ''Form1'' ja lisää '''StdCtrls'''  [[Uses|uses lauseeseen]] (koska siellä on TButton määritelty).
+
* Luo uusi '''tyhjä''' [[Form_Tutorial#The_first_GUI_application|graafinen sovellus]] lomakkeelle ''Form1'' ja lisää '''StdCtrls'''  [[Uses/fi|uses lauseeseen]] (koska siellä on TButton määritelty).
 
* vaihda caption ''Form1'' --> ''QuickAdd''.
 
* vaihda caption ''Form1'' --> ''QuickAdd''.
 
* Luo OnCreate tapahtumankäsittelijä Form1:lle (Siirry komponenttimuokkaimessa tapahtumaan ''OnCreate'' ja klikkaa painonappia [...]).
 
* Luo OnCreate tapahtumankäsittelijä Form1:lle (Siirry komponenttimuokkaimessa tapahtumaan ''OnCreate'' ja klikkaa painonappia [...]).
 
* Täydennä koodi seuraavanlaiseksi:
 
* Täydennä koodi seuraavanlaiseksi:
<syntaxhighlight>
+
 
 +
<syntaxhighlight lang=pascal>
 
procedure TForm1.FormCreate(Sender: TObject);
 
procedure TForm1.FormCreate(Sender: TObject);
 
var
 
var
Line 53: Line 60:
 
   aButton: TButton;
 
   aButton: TButton;
 
begin
 
begin
   for i:=0 to 9 do begin              //create 10 Buttons
+
   for i:=0 to 9 do begin              //Luodaan 10 painiketta
     aButton:=TButton.Create(Self);    //create Button, Owner is Form1, where the button is released later
+
     aButton:=TButton.Create(Self);    //Luodaan TButton painike, Owner on Form1, mihin se laitetaan
     aButton.Parent:=Self;            //determine where it is to be displayed
+
     aButton.Parent:=Self;            //Määrittää missä se näytetään
     aButton.Width:=aButton.Height;    //Width should correspond to the height of the buttons
+
     aButton.Width:=aButton.Height;    //Leveys olisi sama kuin korkeus
     aButton.Left:=i*aButton.Width;    //Distance from left
+
     aButton.Left:=i*aButton.Width;    //Vasemman reunan etäisyys
     aButton.Caption:=IntToStr(i);    //Captions of the buttons (0.9)
+
     aButton.Caption:=IntToStr(i);    //Painikkeessa näytettävä teksti (numero 0..9)
     aButton.OnClick:=@aButtonClick;  //the event handler for the button -> will be created yet
+
     aButton.OnClick:=@aButtonClick;  //Painikkeen tapahtumakäsittelijä (luodaan myöhemmin)
 
   end;
 
   end;
   Self.Height:=aButton.Height;        //Height of the form should correspond to the height of the buttons
+
   Self.Height:=aButton.Height;        //Lomakkeen korkeus on sama kuin painikkeen korkeus
   Self.Width:=aButton.Width*10;      //Width of the form to match the width of all buttons
+
   Self.Width:=aButton.Width*10;      //Lomakkeen leveys olisi sama kuin painkkeiden leveys
 
end;  
 
end;  
 
</syntaxhighlight>
 
</syntaxhighlight>
Line 69: Line 76:
 
* Lisää '''<code>procedure aButtonClick(Sender: TObject);</code>''' ja paina näppäimiä <CTRL> + <Shift> + <c> (Koodin täydentäjä tulee aktiiviseksi ja luo aliohjelman <code>TForm1.aButtonClick(Sender: TObject);</code>.
 
* Lisää '''<code>procedure aButtonClick(Sender: TObject);</code>''' ja paina näppäimiä <CTRL> + <Shift> + <c> (Koodin täydentäjä tulee aktiiviseksi ja luo aliohjelman <code>TForm1.aButtonClick(Sender: TObject);</code>.
 
* Täydennä lähdekoodi seuraavaksi:
 
* Täydennä lähdekoodi seuraavaksi:
<syntaxhighlight>
+
 
 +
<syntaxhighlight lang=pascal>
 
procedure TForm1.aButtonClick(Sender: TObject);
 
procedure TForm1.aButtonClick(Sender: TObject);
 
const
 
const
Line 76: Line 84:
 
   i: Integer;
 
   i: Integer;
 
begin
 
begin
   if (Sender is TButton) and                      //called the event handler of a button out?
+
   if (Sender is TButton) and                      // Tarkistetaan että kutsuja oli painike
     TryStrToInt(TButton(Sender).Caption, i)      //then try to convert the label in a integer
+
     TryStrToInt(TButton(Sender).Caption, i)      // yritetään muuntaa painikkeen teksti kokonaisluvuksi
 
   then begin
 
   then begin
     Cnt:=Cnt + i;                                //the adding counter is incremented by the number of entrechende
+
     Cnt:=Cnt + i;                                // Lisätään laskuria painikkeessa olevalla luvulla
     Caption:='QuickAdd: '+IntToStr(Cnt);          //write the result to the caption of the form
+
     Caption:='QuickAdd: '+IntToStr(Cnt);          // Kirjoitetaan laskurin tulos lomakkeen yläpalkkiin
 
   end;
 
   end;
 
end;
 
end;
Line 87: Line 95:
  
 
{{Note|Painikkeiden tapahtumankäsittelijäksi voidaan liittää mikä tahansa lomakkeella oleva '''<code>procedure <class>.<name of procedure>(Sender: TObject);</code>'''.
 
{{Note|Painikkeiden tapahtumankäsittelijäksi voidaan liittää mikä tahansa lomakkeella oleva '''<code>procedure <class>.<name of procedure>(Sender: TObject);</code>'''.
  Siten voidaan käyttää yhtä ja samaa muissakin luokissa!}}
+
  Siten voidaan käyttää yhtä ja samaa aliohjelmaa muissakin luokissa!}}
  
 
==Katso myös==
 
==Katso myös==
 +
 
* [[doc:lcl/stdctrls/tbutton.html|TButton doc]]
 
* [[doc:lcl/stdctrls/tbutton.html|TButton doc]]
 
* [[TBitBtn]]
 
* [[TBitBtn]]
 
* [[TSpeedButton]]
 
* [[TSpeedButton]]
 
* [[TColorButton]]
 
* [[TColorButton]]
 +
* [[15-puzzle/fi|15-peli]]
  
 
{{LCL Components}}
 
{{LCL Components}}

Latest revision as of 05:51, 29 February 2020

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');  //Viesti-dialogi (message) näyttää sisällön
end;
  • Käynnistä ohjelma (esim. funktionäppäimellä F9).

Hiiren oikea painike

Jokaisella painikkeella (kuten monella muullakin komponentilla) on (valinnainen) PopupMenu ominaisuus (ponnahdusvalikko), joka aktivoi siihen liitetyn TPopupMenu:n kun hiiren oikeata painiketta klikataan.

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              //Luodaan 10 painiketta 
    aButton:=TButton.Create(Self);    //Luodaan TButton painike, Owner on Form1, mihin se laitetaan
    aButton.Parent:=Self;             //Määrittää missä se näytetään
    aButton.Width:=aButton.Height;    //Leveys olisi sama kuin korkeus
    aButton.Left:=i*aButton.Width;    //Vasemman reunan etäisyys
    aButton.Caption:=IntToStr(i);     //Painikkeessa näytettävä teksti (numero 0..9)
    aButton.OnClick:=@aButtonClick;   //Painikkeen tapahtumakäsittelijä (luodaan myöhemmin)
  end;
  Self.Height:=aButton.Height;        //Lomakkeen korkeus on sama kuin painikkeen korkeus
  Self.Width:=aButton.Width*10;       //Lomakkeen leveys olisi sama kuin painkkeiden leveys
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                       // Tarkistetaan että kutsuja oli painike
     TryStrToInt(TButton(Sender).Caption, i)       // yritetään muuntaa painikkeen teksti kokonaisluvuksi
  then begin
    Cnt:=Cnt + i;                                 // Lisätään laskuria painikkeessa olevalla luvulla
    Caption:='QuickAdd: '+IntToStr(Cnt);          // Kirjoitetaan laskurin tulos lomakkeen yläpalkkiin
  end;
end;
  • Käynnistä sovellus.

Light bulb  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 • TCSVDataSet • TSdfDataSet • TBufDataset • TFixedFormatDataSet • TDbf • TMemDataset
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 • TMySQL57Connection • 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 • TIpHtmlDataProvider • TIpHttpDataProvider • TIpHtmlPanel
Virtual Controls TVirtualDrawTree • TVirtualStringTree • TVTHeaderPopupMenu