1 Zusammenhänge zwischen Attributen

1.1 Standardattribute

Die Attribute .visible und .sensitive geben die Sichtbarkeit bzw. die Erreichbarkeit eines Objektes aus Benutzersicht an. Da die tatsächliche Sichtbarkeit/Erreichbarkeit eines Objekts aber auch vom jeweiligen Vaterobjekt abhängig ist kann über die Attribute .real_visible und .real_sensitive die momentane, tatsächliche Sichtbarkeit/Erreichbarkeit eines Objekts erfragt werden. Dies kann insbesondere bei Setzen des Fokus über .focus sinnvoll sein, da die Setzung des Fokus auf unsichtbare bzw. nicht erreichbare Objekte zu Fehlermeldungen führt.

Als Besonderheit ist noch das Attribut .mapped verfügbar. Es bestimmt, ob ein Objekt schon sichtbar gezeichnet wird oder nicht, wenn .visible dieses Objekts bereits auf true gesetzt wird. Ist .mapped false und .visible true, sind bei diesem Objekt auch im unsichtbaren Zustand schon Operationen zulässig, die ansonsten nur an einem sichtbaren Objekt ausgeführt werden könnten.

Um in einer Statusbar eines Fensters beim Verweilen mit dem Mauscursor auf einem Objekt einen Hilfetext anzuzeigen wird dieser im Attribut .statushelp am jeweiligen Objekt angegeben. Selbiges gilt für die aufpoppenden Hilfstexte (Tooltip) welche im Attribut .toolhelp angegeben werden. Zusätzlich können im Attribut .help noch beliebige Hilfetexte angegeben werden, wobei hier der Programmierer selbst für die Anzeige verantwortlich ist.

Zur Verwendung von Tastaturkürzeln, die beispielsweise an einem Objekt ein select-Ereignis auslösen sollen, wird die jeweilige Tastenkombination zuerst als Ressource definiert und danach dem Objekt über das Attribut .accelerator zugewiesen.

1.2 Hierarchieattribute

Hierarchieattribute dienen zum indirekten Zugriff auf Objekte innerhalb der Vater-Kind-Hierarchie.

Während die Attribute .groupbox, .notepage, .control, .window, .toolbar und .dialog das jeweils nächste Objekt der entsprechenden Klasse aufwärts vom aktuellen Objekt betrachtet referenzieren, bezeichnet .parent das direkte Vaterobjekt.

Auch kann innerhalb der Kindobjekte mit .child[integer] ein direktes Kind eines Objekts referenziert werden, wobei .childcount die Gesamtzahl der direkten Kinder angibt.

Eine Sonderstellung nehmen Menüs, Records und Subcontrols ein die, entsprechend zu den direkten Kindern, mit den Attributen .menucount und .menu[integer], .recordcount und.record[integer], .subcontrolcount und .subcontrol[integer] referenziert werden können. Diese Objektklassen werden über .child[integer] nicht referenziert!

1.3 Geometrieattribute

Berechnung der Position eines Objekts

Zur Berechnung der Position eines Objekts sind die Attribute .xauto, .xleft, .width und .xright bzw. .yauto, .ytop, .height und .ybottom notwendig. Die Ausrichtung wird dabei immer relativ zum Vaterobjekt definiert. Es werden jeweils zwei Positionswerte angegeben und der dritte berechnet. Dabei steuern die Attribute .xauto bzw. .yauto welche Werte angegeben werden und welcher Wert berechnet wird.

Die Grafik illustriert dies beispielhaft für die X-Richtung, für die Y-Richtung gilt Entsprechendes.

Die Attribute .posraster und.sizeraster geben hierbei an, ob die gesetzten Werte Raster- oder Pixelwerten entsprechen. Sind eins oder beide Attribute auf true gesetzt, so wird das zugrundeliegende Raster über die Attribute .xraster, .yraster und .reffont bestimmt.

Zusätzliche Geometrieattribute

Fenster und Toolbars haben die zusätzlichen Geometrieattribute .minheight, .minwidth, .maxheight und .maxwidth. Mit ihnen können die Grenzen definiert werden, in denen die Größe des Objekts interaktiv (durch Ziehen mit der Maus) geändert werden kann.

