⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 waveview.pas

📁 合成实验的上位机程序
💻 PAS
📖 第 1 页 / 共 3 页
字号:
            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 + -