===== 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:\\ \\ {{ :cockpit-xp:addon:formulare:tbutton2.png?nolink |}} \\ ==== 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.[[http://docs.embarcadero.com/products/rad_studio/delphiAndcpp2009/HelpUpdate2/EN/html/delphivclwin32/StdCtrls_TButton.html|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:start|Start]] - [[cockpit-xp:faq|FAQ]] - [[cockpit-xp:glossar|Glossar]] - [[cockpit-xp:sitemap|Sitemap]] - [[cockpit-xp:impressum|Impressum]] ns