2.24 .borderraster
Mit Hilfe dieses Attributes kann bei einem Objekt mit Rahmen konfiguriert werden, dass die Geometrie so berechnet wird, als ob es keinen Rahmen besäße.
Definition
-
Datentyp
boolean
-
Zugriff
get, set
-
changed-Ereignis
ja
Normalerweise werden folgende Anpassungen bei Objekten mit Rahmen ausgeführt:
- Verschiebung um eine halbe Rastereinheit bei der Berechnung der Position eines Objektes mit Rasterkoordinaten.
- Verkleinerung um eine Rastereinheit bei der Berechnung der Größe eines Objektes mit Rastergröße.
- Verschiebung um eine halbe Rastereinheit bei der Berechnung der Position der Kindobjekte mit Rasterkoordinaten, sofern das Objekt Kinder besitzen kann.
Diese Anpassungen lassen sich mit diesem Attribut abschalten. Der Effekt ist analog zum Abschalten des Rahmens an einem groupbox Objekt (.borderwidth := 0).
Der Unterschied besteht darin, dass der Rahmen bei .borderraster = false weiterhin gezeichnet wird. Das Attribut zeigt nur Wirkung, wenn das Objekt einen Rahmen besitzt und wenn Rasterkoordinaten verwendet werden. Beeinflusst werden dann die Position (.posraster = true), die Größe (.sizeraster = true) und gegebenenfalls auch die Position der Kindobjekte, wenn deren Position in Raster angegeben wird.
Die folgende Tabelle gibt einen Überblick über die Unterstützung des Attributs .borderraster an den einzelnen Dialog Manager Objekten:
unterstützt, wenn .borderwidth > 0 |
|
nicht unterstützt |
|
nicht unterstützt |
|
unterstützt, wenn .multiline = true |
|
unterstützt, wenn .borderwidth > 0 |
|
nicht unterstützt |
|
unterstützt, wenn .borderwidth > 0 |
|
unterstützt |
|
unterstützt |
|
unterstützt, wenn .borderwidth > 0 |
|
unterstützt, wenn .style = listbox |
|
nicht unterstützt |
|
nicht unterstützt |
|
nicht unterstützt |
|
unterstützt, wenn .borderwidth > 0 |
|
nicht unterstützt |
|
nicht unterstützt |
|
unterstützt, wenn .borderwidth > 0 |
|
nicht unterstützt |
|
nicht unterstützt |
|
unterstützt |
|
unterstützt, wenn .docking = dock_window OR .borderwidth > 0 |
|
unterstützt |
|
unterstützt |
Wertebereich
- true
-
Die Berechnung der Rasterkoordinaten findet wie üblich (analog zu früheren Dialog Manager Versionen) statt.
Dies bedeutet für Objekte mit Rahmen:
- Das Objekt wird um eine halbe Rastereinheit verschoben, wenn die Position in Rastereinheiten angegeben ist (.posraster = true).
- Das Objekt wird um eine Rastereinheit verkleinert, wenn die Größe in Rastereinheiten angegeben ist (.sizeraster = true).
-
Die Kindobjekte werden um eine halbe Rastereinheit verschoben, wenn ihre Position in Rastereinheiten angegeben ist (.posraster = true).
Das Objekt muss natürlich Kindobjekte zulassen und besitzen.
- false
-
Die Berechnung der Rasterkoordinaten eines Objektes mit Rahmen findet so statt, als wenn das Objekt keinen Rahmen besäße. Die beim Wert „true“ erwähnten Anpassungen finden nicht statt.
Hinweis
Es werden lediglich die beim Wert „true“ erwähnten Anpassungen nicht durchgeführt; es kann also trotz .borderraster = false sein, dass ein Objekt mit Rahmen nicht exakt in derselben Zeile dargestellt wird, wie ein anderes Objekt ohne Rahmen. Dies liegt dann an anderen Faktoren. Die entsprechenden Objekte würden auch nicht exakt in einer Zeile liegen, wenn sie in Pixelkoordinaten positioniert würden.
Referenzen und Abhängigkeiten
Die Einteilung Objekt mit Rahmen bzw. Objekt ohne Rahmen ist eine Dialog Manager Einteilung und betrifft die Art und Weise, wie Rasterkoordinaten in Pixelwerte umgerechnet werden. Diese Einteilung hat nichts damit zu tun, ob vom betreffenden Fenstersystem tatsächlich ein Rahmen um das Objekt gezeichnet wird.
Momentan gilt folgenden Einteilung:
Objekte ohne Rahmen
canvas |
wenn .borderwidth = 0 |
checkbox |
|
control |
|
edittext |
wenn .multiline = false |
groupbox |
wenn .borderwidth = 0 |
image |
|
layoutbox |
wenn .borderwidth = 0 |
notepage |
wenn .borderwidth = 0 |
poptext |
wenn .style <> listbox |
progressbar |
|
pushbutton |
|
radiobutton |
|
rectangle |
wenn .borderwidth = 0 |
scrollbar |
|
spinbox |
|
splitbox |
wenn .borderwidth = 0 |
statictext |
|
toolbar |
wenn .docking <> dock_window AND .borderwidth = 0 |
Objekte mit Rahmen
canvas |
wenn .borderwidth > 0 |
edittext |
wenn .multiline = true |
groupbox |
wenn .borderwidth > 0 |
layoutbox |
wenn .borderwidth > 0 |
listbox |
|
notebook |
|
notepage |
wenn .borderwidth > 0 |
poptext |
wenn .style = listbox |
rectangle |
wenn .borderwidth > 0 |
splitbox |
wenn .borderwidth > 0 |
statusbar |
wenn .borderwidth > 0 |
tablefield |
|
toolbar |
wenn .docking = dock_window OR .borderwidth > 0 |
treeview |
|
window |
|
Das .borderraster-Attribut wirkt nur auf das toolbar-Objekt, wenn es ausgedockt ist (.docking = dock_window). Im eingedockten Zustand wirkt das Attribut nur auf die Kindobjekte des toolbar-Objekts (vorausgesetzt: .borderwidth > 0).
Besitzt ein Objekt keinen Rahmen, dann bleibt eine Änderung von .borderraster ohne Wirkung.
Durch das Setzen von .borderraster auf den Wert false werden Objekte nicht Pixelgenau auf derselben Position erscheinen. Der Effekt wird vielmehr so sein, wie wenn die beteiligten Objekte mit Pixelkoordinaten auf dieselbe Position gesetzt worden wären.
Es ist zu beachten, dass Objekte ohne Rahmen auch einzeilig sein können. Solche Objekte werden in der angegebenen Rasterzeile zentriert, wenn sie Rasterkoordinaten verwenden (.posraster = true) und keine Höhe besitzen (.height = 0).
Einzeilige Objekte
checkbox |
|
edittext |
wenn .multiline = false |
poptext |
wenn .style <> listbox |
progressbar |
wenn .direction = 2 |
pushbutton |
|
radiobutton |
|
scrollbar |
wenn .direction = 2 |
spinbox |
|
statictext |
|
Andere Anpassungen werden weiterhin durchgeführt, auch wenn das Attribut .borderraster den Wert false besitzt. Insbesondere werden die Anpassungen zur Kompatibilität mit anderen Versionen, wie .options[opt_wntsizebug_compat] und .options[opt_w2kprefsize_compat], weiterhin durchgeführt.