Download QCChart2D for WPF User Manual - Quinn

Transcript
Data ToolTips 340
ChartView chartVu;
class CustomToolTip: DataToolTip
{
ChartText stockpanel;
ChartCalendar []xValues;
double [,]stockPriceData;
double []stockVolumeData;
double []NASDAQData ;
public CustomToolTip(ChartView component,
ChartCalendar []xvalues, double [,]stockpricedata,
double []nasdaqdata, double []stockvolumedata): base (component)
{
xValues = xvalues;
stockPriceData = stockpricedata;
stockVolumeData = stockvolumedata;
NASDAQData = nasdaqdata;
stockpanel = GetTextTemplate();
}
public override void OnMouseUp(MouseButtonEventArgs mouseevent)
{
base.OnMouseUp(mouseevent);
// Redraws the chart. Since the stockpanel object has not been added to the chart
// (using addChartObject) it will not be redrawn when the chart is redrawn
GetChartObjComponent().UpdateDraw();
}
public override void OnMouseDown (MouseButtonEventArgs mouseevent)
{
Point2D mousepos = new Point2D();
mousepos.SetLocation(mouseevent.X, mouseevent.Y);
base.OnMouseDown(mouseevent);
ChartPlot selectedPlot = (ChartPlot) GetSelectedPlotObj();
if (selectedPlot != null)
{
int selectedindex = GetNearestPoint().GetNearestPointIndex();
PhysicalCoordinates transform = GetSelectedCoordinateSystem();
stockpanel.SetChartObjScale(transform);
stockpanel.SetLocation( mousepos, ChartObj.DEV_POS);
stockpanel.SetTextString("Stock Data" );
// Looking to the original arrays, because we just have the selectedindex,
// yet we want to display stock O-H-L-C data, volume and NASDAQ. Only one
// of these datasets can be selected at a time by the tooltip.
double open = stockPriceData[0,selectedindex];
double high = stockPriceData[1,selectedindex];
double low = stockPriceData[2,selectedindex];
double close = stockPriceData[3,selectedindex];
double nasdaq = NASDAQData[selectedindex];
double volume = stockVolumeData[selectedindex];
String openObj = ChartSupport.NumToString( open,
ChartObj.DECIMALFORMAT, 2, "");
String highObj = ChartSupport.NumToString( high,
ChartObj.DECIMALFORMAT, 2, "");
String lowObj = ChartSupport.NumToString( low,
ChartObj.DECIMALFORMAT, 2, "");
String closeObj = ChartSupport.NumToString( close,
ChartObj.DECIMALFORMAT, 2, "");
String volumeObj = ChartSupport.NumToString( volume,
ChartObj.DECIMALFORMAT, 0, "");
String nasdaqObj = ChartSupport.NumToString( nasdaq,
ChartObj.DECIMALFORMAT, 2, "");
TimeLabel timelabel = new TimeLabel(transform,
xValues[selectedindex], ChartObj.TIMEDATEFORMAT_STANDARD);
stockpanel.AddNewLineTextString(timelabel.GetTextString());
stockpanel.AddNewLineTextString("Open " + openObj);
stockpanel.AddNewLineTextString("High " + highObj);
stockpanel.AddNewLineTextString("Low " + lowObj);
stockpanel.AddNewLineTextString("Close " + closeObj);