Sign in Join
Wiki copytemporary

TButton/de: what changed

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

Title: TButton/de

OldNewLine
1+Diese 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.
2+
3+## Beschreibung
4+
5+Ein Push-Button-Steuerelement (unüblich: Knopf oder Schaltfläche).
6+
7+<figure>
8+<img src="TButtonStandardpalette.png" title="TButtonStandardpalette.png" />
9+<figcaption>TButtonStandardpalette.png</figcaption>
10+</figure>
11+
12+## Verwendung
13+
14+Ein [[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+\
16+Ein 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+\
18+Der 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:
19+
20+``` pascal
21+procedure TForm1.Button1Click(Sender: TObject);
22+begin
23+
24+end;
25+```
26+
27+Zwischen den Anweisungen (Statements) **begin** und **end** könnten Sie Anweisungen schreiben, die immer ausgeführt werden, wenn auf den *Button1* geklickt wird.
28+
29+Fast 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:
30+
31+- [[Form Tutorial/de|Einstieg, die erste GUI-Anwendung]] für absolute Neueinsteiger
32+- [[Lazarus Tutorial/de|Ihr erstes Lazarus Programm]] Tutorial für Lazarus
33+
34+#### Kleines Beispiel
35+
36+- Erstellen Sie mit dem Hauptmenüeintrag *"Projekt --\> Neues Projekt... --\> Anwendung"* eine neue GUI-Anwendung.
37+- Legen Sie einen TButton auf Ihr Formular ab
38+- Doppelklicken Sie diesen *Button1* auf Ihrem Formular (der Standard-Eventhandler: OnClick wird für *Button1* erstellt, das Quelltexteditorfenster öffnet sich)
39+- fügen Sie folgenden Code in den Eventhandler:
40+
41+``` pascal
42+procedure TForm1.Button1Click(Sender: TObject);
43+begin
44+ ShowMessage('Lazarus fetzt!'); // Eine Mitteilung wird angezeigt mit dem Inhalt ...
45+end;
46+```
47+
48+- Starten Sie Ihr Programm (mit Taste <span class="kbd">F9</span>)
49+
50+## Button dynamisch erzeugen
51+
52+Manchmal 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.
53+
54+Wie dies funktioniert können Sie an folgendem Beispiel nachstellen (ein Schnellrechner):
55+
56+- 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.
57+- Ändern Sie die Caption von *Form1* zu *QuickAdd*
58+- Erstellen Sie den OnCreate-Eventhandler von Form1 (gehen Sie im Objektinspektor auf das Ereignis *OnCreate* und klicken den daneben befindlichen Button \[...\] an).
59+- Fügen Sie folgenden Text ein:
60+
61+``` pascal
62+procedure TForm1.FormCreate(Sender: TObject);
63+var
64+ i: Integer;
65+ aButton: TButton;
66+begin
67+ for i := 0 to 9 do begin // 10 Buttons erstellen
68+ aButton := TButton.Create(Self); // Button erstellen, Owner wird Form1, wo der Button später wieder mit frei gegeben wird
69+ aButton.Parent := Self; // festlegen, worauf er angezeigt werden soll
70+ aButton.Width := aButton.Height; // Breite soll der Höhe des Buttons entsprechen
71+ aButton.Left := i * aButton.Width; // Abstand von Links
72+ aButton.Caption := IntToStr(i); // Bezeichnung des Buttons (0..9)
73+ aButton.OnClick := @aButtonClick; // der Eventhandler für den Button -> wird gleich noch erstellt
74+ end;
75+ Self.Height := aButton.Height; // Höhe des Formulars soll der Höhe der Buttons entsprechen
76+ Self.Width := aButton.Width * 10; // Breite des Formulars soll der Breite aller Buttons entsprechen
77+end;
78+```
79+
80+- Jetzt muss noch der Eventhandler für die Button-Klicks erstellt werden.
81+- 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.
83+- Fügen Sie folgenden Code ein:
84+
85+``` pascal
86+procedure TForm1.aButtonClick(Sender: TObject);
87+const
88+ Zaehler: Integer = 0;
89+var
90+ i: Integer;
91+begin
92+ if (Sender is TButton) // wurde der Eventhandler von einem Button aus aufgerufen?
93+ and TryStrToInt(TButton(Sender).Caption, i) then // dann versuche die Bezeichnung in einen Integer umzuwandeln
94+ begin
95+ Zaehler := Zaehler + i; // der Additionszähler wird um die entrechende Zahl erhöht
96+ Caption := 'QuickAdd: ' + IntToStr(Zaehler); // Schreibe das Ergebnis auf die Bezeichnung des Formulars
97+ end;
98+end;
99+```
100+
101+- Starten Sie ihre Anwendung
102+
103+> **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!
104+
105+## Siehe auch
106+
107+- [[TBitBtn/de|TBitBtn]]\
108+- [[TSpeedButton/de|TSpeedButton]]
109+
110+---
111+*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