Umgang mit Properties und Handles


Jedes Grafikobjekt enthält Properties, also Eigenschaften, die den Zustand eines Objektes genau beschreiben.

Die Properties der GUI - Elemente sind zahlreich. An dieser Stelle sollen nur die Wichtigsten erwähnt werden:

Property Beschreibung Datentyp
Style Style entscheidet über die Art des GUI - Elements. Ein Style Edit ist z.B. eine Texteingabe für den Benutzer. Alle Style Elemente sind im Abschnitt Eine GUI erzeugen zu finden. String
Tag Der Tag ist der individuelle Name eines grafischen Objektes. Er ist ein nützliches Hilfsmittel, um ein gesuchtes Objekt zu finden, dessen Namen bekannt ist. String
Position Position gibt den Abstand des GUI - Elements relativ zum Figure - Fenster an. Folgende Kodierung wird dabei benutzt: [links unten Breite Höhe], wobei der innere Rand des GUI - Elements gemeint ist. Ist das Objekt ein Tochter - Objekt von Figure, so ist die Positionierung immer relativ zur unteren und linken Kante des Figure - Fensters. [links unten Breite Höhe]
Enable Der Wert von Enable entscheidet darüber, ob ein GUI - Element für den User benutzbar ist oder nicht.
'on' oder 'off'
Callback Callbacks sind interaktive Elemente, die auf Benutzereingaben reagieren. Meist wird entweder eine Funktion angesprochen oder eine Funktion definiert. Auf Callbacks wird in den nächsten Abschnitten genauer eingegangen. String
String String ist der dargestellte Name des GUI - Elementes und nicht zwangsläufig gleich dem Tag. String

Die Grafikobjekte speichern ihre Properties beim Erzeugen in sogenannte Handle.

Handle, deutsch: „Griff“, sind Identifizierungsnummern, die den Eigenschaften, Properties, von Objekten eindeutig zugewiesen sind. Speichert man diese in Variablen, lassen sich die Properties zum Beispiel über die sogenannte get-Methode ausgeben, oder mit der set-Methode einfach verändern.

Get-Methode

Die get, deutsch: „bekommen“, Methode gibt alle Properties eines Handle und deren derzeitigen Wert zurück. Fragt man zum Beispiel den Handle eines Button ab, kann die Ausgabe so aussehen:

>> get (buttonHandle)

BackgroundColor = [0.941176 0.941176 0.941176]
Callback =
CData = []
Enable = on
Extent = [0 0 64 19]
FontAngle = normal
FontName = MS Sans Serif
FontSize = [8]
FontUnits = points
FontWeight = normal
ForegroundColor = [0 0 0]
HorizontalAlignment = center
KeyPressFcn =
ListboxTop = [1]
Max = [1]
Min = [0]
Position = [25 150 100 50]
String = Textschalter
Style = pushbutton
SliderStep = [0.01 0.1]
TooltipString =
Units = pixels
Value = [0]

BeingDeleted = off
ButtonDownFcn =
Children = []
Clipping = on
CreateFcn =
DeleteFcn =
BusyAction = queue
HandleVisibility = on
HitTest = on
Interruptible = on
Parent = [2]
Selected = off
SelectionHighlight = on
Tag = Button
Type = uicontro
UIContextMenu = []
UserData = []
Visible = on

„buttonHandle“ ist hierbei die Variable in der der Handle für den Button hinterlegt ist.

Set-Methode

Die set, deutsch: „setzen“, Methode kann einerseits zum Ausgeben der Properties eines Handle benutzt werden, andererseits können mit diesem Befehl Werte für diese Properties gesetzt werden.

Beim Ausgeben der Properties mit set werden nur für die Properties, die nur bestimmte Werte annehmen können, die möglichen Optionen angezeigt. Die derzeit gewählte Option steht dabei in geschweiften Klammern.

Die Werte anderer Properties, die abgesehen vom Datentyp, beliebige Werte annehmen können, werden mit set nicht angezeigt. Zum Beispiel werden beim Abruf des Handle vom Button mit set die Möglichkeiten für dessen Style angezeigt, der Wert des enthaltenen String aber nicht:

>>set (buttonHandle)

[…]
String
Style: [ {pushbutton} | togglebutton | radiobutton | checkbox | edit | text | slider | frame | listbox | popupmenu ]
[…]

„buttonHandle“ ist hierbei die Variable in der der Handle für den Button hinterlegt ist. Möchte man nun den Wert eines Property ändern, zum Beispiel den String, benutzt man den set-Befehl folgendermaßen:

>>set (buttonHandle,'String','Hallo Erde!')

Das Ergebnis lässt sich natürlich wieder mit get-Methode anzeigen, es gibt aber auch eine sichtbare Veränderung in der GUI, in der der Button verbaut ist. Siehe Abbildung GUI Button vorher und Abbildung GUI Button nachher.

Es ist also von großer Bedeutung bei der Erstellung von Graphikobjekten deren Handle direkt in einer Variablen zu hinterlegen. Hat man dies, aus welchen Gründen auch immer, einmal nicht getan, hilft der Befehl findobj weiter. Dieser gibt mithilfe der Art und dem Wert einer Property den dazugehörigen Handle aus. Diesen kann man dann in eine Variable abspeichern. Enthalten mehrere Handle die gleiche Property, werden die Handle in einer Reihung ausgegeben.

Komfortabel ist hier auch der Befehl gcf, get current figure, der den Handle des aktuell geöffneten Fensters (figure) zurückgibt. Beide Befehle, findobj und gcf lassen sich auch kombinieren, um mit findobj nur die Handle des aktuellen Fensters zu durchsuchen. Das geht dann zum Beispiel folgendermaßen:

>> gesuchterHandle = findobj(gcf,'Style','edit')