8 canvas

Hochspezialisierte und bestehende graphische Anwendungen (z.B. Prozessvisualisierungen), die direkten Zugriff auf das verwendete Fenstersystem brauchen, können das Dialogobjekt Canvas als privaten Zeichenbereich nutzen.

Dieses Objekt stellt der DM der Applikation zur Verfügung. Der DM kümmert sich nicht um den Inhalt dieses Objektes, allein die Applikation ist für den Inhalt verantwortlich. Aus diesem Grund darf eine Canvas auch keine Kinder enthalten.

Definition

{ export | reexport } { model } canvas  { <Bezeichner> }
{
  <Standardattribute>
  <Allgemeine Attribute>
  <Hierarchieattribute>
  <Layoutattribute>
  <Objektspezifische Attribute>
}

Die Handhabung der im Kapitel „Attribute“ aufgelisteten Attribute übernimmt der DM in gewohnter Manier. Typischerweise wird dieses Objekt dann verwendet, wenn die Applikation dynamische Grafiken oder Schaubilder darstellen muss.

Ereignisse

cut

extevent

focus

help

paste

Kinder

document

record

transformer

Vater

groupbox

layoutbox

module

notepage

splitbox

toolbar

window

Menü

Popup-Menü

8.1 Attribute

.acc_label

.acc_text

.accelerator

.bgc

.bordercolor

.borderraster

.borderstyle

.borderwidth

.canvasfunc

.class

.control

.cursor

.cut_pending

.cut_pending_changed

.dialog

.document[integer]

.external

.external[integer]

.fgc

.firstrecord

.focus

.font

.function

.groupbox

.height

.help

.index

.label

.lastrecord

.layoutbox

.mapped

.member[integer]

.membercount

.menu

.model

.notepage

options[enum]

.parent

.posraster

.real_height

.real_sensitive

.real_visible

.real_width

.real_x

.real_y

.record[integer]

.recordcount

.scope

.sensitive

.sizeraster

.statushelp

.toolhelp

.toolbar

.userdata

.visible

.width

.window

.xauto

.xleft

.xright

.yauto

.ybottom

.ytop

8.2 Spezifische Attribute

Attribut Beschreibung

.borderraster

Legt die Art der Geometrieberechnung bei aktivem Raster fest. Die detaillierte Beschreibung finden sie in der Attribut-Beschreibung in der „Attributreferenz“.

.borderstyle

Definiert den Stil, also Darstellung und Ausprägung, des Rahmens (ab IDM-Version A.06.01.a).

.canvasfunc

Spezifiziert eine Funktion, die bei einem bestimmten Ereignis aufgerufen werden soll. Diese Funktion muss von der Anwendung bereitgestellt werden und muss vom Typ canvasfunc sein.

.index

Index des Objekts im Kindvektor des Vaterobjekts.

options[enum]

Siehe Kapitel „Bedeutung des Attribut .options“.

Zusätzlich mögliche Indizes:

  • opt_addevents (nur IDM für Qt)
  • opt_center_toolhelp (nur IDM für Windows)
  • opt_graphicsview (nur IDM für Qt)

8.2.1 Bedeutung des Attribut .options

Mit Motif 1.1 können Sie nicht mittels der Tastaturnavigation über ein Objekt navigieren, wenn dieses Objekt ein Composite-Widget ist oder dieses Widget keine Kinder hat. Es kann dabei auch zu einem Programmabsturz kommen.

Darum wurde für das Objekt Canvas die Option opt_accept_child verfügbar gemacht, welches entscheidet, ob ein DrawingArea-Widget (composite, d.h. akzeptiert Kindobjekte) oder ein DrawnButton-Widget (primitive, d.h. akzeptiert keine Kindobjekte) verwendet werden soll.

Das DrawnButton-Widget wird als Default verwendet.

Anwendungen, die eigene Widgets oder spezielle Widgets in der Canvas beinhalten, müssen die Option opt_accept_child setzen.

Wenn opt_accept_child auf true gesetzt wird, wird ein DrawingArea-Widget (Composite) für die Canvas verwendet. Default ist ein DrawnButton-Widget.

Die folgenden enum-Optionen werden nur ausgewertet, wenn opt_accept_child nicht gesetzt ist.

Wenn opt_focus_frame auf false gesetzt wird, wird die sog. location-cursor-border (Tastaturfokus) nicht gezeichnet, wenn die Canvas den Fokus nicht hat. Der Default ist true.

option_index

Bedeutung

opt_accept_child

Canvas akzeptiert Kind-Widgets (d.h. kein Fokus).

opt_focus_frame

Fokusrahmen wird nicht gezeichnet.

opt_motif_shadow

Canvas zeichnet Motif-Schattenrand.

8.3 Beispiel

model canvas MCanvas

{

  .canvasfunc CanvasEvent;

  .xauto 0;

  .xleft 0;

  .xright 0;

  .yauto 0;

  .ytop 0;

  .ybottom 5;

  .fgc DiaColor20;

  .bgc Background;

  .posraster true;

  .sizeraster true;

  .font DiaFont;

}

Abbildung 16-1: Canvas