📄 waveview.pas
字号:
C26.Visible:=True;
V26.Visible:=True;
end;
27: begin
T27.Visible:=True;
C27.Visible:=True;
V27.Visible:=True;
end;
28: begin
T28.Visible:=True;
C28.Visible:=True;
V28.Visible:=True;
end;
29: begin
T29.Visible:=True;
C29.Visible:=True;
V29.Visible:=True;
end;
30: begin
T30.Visible:=True;
C30.Visible:=True;
V30.Visible:=True;
end;
31: begin
T31.Visible:=True;
C31.Visible:=True;
V31.Visible:=True;
end;
32: begin
T32.Visible:=True;
C32.Visible:=True;
V32.Visible:=True;
end;
end;
if I<>ParaAddFrm.ADODataSet1.RecordCount then
ParaAddFrm.ADODataSet1.Next;
end;
ParaAddFrm.ADOConnection1.Close;
ParaAddFrm.ADODataSet1.Close;
Label6.Caption:='Min,Max:'+FloatToStr(Chart1.BottomAxis.Minimum)
+','+FloatToStr(Chart1.BottomAxis.Maximum)+';';
golX1:=Trunc(golX1*1000)/1000;
golX2:=Trunc(golX2*1000)/1000;
golX:=abs(golX1-golX2);
Label7.Caption:='t1,t2,△t:'+FloatToStr(golX1)+','+
FloatToStr(golX2)+','+
FloatToStr(golX)+';';
Label18.Caption:='st:'+FloatToStr(BaseTime)+';';
end;
procedure TWaveViewFrm.UpDown1Click(Sender: TObject; Button: TUDBtnType);
begin
//选择单元格基数
Label3.Caption:=IntToStr(UpDown1.Position*10);
Chart1.BottomAxis.Increment:=UpDown1.Position*10;
Chart2.BottomAxis.Increment:=UpDown1.Position*10;
Chart1.BottomAxis.Minimum:=0;
Chart2.BottomAxis.Minimum:=0;
case StrToInt(Label3.Caption) of
10: begin
Chart1.BottomAxis.Maximum:=400;
Chart2.BottomAxis.Maximum:=400;
end;
20: begin
Chart1.BottomAxis.Maximum:=800;
Chart2.BottomAxis.Maximum:=800;
end;
30: begin
Chart1.BottomAxis.Maximum:=900;
Chart2.BottomAxis.Maximum:=900;
end;
40: begin
Chart1.BottomAxis.Maximum:=1200;
Chart2.BottomAxis.Maximum:=1200;
end;
50: begin
Chart1.BottomAxis.Maximum:=1500;
Chart2.BottomAxis.Maximum:=1500;
end;
60: begin
Chart1.BottomAxis.Maximum:=1800;
Chart2.BottomAxis.Maximum:=1800;
end;
70: begin
Chart1.BottomAxis.Maximum:=2100;
Chart2.BottomAxis.Maximum:=2100;
end;
80: begin
Chart1.BottomAxis.Maximum:=2400;
Chart2.BottomAxis.Maximum:=2400;
end;
90: begin
Chart1.BottomAxis.Maximum:=2700;
Chart2.BottomAxis.Maximum:=2700;
end;
end;
ScrollBar2.Position:=0;
Label6.Caption:='Min,Max:'+FloatToStr(Chart1.BottomAxis.Minimum)
+','+FloatToStr(Chart1.BottomAxis.Maximum)+';';
end;
procedure TWaveViewFrm.UpDown4Click(Sender: TObject; Button: TUDBtnType);
begin
//保存窗体1或者2波形
case Updown4.Position of
1: Label9.Caption:='保存波形 上';
2: Label9.Caption:='保存波形 下';
end;
end;
procedure TWaveViewFrm.UpDown5Click(Sender: TObject; Button: TUDBtnType);
begin
//打印窗体1或者2波形
case Updown5.Position of
1: Label10.Caption:='保存波形 上';
2: Label10.Caption:='保存波形 下';
end;
end;
procedure TWaveViewFrm.Label9MouseEnter(Sender: TObject);
begin
//鼠标变成手形
Label9.Cursor:=crHandPoint;
end;
procedure TWaveViewFrm.Label9MouseLeave(Sender: TObject);
begin
//鼠标恢复默认形状
Label9.Cursor:=crDefault;
end;
procedure TWaveViewFrm.Label10MouseEnter(Sender: TObject);
begin
//鼠标变成手形
Label10.Cursor:=crHandPoint;
end;
procedure TWaveViewFrm.Label10MouseLeave(Sender: TObject);
begin
//鼠标恢复默认形状
Label10.Cursor:=crDefault;
end;
procedure TWaveViewFrm.Label9Click(Sender: TObject);
var
tmpFile:String;
begin
//*********************************保存波形*********************************//
SaveDialog1.InitialDir:=ExtractFilePath(Application.ExeName)+'波形\';
SaveDialog1.Title:='保存波形';
if SaveDialog1.Execute then
begin
if SaveDialog1.FilterIndex=1 then
begin
SaveDialog1.DefaultExt:='BMP';
tmpFile:=ChangeFileExt(SaveDialog1.FileName,'.BMP');
end
else
begin
SaveDialog1.DefaultExt:='jpg';
tmpFile:=ChangeFileExt(SaveDialog1.FileName,'.jpg');
end;
if Label9.Caption='保存波形 上' then
Chart1.SaveToBitmapFile(tmpFile)
else
Chart2.SaveToBitmapFile(tmpFile);
end;
end;
procedure TWaveViewFrm.Label10Click(Sender: TObject);
var
h,w: LongInt;
begin
//打印波形
Screen.Cursor:=crHourGlass;
try
Printer.BeginDoc;
try
h:=Printer.PageHeight;
w:=Printer.PageWidth;
case UpDown5.Position of
1: Chart1.PrintPartial( Rect( w div 10, { <-- left margin }
h div 3 , { <-- top margin }
w - (w div 10), { <-- right margin }
h - (h div 10) )); { <-- bottom margin }
2: Chart2.PrintPartial( Rect( w div 10, { <-- left margin }
h div 3 , { <-- top margin }
w - (w div 10), { <-- right margin }
h - (h div 10) )); { <-- bottom margin }
end;
Printer.EndDoc;
except
on Exception do
Begin
Printer.Abort;
Printer.EndDoc;
Raise;
end;
end;
finally
Screen.Cursor:=crDefault;
end;
end;
procedure TWaveViewFrm.UpDown2Click(Sender: TObject; Button: TUDBtnType);
begin
case UpDown2.Position of
1: begin
Label4.Caption:='最大值';
Label5.Caption:='输入';
end;
2: begin
Label4.Caption:='最小值';
Label5.Caption:='输入';
end;
end;
end;
procedure TWaveViewFrm.Label5MouseEnter(Sender: TObject);
begin
//鼠标变成手形
Label5.Cursor:=crHandPoint;
end;
procedure TWaveViewFrm.Label5MouseLeave(Sender: TObject);
begin
//鼠标恢复默认形状
Label5.Cursor:=crDefault;
end;
procedure TWaveViewFrm.Label5Click(Sender: TObject);
var
Str: String;
begin
//更改时间坐标轴的最大值和最小值
if Label4.Caption='最小值' then
begin
Str:=InputBox('最小值', '注意:最小值必须为正数且小于当前的最大值!', FloatToStr(Chart1.BottomAxis.Minimum));
try
if (StrToFloat(Str)<0) or (StrToFloat(Str)>=Chart1.BottomAxis.Maximum) then
if MessageBox(WaveViewFrm.Handle,'最小值必须为正数且小于当前的最大值!', '错误', MB_OK+MB_ICONERROR)=IDOK then
Exit;
except
if MessageBox(WaveViewFrm.Handle,'最小值必须为正数且小于当前的最大值!', '错误', MB_OK+MB_ICONERROR)=IDOK then
Exit;
end;
Chart1.BottomAxis.Minimum:=StrToFloat(Str);
Chart2.BottomAxis.Minimum:=StrToFloat(Str);
ScrollBar2.Position:=Trunc(Chart1.BottomAxis.Minimum+1);
end;
if Label4.Caption='最大值' then
begin
Str:=InputBox('最大值', '注意:最大值必须为正数且大于当前的最小值!', FloatToStr(Chart1.BottomAxis.Maximum));
try
if (StrToFloat(Str)<0) or (StrToFloat(Str)<=Chart1.BottomAxis.Minimum) then
if MessageBox(WaveViewFrm.Handle,'最大值必须为正数且大于当前的最小值!', '错误', MB_OK+MB_ICONERROR)=IDOK then
Exit;
except
if MessageBox(WaveViewFrm.Handle,'最大值必须为正数且大于当前的最小值!', '错误', MB_OK+MB_ICONERROR)=IDOK then
Exit;
end;
Chart1.BottomAxis.Maximum:=StrToFloat(Str);
Chart2.BottomAxis.Maximum:=StrToFloat(Str);
end;
Label6.Caption:='Min,Max:'+FloatToStr(Chart1.BottomAxis.Minimum)
+','+FloatToStr(Chart1.BottomAxis.Maximum)+';';
end;
procedure TWaveViewFrm.Series2Click(Sender: TChartSeries;
ValueIndex: Integer; Button: TMouseButton; Shift: TShiftState; X,
Y: Integer);
begin
//选中时间标尺1
if Button=mbLeft then
begin
with Chart1 do
Series2.LinePen.Style:=psDot;
with Chart2 do
Series5.LinePen.Style:=psDot;
end;
end;
procedure TWaveViewFrm.Series3Click(Sender: TChartSeries;
ValueIndex: Integer; Button: TMouseButton; Shift: TShiftState; X,
Y: Integer);
begin
//选中时间标尺2
if Button=mbLeft then
begin
with Chart1 do
Series3.LinePen.Style:=psDot;
with Chart2 do
Series6.LinePen.Style:=psDot;
end;
end;
procedure TWaveViewFrm.Chart1MouseMove(Sender: TObject; Shift: TShiftState;
X, Y: Integer);
var
tmpX,tmpY:Double;
tempStr:String;
begin
//判断是否拖拽时间标尺1
if PtInRect(Chart1.ChartRect, Point(X,Y)) then
with Chart1.Series[1] do
begin
GetCursorValues(tmpX,tmpY);
if Series1.LinePen.Style=psDot then
begin
Series1.Clear;
Series4.Clear;
with Chart1 do
begin
Series1.AddXY(tmpX,LeftAxis.Maximum-7.5,'',clTeeColor);
Series1.AddXY(tmpX,LeftAxis.Minimum,'',clTeeColor);
end;
with Chart2 do
begin
Series4.AddXY(tmpX,-WaveViewFrm.ScrollBar3.Max-15,'',clTeeColor);
Series4.AddXY(tmpX,WaveViewFrm.ScrollBar3.Min,'',clTeeColor);
end;
BaseTime:=tmpX;
BaseTime:=Trunc(BaseTime);
Label18.Caption:='st:'+FloatToStr(BaseTime)+';';
end;
if Series2.LinePen.Style=psDot then
begin
Series2.Clear;
Series5.Clear;
with Chart1 do
begin
Series2.AddXY(tmpX,LeftAxis.Maximum-7.5,'',clTeeColor);
Series2.AddXY(tmpX,LeftAxis.Minimum,'',clTeeColor);
end;
with Chart2 do
begin
Series5.AddXY(tmpX,-WaveViewFrm.ScrollBar3.Max-15,'',clTeeColor);
Series5.AddXY(tmpX,WaveViewFrm.ScrollBar3.Min,'',clTeeColor);
end;
golX1:=tmpX;
golX1:=Trunc(golX1*1000)/1000;
golX2:=Trunc(golX2*1000)/1000;
golX:=Trunc(abs(golX1-golX2)*1000)/1000;
Label7.Caption:='t1,t2,△t:'+FloatToStr(golX1)+','+
FloatToStr(golX2)+','+
FloatToStr(golX)+';';
end;
if Series3.LinePen.Style=psDot then
begin
Series3.Clear;
Series6.Clear;
with Chart1 do
begin
Series3.AddXY(tmpX,LeftAxis.Maximum-7.5,'',clTeeColor);
Series3.AddXY(tmpX,LeftAxis.Minimum,'',clTeeColor);
end;
with Chart2 do
begin
Series6.AddXY(tmpX,-WaveViewFrm.ScrollBar3.Max-15,'',clTeeColor);
Series6.AddXY(tmpX,WaveViewFrm.ScrollBar3.Min,'',clTeeColor);
end;
golX2:=tmpX;
golX1:=Trunc(golX1*1000)/1000;
golX2:=Trunc(golX2*1000)/1000;
golX:=Trunc(abs(golX1-golX2)*1000)/1000;
Label7.Caption:='t1,t2,△t:'+FloatToStr(golX1)+','+
FloatToStr(golX2)+','+
FloatToStr(golX)+';';
end;
end;
end;
procedure TWaveViewFrm.Chart1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
//停止对时间标尺的托拽
Series1.LinePen.Style:=psSolid;
Series4.LinePen.Style:=psSolid;
Series2.LinePen.Style:=psDash;
Series3.LinePen.Style:=psDash;
Series5.LinePen.Style:=psDash;
Series6.LinePen.Style:=psDash;
end;
procedure TWaveViewFrm.Chart2MouseMove(Sender: TObject; Shift: TShiftState;
X, Y: Integer);
var
tmpX,tmpY:Double;
tempStr:String;
begin
//判断是否拖拽时间标尺1
if PtInRect(Chart2.ChartRect, Point(X,Y)) then
with Chart2.Series[1] do
begin
GetCursorValues(tmpX,tmpY);
if Series2.LinePen.Style=psDot then
begin
Series2.Clear;
Series5.Clear;
with Chart1 do
begin
Series2.AddXY(tmpX,LeftAxis.Maximum-7.5,'',clTeeColor);
Series2.AddXY(tmpX,LeftAxis.Minimum,'',clTeeColor);
end;
with Chart2 do
begin
Series5.AddXY(tmpX,-WaveViewFrm.ScrollBar3.Max-15,'',clTeeColor);
Series5.AddXY(tmpX,WaveViewFrm.ScrollBar3.Min,'',clTeeColor);
end;
golX1:=tmpX;
golX1:=Trunc(golX1*1000)/1000;
golX2:=Trunc(golX2*1000)/1000;
golX:=Trunc(abs(golX1-golX2)*1000)/1000;
Label7.Caption:='t1,t2,△t:'+FloatToStr(golX1)+','+
FloatToStr(golX2)+','+
FloatToStr(golX)+';';
end;
if Series3.LinePen.Style=psDot then
begin
Series3.Clear;
Series6.Clear;
with Chart1 do
begin
Series3.AddXY(tmpX,LeftAxis.Maximum-7.5,'',clTeeColor);
Series3.AddXY(tmpX,LeftAxis.Minimum,'',clTeeColor);
end;
with Chart2 do
begin
Series6.AddXY(tmpX,-WaveViewFrm.ScrollBar3.Max-15,'',clTeeColor);
Series6.AddXY(tmpX,WaveViewFrm.ScrollBar3.Min,'',clTeeColor);
end;
golX2:=tmpX;
golX1:=Trunc(golX1*1000)/1000;
golX2:=Trunc(golX2*1000)/1000;
golX:=Trunc(abs(golX1-golX2)*1000)/1000;
Label7.Caption:='t1,t2,△t:'+FloatToStr(golX1)+','+
FloatToStr(golX2)+','+
FloatToStr(golX)+';';
end;
end;
end;
procedure TWaveViewFrm.ScrollBar2Change(Sender: TObject);
var
Differ: Double;
begin
//时间坐标轴滚动
Differ:=Chart1.BottomAxis.Maximum-Chart1.BottomAxis.Minimum;
Chart1.BottomAxis.Minimum:=ScrollBar2.Position;
Chart1.BottomAxis.Maximum:=Chart1.BottomAxis.Minimum+Differ;
Chart2.BottomAxis.Minimum:=ScrollBar2.Position;
Chart2.BottomAxis.Maximum:=Chart1.BottomAxis.Minimum+Differ;
Label6.Caption:='Min,Max:'+FloatToStr(Chart1.BottomAxis.Minimum)
+','+FloatToStr(Chart1.BottomAxis.Maximum)+';';
end;
procedure TWaveViewFrm.ScrollBar3Change(Sender: TObject);
var
Differ: Double;
begin
//Chart2纵坐标滚动
Differ:=Chart2.LeftAxis.Maximum-Chart2.LeftAxis.Minimum;
Chart2.LeftAxis.Minimum:=-ScrollBar3.Position-Differ;
Chart2.LeftAxis.Maximum:=-ScrollBar3.Position;
end;
procedure TWaveViewFrm.UpDown3Click(Sender: TObject; Button: TUDBtnType);
var
I: Integer;
begin
case UpDown3.Position of
1: begin
for I:=1 to 20 do
conSeries[I].Marks.Visible:=False;
Label19.Caption:='隐藏标注';
end;
2: begin
for I:=1 to 20 do
conSeries[I].Marks.Visible:=True;
Label19.Caption:='显示标注';
end;
end;
end;
procedure TWaveViewFrm.Series1Click(Sender: TChartSeries;
ValueIndex: Integer; Button: TMouseButton; Shift: TShiftState; X,
Y: Integer);
begin
//选中基准时间
if Button=mbLeft then
begin
with Chart1 do
Series1.LinePen.Style:=psDot;
with Chart2 do
Series4.LinePen.Style:=psDot;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -