Hi,
Is there a way to zoom starting from out side of the plot rectangle? I've been trying to zoom with mouse down at the outside of plot rectangle (within the Chart), but as soon as mouse is down out side of the plot rectangle, the zoom function disables. I'd like to zoom in (zoom rectangle covers both in and out of the plot) at the edge of the plot rectangle without have to move the plot first.
Thanks
-Bill
Zoom outside of Plot rectangle
-
- Site Admin
- Posts: 14730
- Joined: Mon Jun 09, 2003 4:00 am
- Location: Banyoles, Catalonia
- Contact:
Hi Bill,
In that case you can zoom doing something like this:
In that case you can zoom doing something like this:
Code: Select all
procedure TForm1.Chart1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if MouseOutOfChartRect(X,Y) then
begin
X0:=X;
Y0:=Y;
end;
end;
procedure TForm1.Chart1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var R: TRect;
begin
if ((X0<>-1) and (Y0<>-1)) then
begin
R.Left:=X0;
R.Top:=Y0;
R.Right:=X;
R.Bottom:=Y;
Chart1.ZoomRect(R);
end;
X0:=-1;
Y0:=-1;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
X0:=-1;
Y0:=-1;
end;
function TForm1.MouseOutOfChartRect(X, Y: Integer): boolean;
begin
result:=((X<Chart1.ChartRect.Left) or (Y<Chart1.ChartRect.Top));
end;
procedure TForm1.Chart1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
X1:=X;
Y1:=Y;
Chart1.Repaint;
end;
procedure TForm1.Chart1AfterDraw(Sender: TObject);
begin
if ((X0<>-1) and (Y0<>-1)) then
begin
Chart1.Canvas.Brush.Style:=bsClear;
Chart1.Canvas.Pen.Color:=Chart1.Zoom.Pen.Color;
Chart1.Canvas.Pen.Style:=Chart1.Zoom.Pen.Style;
Chart1.Canvas.Rectangle(X0,Y0,X1,Y1);
end;
end;
Best Regards,
Narcís Calvet / 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 |