Schaltflächen (TButton)

Einleitung

Ein TButton ist eine rechteckige „Schaltfläche“ auf einem Formular zum „Anklicken“. Die Größe, Position, Eigenschaften und Beschriftung auf dem Formular muss im Vorfeld eindeutig konfiguriert werden. Folgendes Bild zeigt ein Beispiel-Formular mit verschiedenen TButton und Label:



Eigenschaften vom TButton

Jeder TButton muss einmalig einzeln konfiguriert werden. Im folgenden Sourcecode sind die notwendigsten und wichtigsten Eigenschaften kurz aufgeführt:

var
  btnPlus : TButton;
  ...
  ...
begin
  ...
  btnPlus           := TButton.Create(formStart);
  btnPlus.Name      := 'Plus';
  btnPlus.Parent    := formStart;
  btnPlus.Font.Name := 'Frank Goth Cd';
  btnPlus.Font.Size := -10;
  btnPlus.SetBounds(410, 34, 15, 15);
  btnPlus.Caption   := '+';
  btnPlus.Hint      := '+1';
  btnPlus.ShowHint  := true;
  btnPlus.visible   := true;
  ...
end.


btnPlus : TButton;
notwendige Zuordnung von btnPlus

btnPlus := TButton.Create(formStart);
hier wird ein TButton mit Name btnPlus auf dem Formular formStart generiert

btnPlus.Name := 'Plus';
der btnPlus heißt auf diesem Formular dann Plus

btnPlus.Parent := formStart;
hiermit wird der TButton btnPlus mit dem Formular formStart verknüpft

btnPlus.Font.Name := 'Frank Goth Cd';
hier definiert man die Schriftart

btnPlus.Font.Size := -10;
hier wird die Schriftgröße festgelegt

btnPlus.SetBounds(410, 34, 15, 15);
hiermit definiert man die Startposition auf dem Formular und die Größe vom TButton:

  • 410 ist die X-Position in Pixel gemessen von oben links vom Formular
  • 34 ist die Y-Position in Pixel gemessen von oben links vom Formular
  • 15 ist die Größe vom Button in X-Richtung
  • 15 ist die Größe vom Button in Y-Richtung

btnPlus.Hint := '+1';
bewegt man später den Mauszeiger auf den Button, dann wird dieser Eintrag angezeigt

btnPlus.ShowHint := true;
hier kann man ein\ausschalten ob der oben beschrieben Hint angezeigt werden soll

btnPlus.visible := true;
hiermit lässt sich die Sichtbarkeit des Buttons auf dem Formular ein\ausschalten

Eine brauchbare Dokumentation gibt es online, z.B.hier

Verhalten vom TButton

Wie bereits erwähnt lässt sich solch ein erzeugter TButton mit der Maus anklicken. Was dann geschehen soll, muss in einer weiteren procedure nähers beschrieben werden. Als Erstes muss man allerdings in den Formular-Eigenschaften das „Klick“-Verhalten beschreiben und einer procedure zuordnen. Im folgenden Beispiel gibt es einen TButton mit Namen btnPlus. Wird der TButton btnPlus geklickt, dann wird gemäß dierser Zuordnung die procedure PlusClick ausgeführt:

//------------------------------------------------------------------
  btnPlus.OnClick:= @PlusClick;
//------------------------------------------------------------------ 


//------------------------------------------------------------------
procedure PlusClick(Sender: TButton);
begin
  Speed :=cpgetintegervar('Speed_Soft');
  Speed := Speed+1;
  cpsetintegervar('Speed_Soft',Speed);
end;
//------------------------------------------------------------------


Was in dieser procedure dann ausgeführt werden soll, kann individuell programmiert werden. Da gibt es keine Einschränkungen. In diesem Fall wird der Inhalt der Variablen Speed_Soft ausgelesen, um +1 erhöht und wieder abgespeichert.

.

Beispiel-Code mit Erläuterungen

Folgender Beispiel-Code enthält alle notwendigen Formular-Eigenschaften und einen TButton inkl. was geschehen soll, wenn dieser Button „geklickt“ wird:

procedure ShowFormStart();
begin
//-----------------------------------------------------------------
//-- Definition Größe vom Formular und Startposition auf dem RBS --
//-----------------------------------------------------------------    
  formStartWidth  := 1200; //Breite des Formulars in Pixel
  formStartHeight := 964;  //Höhe des Formulars in Pixel
  formStartPosX   := 100;  //Startposition des Formulars X-Richt. 
  formStartPosY   := 100;  //Startposition des Formulars Y-Richt.
//-----------------------------------------------------------------      
  formStart             := TForm.Create(nil);
  formStart.Caption     := 'Reifenauswahl-Dialog';
  formStart.BorderStyle := bsDialog;
  formStart.SetBounds(formStartPosX,formStartPosY,formStartWidth,formStartHeight);
//-----------------------------------------------------------------
...
...
//---- Hier kommen jetzt die TButton-Eigenschaften ----------------
  btnPlus           := TButton.Create(formStart);
  btnPlus.Name      := 'Plus';
  btnPlus.Parent    := formStart;
  btnPlus.Font.Name := 'Frank Goth Cd';
  btnPlus.Font.Size := -10;
  btnPlus.SetBounds(410, 34, 15, 15);
  btnPlus.Caption   := '+';
  btnPlus.Hint      := '+1';
  btnPlus.ShowHint  := true;
  btnPlus.visible   := true;
//------------------------------------------------------------------
...
...
//---- hier ist die Zuordnung TButton-Click zu Aufruf procedure ----
//------------------------------------------------------------------ 
  btnPlus.OnClick:= @PlusClick;
//------------------------------------------------------------------ 
...
...
//----- Folgende Programmzeilen halten das Formular aktiv ----------
//----- Erst wenn fine auf "1" gesetzt wird schließ sich das -------
//----- Formular ---------------------------------------------------
  cpsetintegervar('fine',0);
  cpShow(formStart);     //Fenster einblenden
  //---- Formular solange offen lassen bis fine =1 -----------------
  while (cpgetintegervar('fine')=0) do
    begin
      cpSleep(750);                   //--- 750ms warten  
    end;
  cpFormFree(formStart);              //--- Formular ausblenden
  exit;
end;
...
...
//------------------------------------------------------------------
procedure PlusClick(Sender: TButton);
begin
  Speed :=cpgetintegervar('Speed_Soft');
  Speed := Speed+1;
  cpsetintegervar('Speed_Soft',Speed);
end;
//------------------------------------------------------------------
...
...
//--------Hauptprogramm--------------------------------------------
begin
  ...
  ShowFormStart();
  ...
end.


Was sicherlich etwas kompliziert aussieht, ist halb so wild. Man muss das Formular in einer procedure beschreiben inkl. aller gewünschten TButton, TBitBtn, Label, ListBox etc.
In unserem Beispiel oben sind das die Zeilen 1-37.
Ganz wichtig, man muss zuordnen welche procedure bei welchem Klick aufgerufen werden soll. Das wird bei unserem Beispiel in der Zeile 34 beschrieben. Bei Klick auf den TButton btnPlus wird die procedure PlusClick aufgerufen.

Tipps und Tricks rund um den TButton

 
cockpit-xp/addon/formulare/tbutton.txt · Zuletzt geändert: 2020/11/28 12:16 (Externe Bearbeitung)