Objekte, deren Inhalt größer sein kann, als die zur Verfügung stehende Anzeigefläche, haben zusätzliche Geometrieattribute mit denen ihre virtuelle Größe und der sichtbare Ausschnitt des Inhalts definiert werden. Die Attribute .vheight und .vwidth legen fest, welche virtuelle Höhe und Breite ein Objekt haben soll. Um die nicht sichtbaren Teile anzuzeigen, muss ein Benutzer in dem Objekt scrollen. Dabei wird der sichtbare Ausschnitt über die Attribute .xorigin und .yorigin gesteuert. Sie definieren die relative Verschiebung des Objektnullpunkts, das heißt die Lage der sichtbaren Fläche auf der größeren virtuellen Fläche des Objekts. Normalerweise liegt der Objektnullpunkt in der linken oberen Ecke des Objekts.

Über die Attribute .xraster und .yraster werden die horizontalen und vertikalen Einheiten definiert, in denen die Position und Dimension der Kinder angegeben werden. Die Koordinaten der Kinder in Pixeln erhält man, indem man die angegebenen Koordinaten (in Rastereinheiten) mit den Rasterfaktoren .xraster und .yraster multipliziert.

Mit dem Attribut .reffont kann die Angabe der Rastereinheiten an den verwendeten Zeichensatz geknüpft werden. Der DM berechnet dann die Werte .xraster und .yraster selbst.

Randlose Geometrie

Um das Geometrieverhalten von Objekten mit Rahmen konfigurierbar zu machen, gibt es das Attribut .borderraster. Mit ihm kann festgelegt werden, dass die Geometrie des Objekts so berechnet wird, als ob es keinen Rahmen hätte.

Geometrieattribute für hochauflösende Bildschirme

Pixelbasierte Werte von Geometrieattributen werden vom IDM passend zum Skalierungsfaktor des Systems transformiert um eine zu den Systemeinstellungen konsistente Darstellung zu gewährleisten. Die Geometrieeinheiten werden dabei wie bisher in IDM-Pixelwerten oder Raster gesetzt. Die IDM-Pixelwerte werden intern entsprechend dem Skalierungsfaktor in reale Pixelwerte hochgerechnet und umgesetzt. Diese Konvertierung geschieht in beide Richtungen.
Rasterwerte sind entweder an den verwendeten (HighDPI-fähigen) Zeichensatz geknüpft oder werden ebenfalls in IDM-Pixelwerten gesetzt und dann skaliert. Die Rastereinheiten können basierend auf der zugrundeliegenden Schriftart ebenfalls zu IDM-Pixelwerten ermittelt werden.

Das Attribute .propscale steuert, ob das horizontale und vertikale Raster proportional auf den maximalen Wert gesetzt werden soll, welcher durch die Werteberechnung von xraster und yraster des Font-Rasters ermittelt wird. Die genaue Berechnung des Raster ist im Kapitel „Berechnung der Rastergröße aus einem Referenzfont“ der font-Ressource aufgeführt.

Siehe auch Kapitel „HighDPI Unterstützung“ im Handbuch „Programmiertechniken“„Programmiertechniken“

1.4 Scrollbarattribute

Einige Objekte, z.B. Fenster, Groupbox und Notepage, können Scrollbars (Schiebebalken, Bildlaufleisten) besitzen, mit denen die angezeigten Inhalte des Objekts horizontal und vertikal verschoben werden können. Mit den Scrollbarattributen werden die Anzeige und das Verhalten der Scrollbars definiert.

Es gibt folgende Scrollbarattribute:

Die mit .hsb_ beginnenden Attribute beziehen sich auf die horizontale Scrollbar und die mit .vsb_ beginnenden Attribute auf die vertikale Scrollbar.

Die Sichtbarkeit von Scrollbars unterliegt dem Einfluss folgender Attribute:

und

Dabei gelten folgende Regeln:

Wenn keine Scrollbars gesetzt sind, wird die virtuelle Größe ignoriert.

Die Attribute .hsb/vsb_visible und .hsb/vsb_optional kontrollieren, ob die Scrollbars ständig sichtbar sein sollen oder nur, wenn sie auch benötigt werden.

