Interaktive Oberflächenobjekte
Seit der letzten Aktualisierung des Canvas-Objektes ist es möglich, einfache geometrische Formen wie Linien, Kreise oder Rechtecke zu zeichnen. Diese Objekte können zur Laufzeit erstellt werden. Es lassen sich Attribute wie Rahmenfarbe, Füllfarbe oder Strichstärke verändern. Auch komplexe Abläufe können mittels solcher Diagramme oder Grafiken anschaulicher dargestellt werden. Diesen Grafik-Objekten fehlte es bisher an Interaktionsmöglichkeit. Um diese Lücke zu füllen ist es nun möglich, Oberflächenobjekte im Canvas-Objekt zu platzieren. Dazu gehören verschiedene Formen von Buttons, Labels, Edits und Listen. Die verfügbaren Oberflächenobjekte werden wie die Geometrischen-Objekte dynamisch zur Laufzeit erstellt. Für die Umwandlung der für Oberflächenobjekte üblichen Pixelkoordinaten in logische Koordinaten stehen neue conzept 16-Befehle bereit. Ansonsten sind die verfügbaren Eigenschaften und Funktionalitäten deckungsgleich mit denen, wie sie auch im conzept 16-Designer zur Verfügung stehen.
MouseMove Ergänzung
Zeitgleich zur Integration von ausgewählten Oberflächenobjekten bietet das Canvas-Objekt nun die Anwendung des EvtMouseMove Ereignis an. Dadurch können nun in Kombination einer HitTest-Methode Informationen über Fensterobjekte angezeigt werden, wenn der Mauszeiger über einem Objekt schwebt.
Verfügbare Objekte
Da nicht jedes Objekt aus dem conzept 16-Designer eine sinnvolle Anwendung innerhalb des Canvas-Objekts bietet, ist die Auswahl an zeichenbaren Objekten beschränkt. Hier folgt die vollständige Liste an nutzbaren Objekten.
Animation BigIntEdit Button Checkbox ColorButton ColorEdit DateEdit DataList DecimalEdit Edit FloatEdit FontNameEdit FontSizeEdit GroupBox HyperLink Icon IntEdit Label MenuButton MetaPicture Picture Radiobutton RecList RtfEdit TextEdit TimeEdit
Anwendungsbeispiel
Wie gewohnt lassen sich Objekte durch WinCreate() zur Laufzeit erzeugen:
tObject # WinCreate(_WinTypeButton, 'MyButton');
//StyleTheme setzen
tObject->wpStyleTheme # _WinStyleThemeSystem;
//Objekt dem Canvas hinzufügen
MyCanvas->WinAdd(tObject);
Zur Umrechnung von Pixelkoordinaten in logische Einheiten um die Position von Oberflächenobjekten anzuzeigen:
// Pixel-Koordinate der linken oberen Ecke des Oberflächenobjektes 'WinObject'.
tPoint # PointMake(WinObject->wpAreaLeft, WinObject->wpAreaTop);
// Umwandeln in logische Einheiten.
tPoint # MyCanvas->WinCanvasLogUnit(tPoint);
// Logische Einheiten in Millimeter umrechnen (z.B. zur Anzeige).
tLogPosX # PrtUnit(tPoint1:x, _PrtUnitMillimetres);
tLogPosY # PrtUnit(tPoint1:y, _PrtUnitMillimetres);
Fazit
Das Canvas-Objekt kann neben der Darstellung von Grafiken und Diagrammen nun auch Interaktion zur Verfügung stellen. Und zusätzlich können Diagramme die hinzugefügten Oberflächenobjekte zur Darstellung von Anwendungen nutzen. Insgesamt bietet das Canvas-Objekt dank der Neuerungen eine breitere Anwendungsmöglichkeit und steigert damit seinen Wert als Baustein für eine professionelle Prozessvisualisierung.