Sign in Join
Wiki copytemporary

TButton/de: what changed

Revision 1 to 2. Removed lines have a minus sign; added lines have a plus sign.

OldNewLine
11Diese Seite erklärt, wie man die [[doc:lcl/stdctrls/tbutton.html|TButton]] Komponente verwendet. Auf etwas klicken bedeutet immer ein Linksklick, ein Rechtsklick wird explizit erwähnt.
22
33## Beschreibung
44
55Ein Push-Button-Steuerelement (unüblich: Knopf oder Schaltfläche).
66
7-<figure>
8-<img src="TButtonStandardpalette.png" title="TButtonStandardpalette.png" />
9-<figcaption>TButtonStandardpalette.png</figcaption>
10-</figure>
7+![](/wiki-images/4/49/TButtonStandardpalette.png)
118
129## Verwendung
1310
1411Ein [[doc:lcl/stdctrls/tbutton.html|TButton]] ist eines der elementarsten Bedienelemente auf einem [[TForm/de|Formular]]. Klickt man mit der Maustaste auf ihn (oder wechselt man z.B. mit der Taste \[Tab\] auf den Button und betätigt diesen mit Enter), wird im Regelfall eine Aktion ausgelöst. Dieses Klicken kann man vereinfacht als ein [Ereignis](http://de.wikipedia.org/wiki/Ereignis_%28Programmierung%29) (engl. Event) betrachten. Dafür benötigt man [[Event order/de|Ereignisbehandlungsroutinen]] (engl. listener, observer, event handler), die nach dem Klick aufgerufen werden.\
15-\
12+
1613Ein Button können Sie Ihrem Formular hinzufügen, indem Sie einfach den TButton (viereckiger Button mit einem "OK" in der Mitte) auf der Standard Komponentenpalette auswählen (mit einem Klick) und mit einem Klick auf Ihr Formular platzieren.\
17-\
14+
1815Der Eventhandler für ein Mausklick kann recht einfach erreicht werden, indem man auf einen einfügten Button doppelklickt (oder im Objektinspektor das Ereigniss OnClick wählt). Der Eventhandler für einen *Button1* auf einem Formular *Form1* wird so aussehen:
1916
2017``` pascal
2118procedure TForm1.Button1Click(Sender: TObject);
2219begin
2320
2421end;
2522```
2623
2724Zwischen den Anweisungen (Statements) **begin** und **end** könnten Sie Anweisungen schreiben, die immer ausgeführt werden, wenn auf den *Button1* geklickt wird.
2825
2926Fast alle verfügbaren Einsteigertutorials nutzen TButtons, um einen einfachen Einstieg in die [[Glossary/de|objektorientierte Programmierung]] mit Lazarus zu ermöglichen. Folgende Tutorials sind für Einsteiger gut geeignet, die Verwendung von Buttons zu verstehen:
3027
3128- [[Form Tutorial/de|Einstieg, die erste GUI-Anwendung]] für absolute Neueinsteiger
3229- [[Lazarus Tutorial/de|Ihr erstes Lazarus Programm]] Tutorial für Lazarus
3330
3431#### Kleines Beispiel
3532
3633- Erstellen Sie mit dem Hauptmenüeintrag *"Projekt --\> Neues Projekt... --\> Anwendung"* eine neue GUI-Anwendung.
3734- Legen Sie einen TButton auf Ihr Formular ab
3835- Doppelklicken Sie diesen *Button1* auf Ihrem Formular (der Standard-Eventhandler: OnClick wird für *Button1* erstellt, das Quelltexteditorfenster öffnet sich)
3936- fügen Sie folgenden Code in den Eventhandler:
4037
4138``` pascal
4239procedure TForm1.Button1Click(Sender: TObject);
4340begin
4441 ShowMessage('Lazarus fetzt!'); // Eine Mitteilung wird angezeigt mit dem Inhalt ...
4542end;
4643```
4744
48-- Starten Sie Ihr Programm (mit Taste <span class="kbd">F9</span>)
45+- Starten Sie Ihr Programm (mit Taste `F9`)
4946
5047## Button dynamisch erzeugen
5148
5249Manchmal ist es einfacher, die Buttons (oder auch andere Komponenten) nicht mit dem Lazarus-Formulardesigner zu erstellen, sondern diese dynamisch, erst zur Laufzeit, zu erzeugen. Vor allem wenn Sie sich ständig wiederholende Buttons auf einer Form haben ist dieses Vorgehen sinnvoll.
5350
5451Wie dies funktioniert können Sie an folgendem Beispiel nachstellen (ein Schnellrechner):
5552
5653- Erstellen Sie eine neue **leere** [[Form Tutorial/de|GUI-Anwendung]] mit dem Formular *Form1* und fügen der [[Uses/de|Uses-Klausel]] noch **StdCtrls** (hier ist der TButton beheimatet) hinzu.
5754- Ändern Sie die Caption von *Form1* zu *QuickAdd*
5855- Erstellen Sie den OnCreate-Eventhandler von Form1 (gehen Sie im Objektinspektor auf das Ereignis *OnCreate* und klicken den daneben befindlichen Button \[...\] an).
5956- Fügen Sie folgenden Text ein:
6057
6158``` pascal
6259procedure TForm1.FormCreate(Sender: TObject);
6360var
6461 i: Integer;
6562 aButton: TButton;
6663begin
6764 for i := 0 to 9 do begin // 10 Buttons erstellen
6865 aButton := TButton.Create(Self); // Button erstellen, Owner wird Form1, wo der Button später wieder mit frei gegeben wird
6966 aButton.Parent := Self; // festlegen, worauf er angezeigt werden soll
7067 aButton.Width := aButton.Height; // Breite soll der Höhe des Buttons entsprechen
7168 aButton.Left := i * aButton.Width; // Abstand von Links
7269 aButton.Caption := IntToStr(i); // Bezeichnung des Buttons (0..9)
7370 aButton.OnClick := @aButtonClick; // der Eventhandler für den Button -> wird gleich noch erstellt
7471 end;
7572 Self.Height := aButton.Height; // Höhe des Formulars soll der Höhe der Buttons entsprechen
7673 Self.Width := aButton.Width * 10; // Breite des Formulars soll der Breite aller Buttons entsprechen
7774end;
7875```
7976
8077- Jetzt muss noch der Eventhandler für die Button-Klicks erstellt werden.
8178- Gehen Sie im Quelltexteditor in Ihre Klasse *TForm1* in den Abschnitt **`private`**.
82-- Fügen Sie **`procedure aButtonClick(Sender: TObject);`** und drücken Sie anschließend die Tasten <span class="kbd">Ctrl</span>+<span class="kbd">Shift</span>+<span class="kbd">C</span> (die Codevervollständigung wird aktiv und die Procedure `TForm1.aButtonClick(Sender: TObject);` wird erstellt.
79+- Fügen Sie **`procedure aButtonClick(Sender: TObject);`** und drücken Sie anschließend die Tasten `Ctrl`+`Shift`+`C` (die Codevervollständigung wird aktiv und die Procedure `TForm1.aButtonClick(Sender: TObject);` wird erstellt.
8380- Fügen Sie folgenden Code ein:
8481
8582``` pascal
8683procedure TForm1.aButtonClick(Sender: TObject);
8784const
8885 Zaehler: Integer = 0;
8986var
9087 i: Integer;
9188begin
9289 if (Sender is TButton) // wurde der Eventhandler von einem Button aus aufgerufen?
9390 and TryStrToInt(TButton(Sender).Caption, i) then // dann versuche die Bezeichnung in einen Integer umzuwandeln
9491 begin
9592 Zaehler := Zaehler + i; // der Additionszähler wird um die entrechende Zahl erhöht
9693 Caption := 'QuickAdd: ' + IntToStr(Zaehler); // Schreibe das Ergebnis auf die Bezeichnung des Formulars
9794 end;
9895end;
9996```
10097
10198- Starten Sie ihre Anwendung
10299
103100> **Note:** Sie können Ihren Buttons jeden erdenklichen Eventhandler zuweisen, solange dieser die Form **`procedure <Klasse>.<Name der Procedure>(Sender: TObject);`** hat. Somit können Sie auch einen von einer anderen Klasse nutzen!
104101
105102## Siehe auch
106103
107104- [[TBitBtn/de|TBitBtn]]\
108105- [[TSpeedButton/de|TSpeedButton]]
109106
110107---
111108*From the Free Pascal wiki, page "TButton/de", as it stood on 2023-05-10 after a change by Ernesto, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*

Back to history