Wie oben erwähnt, erfordern Scrollbars das Setzen der virtuellen Größe, d.h. wenn keine virtuelle Größe gesetzt ist, sind Scrollbars nicht verfügbar.

Wenn die Scrollbars sichtbar sind, und

Anmerkung

In der Motif-Version wird .hsb/vsb_optional ignoriert, d.h. intern wird .hsb/vsb_optional implizit immer auf true gesetzt.

Um die Stellung des Scrollbarsliders zu erfragen bzw. zu ändern, müssen die Attribute .xorigin und .yorigin verwendet werden. Diese beiden Attribute geben die Verschiebung des eigentlichen Objektnullpunktes an.

Die Attribute .hsb/vsb_linemotion und .hsb/vsb_pagemotion definieren, um wie viele Einheiten .xorigin bzw. .yorigin – und damit der Objektinhalt – bei der jeweiligen Scrollaktion verschoben werden soll. Einheiten sind entweder Rastereinheiten oder Pixel, je nachdem ob beim Objekt .sizeraster gesetzt ist oder nicht. Der Wert 0 bedeutet, dass der Standardwert des Systems genommen wird. Bei .hsb/vsb_pagemotion wird dann seitenweise gescrollt.

Es gibt Objekte, z.B. die Listbox, die zwar Scrollbars anzeigen, wenn ihr Inhalt nicht in die vorhandene Anzeigefläche passt, die aber nicht über Scrollbarattribute verfügen. Bei diesen Objekten werden die Scrollbars vom Fenstersystem gesteuert und können vom ISA Dialog Manager nicht beeinflusst werden.

1.5 Layoutattribute

Die Hintergrundfarbe eines Objekts wird über die Zuweisung einer Farbressource am Attribut .bgc bestimmt. Für die Vordergrundfarbe, d.h. meist die Farbe des Textes innerhalb eines Objekts, erfolgt die Angabe der Farbressource im Attribut .fgc.

Die Art der Schriftdarstellung erfolgt durch die Zuweisung einer Fontressource am .font Attribut des jeweiligen Objekts.

Objekte, die Bilder darstellen können, bekommen diese im .picture Attribut als Bildressource zugewiesen. Dabei ist dieses Attribut mit Integerwerten indiziert, wenn es sich um ein Listenobjekt (z.B. Treeview) handelt.

Layoutattribute am Image Objekt

Beim Image-Objekt bestimmen die Attribute .xmargin und .ymargin die Abstände zwischen Image-Rand und Darstellungsbereich. Das Attribut .spacing dagegen definiert den Abstand zwischen Tile und Text innerhalb des Darstellungsbereich des Image. Die folgende Grafik zeigt das Zusammenspiel dieser Attribute:

Über das Attribut .scalestyle kann darüber hinaus die Art der Skalierung des Tiles innerhalb des Darstellungsbereichs festgelegt werden. Die folgende Grafik zeigt die verfügbaren Skalierungsstile:

Layoutattribute für hochauflösende Bildschirme

Über das Attribut .tiledpi am Setup-Objekt kann angeben werden für welche DPI-Auflösung die Tiles der Anwendung entworfen wurden. Die Größe eines Bildes oder Musters wird dann ausgehend von diesem Wert auf den aktuell geltenden DPI-Wert umgerechnet.

Siehe auch Kapitel „HighDPI Unterstützung“ im Handbuch „Programmiertechniken“

1.6 Textattribute

Die Titelzeile eines Fensters und der Titel einer Menübox werden im Attribut .title festgelegt. Für alle anderen darzustellenden Texte werden die Attribute .text und .content benutzt, wobei ein Objekt normalerweise nur eines dieser Attribute benutzt. So gilt das Attribut .content nur für den Edittext und die Listenobjekte, für letztere indiziert.

Eine Sonderstellung nimmt das Objekt Poptext / Combobox ein. Hier wird auf den Listeninhalt über .text[integer] zugegriffen; gleichzeitig wird auch der lesende Zugriff auf den momentan angezeigten Text mit .content unterstützt. Da der schreibende Zugriff auf .content vom Wert im Attribut .style (poptext, edittext, listbox) am Poptext abhängt, ist hier die Attribut- und Objektbeschreibung zu beachten.