Ausflug: Steuerelemente

 

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"