📄 showdrawunit.pas
字号:
unit ShowDrawUnit;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, TeEngine, Series, TeeProcs, Chart, ExtCtrls, ComCtrls, ToolWin,
Menus, ExtDlgs,Math, StdCtrls, Spin, Buttons, RzTabs;
type
TShowDrawForm = class(TForm)
Panel2: TPanel;
Splitter1: TSplitter;
Chart2: TChart;
LineSeries1: TLineSeries;
LineSeries2: TLineSeries;
CoolBar1: TCoolBar;
ToolBar1: TToolBar;
ToolButton2: TToolButton;
ToolButton4: TToolButton;
ToolButton6: TToolButton;
ToolButton7: TToolButton;
ToolButton10: TToolButton;
ToolButton8: TToolButton;
dlgSave1: TSaveDialog;
Chart1: TChart;
Series1: TLineSeries;
Series2: TLineSeries;
Panel1: TPanel;
Panel3: TPanel;
Panel4: TPanel;
SpinEdit1: TSpinEdit;
BitBtn5: TBitBtn;
BitBtn6: TBitBtn;
SpeedButton2: TSpeedButton;
SpeedButton1: TSpeedButton;
SpeedButton3: TSpeedButton;
SpeedButton4: TSpeedButton;
SpeedButton5: TSpeedButton;
SpinEdit2: TSpinEdit;
SpeedButton6: TSpeedButton;
SpeedButton7: TSpeedButton;
SpeedButton8: TSpeedButton;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
Series3: TPointSeries;
Series4: TPointSeries;
Series5: TPointSeries;
Label1: TLabel;
Label2: TLabel;
pm2: TPopupMenu;
N2: TMenuItem;
btn1: TToolButton;
N3: TMenuItem;
N4: TMenuItem;
RzPageControl1: TRzPageControl;
TabSheet1: TRzTabSheet;
TabSheet2: TRzTabSheet;
cht1: TChart;
lbl1: TLabel;
LineSeries3: TLineSeries;
LineSeries4: TLineSeries;
PointSeries1: TPointSeries;
spl1: TSplitter;
cht2: TChart;
lbl2: TLabel;
LineSeries5: TLineSeries;
LineSeries6: TLineSeries;
PointSeries2: TPointSeries;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure ToolButton8Click(Sender: TObject);
procedure Chart1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure FormCreate(Sender: TObject);
procedure ToolButton10Click(Sender: TObject);
procedure Chart1AfterDraw(Sender: TObject);
procedure SpinEdit1Change(Sender: TObject);
procedure BitBtn5Click(Sender: TObject);
procedure BitBtn6Click(Sender: TObject);
procedure SpeedButton1Click(Sender: TObject);
procedure SpeedButton4Click(Sender: TObject);
procedure SpeedButton2Click(Sender: TObject);
procedure SpeedButton3Click(Sender: TObject);
procedure ToolButton6Click(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure SpeedButton6Click(Sender: TObject);
procedure SpeedButton7Click(Sender: TObject);
procedure SpeedButton5Click(Sender: TObject);
procedure SpeedButton8Click(Sender: TObject);
procedure SpinEdit2Change(Sender: TObject);
procedure Chart2M(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure Chart2AfterDraw(Sender: TObject);
procedure Series1AfterDrawValues(Sender: TObject);
procedure FormResize(Sender: TObject);
procedure Chart1Click(Sender: TObject);
procedure Chart2Click(Sender: TObject);
procedure btn1Click(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure RzPageControl1Change(Sender: TObject);
procedure cht2MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure cht2AfterDraw(Sender: TObject);
procedure LineSeries5AfterDrawValues(Sender: TObject);
procedure cht1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure cht1AfterDraw(Sender: TObject);
procedure LineSeries3AfterDrawValues(Sender: TObject);
procedure ToolButton2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
OldX,OldY:Longint;
OldX2,OldY2,OldX3,OldY3,OldX4,OldY4:Longint;
CrossHairColor:TColor;
CrossHairStyle:TPenStyle;
Procedure HorizScroll(Const Percent:Double;thechart:TChart);
Procedure VertScroll(Const Percent:Double;thechart:TChart);
Procedure ScrollAxis(Axis:TChartAxis; Const Percent:Double);
end;
var
ShowDrawForm: TShowDrawForm;
implementation
uses Main, DrawInfor, Printers, GlobalVarDefs, Progress, WaitPas_Unit,
OutToExcelUnit;
{$R *.dfm}
procedure TShowDrawForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
MainForm.N9.Enabled:=False;
Action:=caFree;
delTabs('电动势图');
end;
procedure TShowDrawForm.ToolButton8Click(Sender: TObject);
begin
DrawInforForm.ShowModal;
end;
procedure TShowDrawForm.Chart1MouseMove(Sender: TObject;
Shift: TShiftState; X, Y: Integer);
{ This procedure draws the crosshair lines }
{ This procedure draws the crosshair lines }
Procedure DrawCross(AX,AY:Integer);
begin
With Chart1,Canvas do
begin
Pen.Color:=CrossHairColor;
Pen.Style:=CrossHairStyle;
Pen.Mode:=pmXor;
Pen.Width:=1;
MoveTo(ax,ChartRect.Top-Height3D);
LineTo(ax,ChartRect.Bottom-Height3D);
MoveTo(ChartRect.Left+Width3D,ay);
LineTo(ChartRect.Right+Width3D,ay);
end;
end;
Var tmpX,tmpY:Double;
begin
if (OldX<>-1) then
begin
DrawCross(OldX,OldY); { draw old crosshair }
OldX:=-1;
end;
{ check if mouse is inside Chart rectangle }
if PtInRect( Chart1.ChartRect, Point(X-Chart1.Width3D,Y+Chart1.Height3D) ) then
begin
DrawCross(x,y); { draw crosshair at current position }
{ store old position }
OldX:=x;
OldY:=y;
{ set label text }
With Series1 do
begin
GetCursorValues(tmpX,tmpY); { <-- get values under mouse cursor }
MainForm.RzStatusPane2.Caption:='X:'+GetVertAxis.LabelValue(Round(tmpX))+
'米 '+
'Y:'+GetHorizAxis.LabelValue(Round(tmpY))+'米';
end;
end;
end;
procedure TShowDrawForm.FormCreate(Sender: TObject);
begin
OldX :=-1;
OldX2:=-1;
OldX3:=-1;
OldX4:=-1; { initialize variables }
CrossHairColor:=clRed;
CrossHairStyle:=psSolid;
end;
procedure TShowDrawForm.ToolButton10Click(Sender: TObject);
begin
Close;
end;
procedure TShowDrawForm.Chart1AfterDraw(Sender: TObject);
begin
OldX:=-1; { Reset old mouse position }
end;
procedure TShowDrawForm.SpinEdit1Change(Sender: TObject);
begin
try
Chart1.MaxPointsPerPage:=SpinEdit1.Value;
Chart1.UndoZoom
except
end;
end;
procedure TShowDrawForm.BitBtn5Click(Sender: TObject);
begin
Chart1.ZoomPercent(115);
end;
procedure TShowDrawForm.BitBtn6Click(Sender: TObject);
begin
Chart1.ZoomPercent(85);
end;
procedure TShowDrawForm.SpeedButton1Click(Sender: TObject);
begin
HorizScroll(10,Chart1);
end;
procedure TShowDrawForm.SpeedButton4Click(Sender: TObject);
begin
HorizScroll(-10,Chart1);
end;
procedure TShowDrawForm.SpeedButton2Click(Sender: TObject);
begin
VertScroll(-10,Chart1);
end;
procedure TShowDrawForm.SpeedButton3Click(Sender: TObject);
begin
VertScroll(10,Chart1);
end;
Procedure TShowDrawForm.HorizScroll(Const Percent:Double;thechart:TChart);
begin
thechart.ZoomPercent(100);
ScrollAxis(thechart.TopAxis,Percent);
ScrollAxis(thechart.BottomAxis,Percent);
end;
Procedure TShowDrawForm.VertScroll(Const Percent:Double;thechart:TChart);
begin
ScrollAxis(thechart.LeftAxis,Percent);
ScrollAxis(thechart.RightAxis,Percent);
end;
Procedure TShowDrawForm.ScrollAxis(Axis:TChartAxis; Const Percent:Double);
var Amount:Double;
begin
With Axis do
begin
Amount:=-((Maximum-Minimum)/(100.0/Percent));
SetMinMax(Minimum-Amount,Maximum-Amount);
end;
end;
procedure TShowDrawForm.ToolButton6Click(Sender: TObject);
begin
if Messagebox(handle,'您确定要将数据导出到Excel中吗?','询问',MB_YESNO+MB_ICONQUESTION)=IDYES then begin
OutToExcel.Create(true);
progressform:=Tprogressform.Create(self);
progressform.ShowModal;
end;
end;
procedure TShowDrawForm.BitBtn1Click(Sender: TObject);
begin
Chart2.ZoomPercent(115);
end;
procedure TShowDrawForm.BitBtn2Click(Sender: TObject);
begin
Chart2.ZoomPercent(85);
end;
procedure TShowDrawForm.SpeedButton6Click(Sender: TObject);
begin
VertScroll(-10,Chart2);
end;
procedure TShowDrawForm.SpeedButton7Click(Sender: TObject);
begin
HorizScroll(10,Chart2);
end;
procedure TShowDrawForm.SpeedButton5Click(Sender: TObject);
begin
VertScroll(10,Chart2);
end;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -