Interactive surface objects
Since the last update of the Canvas object it is possible to draw simple geometric shapes like lines, circles or rectangles. These objects can be created during runtime. Attributes like frame color, fill color or line width can be changed. Complex processes can also be displayed more clearly by means of such diagrams or graphics. Up to now, these graphic objects lacked interaction possibilities. To fill this gap, it is now possible to place surface objects in the canvas object. These include various forms of buttons, labels, edits and lists. Like the Geometric objects, the available surface objects are created dynamically during runtime. New conzept 16-commands are available for converting the pixel coordinates commonly used for surface objects into logical coordinates. Besides that, the available properties and functionalities are congruent with those available in the conzept 16-Designer.
MouseMove addition
The Canvas object now offers silmultaneous integration of selected surface objects and application of the EvtMouseMove event. This can now be used in combination with a HitTest method to display information about window objects when the mouse pointer hovers over an object.
Available objects
Since not every object from the concept 16-designer offers a useful application within the canvas object, the choice of drawable objects is limited. Below is the complete list of usable objects.
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
Example of application
As usual, objects can be created during runtime by WinCreate():
tObject # WinCreate(_WinTypeButton, 'MyButton');
//Set StyleTheme
tObject->wpStyleTheme # _WinStyleThemeSystem;
//Add object to Canvas
MyCanvas->WinAdd(tObject);
For converting pixel coordinates into logical units to display the position of surface objects:
// Pixel coordinate of the upper left corner of the surface object 'WinObject'.
tPoint # PointMake(WinObject->wpAreaLeft, WinObject->wpAreaTop);
// Convert to logical units.
tPoint # MyCanvas->WinCanvasLogUnit(tPoint);
// Convert logical units to millimeters (e.g. for display).
tLogPosX # PrtUnit(tPoint1:x, _PrtUnitMillimetres);
tLogPosY # PrtUnit(tPoint1:y, _PrtUnitMillimetres);
Summary
The Canvas object can now provide interaction in addition to displaying graphs and charts. Furthermore, diagrams can use the added surface objects to display applications. All in all, thanks to the new features, the Canvas object offers a broader range of applications and thus increases its value as a building block for professional process visualization.