Using
point and click
Users can click graphs during execution. The DataWindow control
provides a method called ObjectAtPointer that stores information about
what was clicked. You can use this method in a number of ways in mouse
events. For example, with the ObjectAtPointer information, you can call
other graph methods to report to the user the value of the clicked data
point. This section shows you how.
Mouse events and graphs
To cause actions when a user clicks a graph, you might:
-
PowerBuilder
Write a Clicked script for the DataWindow control
You should call ObjectAtPointer in the first statement of the
event’s code.
Using ObjectAtPointer
ObjectAtPointer works differently in PowerBuilder.
PowerBuilder
ObjectAtPointer has this syntax:
1 |
DataWindowName.ObjectAtPointer ( "graphName", seriesNumber, dataNumber ) |
ObjectAtPointer does these things:
-
Returns the kind of object the user clicked
The object is identified by a grObjectType enumerated value. For
example, if the user clicks on a data point, ObjectAtPointer returns
TypeData!. If the user clicks on the graph’s title, ObjectAtPointer
returns TypeTitle!.For a list of object values, see DataWindow
Constants in DataWindow Reference.
In PowerBuilder, you can also open the Browser and click the
Enumerated tab. -
Stores the number of the series the pointer was over in the
variable seriesNumber, which is an argument passed by reference -
Stores the number of the data point in the variable dataNumber,
also an argument passed by reference
Example
Assume there is a graph named gr_sales in the DataWindow control
dw_sales. The following code for the control’s MouseDown event displays a
message box:
-
If the user clicks on a series (that is, if ObjectAtPointer
returns 1), the message box shows the name of the series clicked on.
The example uses the method GetSeriesName to get the series name,
given the series number stored by ObjectAtPointer. -
If the user clicks on a data point (that is, if ObjectAtPointer
returns 2), the message box lists the name of the series and the value
clicked on. The example uses GetDataNumber to get the data’s value,
given the data’s series and data point number.
PowerBuilder
This code is for the Clicked event:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
int SeriesNum, DataNum double Value grObjectType ObjectType string SeriesName, ValueAsString string GraphName GraphName = "gr_sale" // The following method stores the series number // clicked on in SeriesNum and stores the number // of the data point clicked on as DataNum. ObjectType = & dw_printer.ObjectAtPointer (GraphName, & SeriesNum, DataNum) IF ObjectType = TypeSeries! THEN SeriesName = & dw_printer.SeriesName (GraphName, SeriesNum) MessageBox("Graph", & "You clicked on the series " + SeriesName) ELSEIF ObjectType = TypeData! THEN Value = dw_printer.GetData (GraphName, & SeriesNum, DataNum) ValueAsString = String(Value) MessageBox("Graph", & dw_printer.SeriesName (GraphName, & SeriesNum) + " value is " + ValueAsString) END IF |