My users like to have the ability to grab the legend and drop it in a position within the chart area and have the legend stick to that location (similar to MS Excel legends). Can you please suggest a way to achieve it?
Please note that all of my charts are code generated with legend click event opening the legend editor.
Thanks,
Legend position change
Hello asupriya,
I made a simple example, it move legend around the Chart and the position that user wish. Please check next example works fine in your application.
InitializeChart:
MouseDown Event:
MouseMove Event:
MouseUp Event:
I hope that will helps.
Thanks,
I made a simple example, it move legend around the Chart and the position that user wish. Please check next example works fine in your application.
InitializeChart:
Code: Select all
Steema.TeeChart.Styles.Line line1;
private void InitializeChart()
{
line1 = new Steema.TeeChart.Styles.Line(tChart1.Chart);
line1.FillSampleValues(5);
moveLegend = false;
tChart1.MouseDown += new MouseEventHandler(tChart1_MouseDown);
tChart1.MouseMove += new MouseEventHandler(tChart1_MouseMove);
tChart1.MouseUp += new MouseEventHandler(tChart1_MouseUp);
}
Code: Select all
private bool moveLegend;
void tChart1_MouseDown(object sender, MouseEventArgs e)
{
if (tChart1.Legend.Clicked(e.X, e.Y) != -1)
{
tChart1.Legend.CustomPosition = true;
moveLegend = true;
}
}
Code: Select all
void tChart1_MouseMove(object sender, MouseEventArgs e)
{
if (moveLegend)
{
tChart1.Legend.Left = e.X;
tChart1.Legend.Top = e.Y;
}
}
MouseUp Event:
Code: Select all
void tChart1_MouseUp(object sender, MouseEventArgs e)
{
moveLegend = false;
}
I hope that will helps.
Thanks,
Best Regards,
Sandra Pazos / Development & Support Steema Software Avinguda Montilivi 33, 17003 Girona, Catalonia Tel: 34 972 218 797 http://www.steema.com |
Instructions - How to post in this forum |
Thanks for the code snippet.
I have a handler for ClickLegend as well and when the mouse down happens on the legend, its triggering the clicklegend event along with mousedown event. How can I define a legend doubleclick event so that legendclick even can be changed to double click.
Here is the code snippet I have
The event handlers are:
I have a handler for ClickLegend as well and when the mouse down happens on the legend, its triggering the clicklegend event along with mousedown event. How can I define a legend doubleclick event so that legendclick even can be changed to double click.
Here is the code snippet I have
Code: Select all
AddHandler MyChart.ClickLegend, AddressOf MyChart_ClickLegend
AddHandler MyChart.MouseMove, AddressOf MyChart_MouseMove
AddHandler MyChart.MouseDown, AddressOf MyChart_MouseDown
AddHandler MyChart.MouseUp, AddressOf MyChart_MouseUp
Code: Select all
Private Sub MyChart_ClickLegend(ByVal sender As Object, ByVal e As MouseEventArgs)
Dim MyChart1 As Steema.TeeChart.Chart = CType(sender, Steema.TeeChart.Chart)
Dim Index As Integer = MyChart1.Legend.Clicked(e.X, e.Y)
Dim Series As Steema.TeeChart.Styles.FastLine
If ((Index <> -1) And (MyChart1.Series.Count >= Index)) Then
Series = CType(MyChart1.Series(Index), Steema.TeeChart.Styles.FastLine)
Steema.TeeChart.Editors.PenEditor.Edit(Series.LinePen)
End If
End Sub
dim moveLegend as boolean = false
Private Sub MyChart_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)
moveLegend = False
End Sub
Private Sub MyChart_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)
activeChart = CType(sender, Steema.TeeChart.TChart)
If activeChart.Legend.Clicked(e.X, e.Y) <> -1 Then
activeChart.Legend.CustomPosition = True
moveLegend = True
End If
End Sub
Private Sub MyChart_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)
Try
activeChart = CType(sender, Steema.TeeChart.TChart)
'See if the legend is being moved
If moveLegend Then
activeChart.Legend.Left = e.X
activeChart.Legend.Top = e.Y
End If
end sub
Hello asupriya,
If you want to use doubleClick event, because legends move when you do double click in the chart, needs next code in your application.
MouseDown event:
MouseMove event:
MouseDoubleClick event:
I hope that will helps,
If you want to use doubleClick event, because legends move when you do double click in the chart, needs next code in your application.
MouseDown event:
Code: Select all
Private Sub TChart1_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles TChart1.MouseDown
x = e.X
y = e.Y
If (moveLegend) Then
moveLegend = False
End If
End Sub
Code: Select all
Private Sub TChart1_MouseMove(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles TChart1.MouseMove
If (moveLegend) Then
TChart1.Legend.Left = e.X
TChart1.Legend.Top = e.Y
End If
End Sub
MouseDoubleClick event:
Code: Select all
Private Sub TChart1_DoubleClick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TChart1.DoubleClick
If (TChart1.Legend.Clicked(x, y)) Then
TChart1.Legend.CustomPosition = True
moveLegend = True
End If
x = -1
y = -1
End Sub
Best Regards,
Sandra Pazos / Development & Support Steema Software Avinguda Montilivi 33, 17003 Girona, Catalonia Tel: 34 972 218 797 http://www.steema.com |
Instructions - How to post in this forum |