In unserer Wissensbasis haben wir bereits einige Steuerelemente angelegt. Wenn es Sie interessiert, wie Steuerelemente in TCE verwaltet werden und wie sie weitergehend programmiert werden können, sollten Sie hier weiter lesen.
Wenn Sie sich die Eigenschaften eines Steuerelementes anschauen, finden Sie eine Aufteilung in spezifische Steuerelement-Eigenschaften und Container-Eigenschaften.
Steuerelemente werden nicht unmittelbar auf der Oberfläche eines Formulars platziert, sondern innerhalb eines Steuerelemente-Containers.
Der Container bestimmt mit seinen Eigenschaften
• Die Position, Breite und Höhe eines das Steuerelement umgebenden Rechtecks.
Left, Top, Width, Height
Die Angabe der Werte erfolgt in Twips, einer auflösungsabhängigen Größe:
Wenn Sie die Auflösung des Bildschirmes unter Windows verändern, steuern Sie damit den Umrechnungsfaktor von Twips zu Pixel:
So wird der Umrechnungsfaktor bei 100% zumeist mit dem Faktor 15 ermittelt, das heißt, 1 Pixel = 15 Twips
Wird die Auflösung auf den Wert 125% eingestellt, ist der Faktor kleiner: 1Pixel = 12 Twips
(Angaben je nach physikalischer Auflösung des Ausgabemediums)
Möchten Sie den aktuellen Umrechnungsfaktor ermitteln, verwenden Sie die Funktionen
Client.Screen.TwipsPerPixelX oder Client.Screen.TwipsPerPixelY
• Die Ausrichtung des Rechtecks bei Größenänderungen des Vater-Steuerelementes oder Formulars oder eines spezifischen Steuerelementes, welches explizit angegeben wurde.
AlignLeft, AlignTop, AlignRight, AlignBottom, AlignElementLeft, AlignElementTop, AlignElementRight, AlignElementBottom, MinWidth, MinHeight
• Die Sichtbarkeit des Containers und somit die Sichtbarkeit des Steuerelementes
Visible
• Ein alternativer Name, mit dem das Steuerelement gefunden werden kann
Alias
Bestimmung, ob das Steuerelement im speziellen Design-Modus ausgewählt werden kann
Designable
• Das Kontextmenü, welches angezeigt wird, wenn das Steuerelement im Design-Modus ausgewählt wurde
DesignContextMenu
Daneben verfügt der Container über Events:
• ControlAvailable
Durch die Client-Server Architektur von TCE und der asynchronen Übertragung der Daten kann sich die Verfügbarkeit eines Steuerelementes beim Client möglicherweise verzögern. Wenn das Steuerelement beim Client real angelegt ist, erzeugt der Steuerelemente-Container diesen Event.
• DesignerSelected
Wird eine Anwendung beim Client im Designer-Modus gestartet und ein Steuerelement aktiviert, erzeugt der Steuerelemente-Container diesen Event.
• GotFocus
Erhält ein Steuerelement den Focus, wird dieser Event erzeugt.
• LostFocus
Verliert ein Steuerelement den Focus, wird dieser Event erzeugt.
• Validate
Unmittelbar vor dem Focusverlust wird der Validate-Event vom Container erzeugt. Damit kann bei Bedarf der Focus-Verlust unterbunden werden.
• ResponsiveChanged
Wird das Steuerelement in einem anderen Responsive-Kontext angezeigt, wird dieser Event erzeugt
Nehmen wir an, Sie haben einen Button auf einem Formular platziert. Wenn Sie sich die Parameter des Events anschauen, finden Sie immer als ersten Parameter ein Objekt vom Typ Ambient. Das Ambient-Objekt liefert Ihnen Informationen zum Kontext des Steuerelementes.
So können Sie beispielsweise das Fenster schließen, auf dem sich das Steuerelement befindet:
Ambient.Formular.Hide
Oder Sie möchten eine Eigenschaft des Steuerelement-Containers beeinflussen:
Ambient.Control.Visible := False
Oder Sie möchten eine Eigenschaft des Steuerelementes beeinflussen. Verwenden Sie hierzu den typenlosen COM-Objektzeiger Object. In dem nachfolgenden Code wird der typenlose Zeiger typisiert, und die Eigenschaft Text verändert.
Dim Ctrl As TCEButtons.Button
Ctrl := Ambient.Control.Object
Ctrl.Text := "Abbrechen"
Alternativ können Sie den Ausdruck auch mit einem Typecast schreiben:
Ambient.Control.Object:"TCEButtons.Button".Text := "Abbrechen"
Wenn Sie ein anderes Steuerelement beeinflussen möchten, können Sie dieses über das Formular des Fensters erreichen:
Ambient.Formular.Controls.Item("Materialtabelle").Controls.Item("ID").Object:"TCETables.TableColumn".Caption := "Nr."
Sie sehen, dass sich damit sehr lange Ausdrücke ergeben. Abhilfe schafft der Einsatz eines Alias an dem Steuerelement-Container, dessen Steuerelement Sie beeinflussen wollen.
Hier wird nun der Tabellenspalte ID ein Alias mit dem Wert IDColumn gegeben. Dadurch wird der Ausdruck kürzer, weil direkt auf das Steuerelement referenziert werden kann:
Ambient.Formular.ControlByAlias("IDColumn").Object:"TCETables.TableColumn".Caption := "Nr."
Sie können auch auf den expliziten Typecast verzichten. Allerdings muss so zur Laufzeit höherer Aufwand betrieben werden, um die Eigenschaft zu finden (Bindung zur Laufzeit):
Ambient.Formular.ControlByAlias("IDColumn").Object.Caption := "Nr."
Alternativ können Sie einen Steuerelement-Container auch über seinen Pfad ausgehend vom Fensterformular finden.
Ambient.Formular.ControlByPath("Materialtabelle/ID").Object.Caption := "Nr."
Auch möglich sind relative Angaben, hier über ein existierendes Vater-Control:
Dim CtrlID As Control
CtrlID := Ambient.Formular.ControlByAlias("IDColumn")
CtrlID.ParentControl.Controls.Item("Bezeichnung").Object.Caption := "Materialtext"