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

📄 edit.~pas

📁 语音与识别技术包含很多C语言处理模块系统
💻 ~PAS
📖 第 1 页 / 共 4 页
字号:
  Self.SetCanEdit;
  Self.SetHint;
end;

procedure TEditMainForm.SetCaption;
var
  i: Integer;
begin
  Self.StbShow.Panels[2].Text := ReadString('Application', 'INC');
  for i := 0 to Self.PagSele.PageCount - 1 do
  begin
      Self.PagSele.Pages[i].Caption := ReadString('Caption', Self.PagSele.Pages[i].Name);
  end;
  for i := 0 to Self.TabSheet1.ControlCount - 1 do
  begin
      if Self.TabSheet1.Controls[i] is TLMDSpeedButton then
         TLMDSpeedButton(Self.TabSheet1.Controls[i]).Caption :=
              ReadString('Caption', TLMDSpeedButton(Self.TabSheet1.Controls[i]).Name);
  end;
end;

procedure TEditMainForm.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  Self.PlayWave.Stop;
  Self.RecordWave.Stop;
  if Self.WaveChange then
  begin
     CanClose := Not Self.IsSave;
     Exit;
  end;

  Self.ClearBookMark;
  Self.PlayWave.Free;
  Self.RecordWave.Free;
  Self.CopyDrawBMP.Free;
  Self.StopDrawBmp.Free;
  Self.DrawBMP.Free;
  Halt;
end;

procedure TEditMainForm.GetVolume;
begin
end;

procedure TEditMainForm.AdmSetVolumeControlChange(Sender: TObject; MixerH,
  ID: Integer);
begin
  Self.GetVolume;
end;

procedure TEditMainForm.PaintBox1Paint(Sender: TObject);
begin
  if (Self.PlayWave.NowPlay <> CPSTOPING) OR (NOT Self.isStopPlay) then
     BitBlt(Self.PaintBox1.Canvas.Handle, 0, 0, Self.PaintBox1.Width,
           Self.PaintBox1.Height, Self.StopDrawBmp.Canvas.Handle, 0, 0, SRCCOPY)
  else
     BitBlt(Self.PaintBox1.Canvas.Handle, 0, 0, Self.PaintBox1.Width,
            Self.PaintBox1.Height, Self.CopyDrawBMP.Canvas.Handle, 0, 0, SRCCOPY);
end;

procedure TEditMainForm.DrawSelData(const Sel1, Sel2: Integer; PaintBox: TPaintBox;
                             BitMap, DesBitMap: TBitMap);
var
  Len: Integer;
begin
  Len := ABS(Sel2 - Sel1);
  if Len = 0 then
     Len := 1;
  BitBlt(BitMap.Canvas.Handle, 0, 0, BitMap.Width,
         BitMap.Height, DesBitMap.Canvas.Handle, 0, 0, SRCCOPY);

  if (Sel1 = -1) OR (Sel2 = -1) then
  begin
     BitBlt(PaintBox.Canvas.Handle, 0, 0, PaintBox.Width, PaintBox.Height,
            BitMap.Canvas.Handle, 0, 0, SRCCOPY);
     Exit;
  end;

  BitBlt(BitMap.Canvas.Handle, Sel1, 0, Len, BitMap.Height,
         BitMap.Canvas.Handle, Sel1, 0, NOTSRCCOPY);

  BitBlt(PaintBox.Canvas.Handle, 0, 0, PaintBox.Width, PaintBox.Height,
         BitMap.Canvas.Handle, 0, 0, SRCCOPY);
end;

procedure TEditMainForm.DFBWaveOpenClick(Sender: TObject);
begin
  if Self.IsSave then
     Exit;
  if Self.OpenDialog1.Execute then
  begin
     Self.PRBShowPlan.Visible := True;
     Self.PRBShowPlan.Max := 100;
     Self.PRBShowPlan.Position := 0;
     Self.StbShow.Panels[0].Text := '正在打开文件';
     Application.ProcessMessages;
     Self.FileName := Self.OpenDialog1.FileName;
     Self.PlayWave.FileName := Self.OpenDialog1.FileName;
     Self.WaveChange := FALSE;
     Self.ClearBookMark;
     Sleep(500);
     Self.PRBShowPlan.Visible := False;
     Self.PRBShowPlan.Position := 0;
     Self.StbShow.Panels[0].Text := '';
  end;
end;

function TEditMainForm.TimeToString(const Time: TCM_Wave_Time; RestChar: String;
  ShowHer: Boolean): String;
  function SetLengthString(i: Integer): String;
  begin
    Result := IntToStr(i DIV 10) + IntToStr(i MOD 10);
  end;
begin
  Result := SetLengthString(Time.Hour) + RestChar + SetLengthString(Time.Minute) +
            RestChar + SetLengthString(Time.Second);
  if ShowHer then
     Result := Result + '.' + SetLengthString(Time.Heroism);
end;

procedure TEditMainForm.BeginDraw(var Msg: TMessage);
begin
  Self.PRBShowPlan.Visible := True;
  Self.PRBShowPlan.Max := Msg.WParam;
  Self.PRBShowPlan.Position := 0;
  Self.StbShow.Panels[0].Text := '正在处理数据';
  Application.ProcessMessages;
  case Self.PagSele.TabIndex of
    0:
    begin

    end;
    1:;
    2:;
    3:;
  end;
end;

procedure TEditMainForm.DrawPoistion(var Msg: TMessage);
begin
  Self.PRBShowPlan.Position := Msg.WParam;
end;

procedure TEditMainForm.EndDraw(var Msg: TMessage);
begin
  Self.StbShow.Panels[0].Text := '';
  Self.PRBShowPlan.Visible := FALSE;
  case Self.PagSele.TabIndex of
    0:
    begin
      Self.TrackBar1.Max := Self.PlayWave.WaveLength;
      Self.TrackBar1.Frequency := Self.TrackBar1.Max DIV 10;
      Self.PRBShowPlan.Position := 0;
      Self.SelData1 := -1;
      Self.SelData2 := -1;
      BitBlt(Self.CopyDrawBMP.Canvas.Handle, 0, 0, Self.PaintBox1.Width,
             Self.PaintBox1.Height, Self.DrawBMP.Canvas.Handle, 0, 0, SRCCOPY);
      Self.ShowWaveTime;
      Self.DrawRule;
      Self.DFBSaveAS.Enabled := Self.PlayWave.FileName <> '';
      Self.DFBWavePlay.Enabled := Self.PlayWave.WaveLength > 0;
      Self.SetCanEdit;
      if Self.Wave_Type = CS_SAVE_RECORD then
      begin
         Self.Wave_Type := CS_SAVE_PLAY;
         Self.WaveChange := TRUE;
      end;
    end;
    1: ;
    3:;
  end;
end;

procedure TEditMainForm.PaintBox1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  if (Self.PlayWave.NowPlay <> CPSTOPING) OR (NOT Self.isStopPlay) then
     Exit;
  if (X < 0) or (Self.PlayWave.IntToWaveLength(X) > LongInt(Self.PlayWave.WaveLength)) then
  begin
     if (X > Self.PaintBox1.Width) OR (X < 0) then
        Self.DrawSelClick := False;
     Exit;
  end;
  if NOT (ssLeft in Shift) then
  begin
     Self.DrawSelData(-1, -1, Self.PaintBox1, Self.CopyDrawBMP, Self.DrawBMP);
     Self.SelData1 := -1;
     Self.SelData2 := -1;
     Self.DrawSelClick := False;
     Self.SetCanEdit;
     Exit;
  end;

  Self.SelData1 := X;
  Self.SelData2 := X;
  Self.DrawSelClick := TRUE;
  Self.DrawSelData(Self.SelData1, Self.SelData2, Self.PaintBox1, Self.CopyDrawBMP, Self.DrawBMP);
  Self.SetCanEdit;
end;

procedure TEditMainForm.PaintBox1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  if (Self.PlayWave.NowPlay <> CPSTOPING) OR (NOT Self.isStopPlay) then
     Exit;
  if (X < 0) or (Self.PlayWave.IntToWaveLength(X) > LongInt(Self.PlayWave.WaveLength))
     or (NOT Self.DrawSelClick) then
  begin
     if (X > Self.PaintBox1.Width) OR (X < 0) then
        Self.DrawSelClick := False;
     Self.ShowWaveTime;
     Exit;
  end;
  Self.SelData2 := X;
  if Self.SelData1 < Self.SelData2 then
     Self.DrawSelData(Self.SelData1, Self.SelData2, Self.PaintBox1, Self.CopyDrawBMP, Self.DrawBMP)
  else
     Self.DrawSelData(Self.SelData2, Self.SelData1, Self.PaintBox1, Self.CopyDrawBMP, Self.DrawBMP);
  Self.SetCanEdit;
  Self.ShowWaveTime;
end;

procedure TEditMainForm.PaintBox1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  if (Self.PlayWave.NowPlay <> CPSTOPING) OR (NOT Self.isStopPlay) then
     Exit;
  if (X < 0) or (Self.PlayWave.IntToWaveLength(X) > LongInt(Self.PlayWave.WaveLength)) then
  begin
     Self.DrawSelClick := False;
     Self.ShowWaveTime;
     Exit;
  end;
  Self.DrawSelClick := False;
  Self.ShowWaveTime;
  Self.SetMax;
end;

procedure TEditMainForm.SetCanEdit;
begin
  Self.DFBCopy.Enabled := ABS(Self.SelData1 - Self.SelData2) > 0;
  Self.DFBCut.Enabled := Self.DFBCopy.Enabled;
  Self.DFBPast.Enabled := Self.PlayWave.CanPaste AND (Self.SelData1 > -1) AND (Self.SelData2 > -1);
  Self.DFBDel.Enabled := Self.DFBCopy.Enabled;
  Self.DFBUndo.Enabled := Self.PlayWave.CanUndo;
  Self.DFBSaveArea.Enabled := Self.DFBCopy.Enabled;
  Self.DFBPlaySreg.Enabled := Self.DFBCopy.Enabled;
  Self.DFBThisPlay.Enabled := Self.SelData1 > -1;
  if Self.SelData1 >= 0 then
     Self.FDBBookNew.Enabled := NOT Self.IsBookIn(Self.SelData1)
  else
     Self.FDBBookNew.Enabled := False;
end;

procedure TEditMainForm.DFBCopyClick(Sender: TObject);
var
  x1, x2: LongInt;
begin
  Self.SetMax;
  Self.EditSelect := TLMDSpeedButton(Sender).Tag;
  if Self.SelectALL then
  begin
     x1 := 0;
     x2 := Self.PlayWave.WaveLength;
  end
  else begin
     x1 := Self.PlayWave.IntToWaveLength(Self.SelData1);
     x2 := Self.PlayWave.IntToWaveLength(Self.SelData2 - Self.SelData1);
//     x3 := Self.PlayWave.IntToWaveLength(Self.SelData2 - Self.SelData1)
  end;
  case TLMDSpeedButton(Sender).Tag of
    1001:
    begin
       Self.PlayWave.Copy(x1, x2);
    end;
    1002:
    begin
       Self.PlayWave.Cut(x1, x2);
       Self.WaveChange := TRUE;
    end;
    1003:
    begin
       Self.PlayWave.Paste(x1, x2);
       Self.WaveChange := TRUE;
    end;
    1004:
    begin
       Self.PlayWave.Delete(x1, x2);
       Self.WaveChange := TRUE;
    end;
    1005:
    begin
       Self.PlayWave.Undo;
       Self.WaveChange := TRUE;
    end;
  end;
  Self.SetCanEdit;
  Self.SelectALL := False;
end;

procedure TEditMainForm.DFBRecordStartClick(Sender: TObject);
begin
  if Self.IsSave then
     Exit;
  Self.FileName := '';
  Self.SelData1 := -1;
  Self.SelData2 := -1;
  Self.Wave_Type := CS_SAVE_RECORD;
  Self.DFBWaveStop.Enabled := TRUE;
  Self.DFBWavePase.Enabled := TRUE;
  Self.DFBWavePase.Down := False;
  Self.DFBRecordStart.Enabled := False;
  Self.DFBRecordStart.Down := TRUE;
  Self.DFBWaveOpen.Enabled := FALSE;
  Self.SetButtonEnabled;
  Self.SetCanBookMarkGoto(False);
  Self.ClearBookMark;
  Self.RecordWave.Start;
end;

procedure TEditMainForm.EditBeginCopy(var Msg: TMessage);
begin
  if Self.EditSelect <> 1001 then
     Exit;
  Self.PRBShowPlan.Visible := TRUE;
  Self.StbShow.Panels[0].Text := '正在复制数据';
  Self.PRBShowPlan.Position := 0;
  Application.ProcessMessages;
end;

procedure TEditMainForm.EditBeginCut(var Msg: TMessage);
begin
  Self.PRBShowPlan.Visible := TRUE;
  Self.StbShow.Panels[0].Text := '正在剪切数据';
  Self.PRBShowPlan.Position := 0;
  Application.ProcessMessages;
end;

procedure TEditMainForm.EditBeginDel(var Msg: TMessage);
begin
  if Self.EditSelect <> 1004 then
     Exit;
  Self.PRBShowPlan.Visible := TRUE;
  Self.StbShow.Panels[0].Text := '正在删除数据';
  Self.PRBShowPlan.Position := 0;
  Application.ProcessMessages;
end;

procedure TEditMainForm.EditBeginPaste(var Msg: TMessage);
begin
  Self.PRBShowPlan.Visible := TRUE;
  Self.StbShow.Panels[0].Text := '正在粘贴数据';
  Self.PRBShowPlan.Position := 0;
  Application.ProcessMessages;
end;

procedure TEditMainForm.EditBeginUndo(var Msg: TMessage);
begin
  Self.PRBShowPlan.Visible := TRUE;
  Self.StbShow.Panels[0].Text := '正在还原数据';
  Self.PRBShowPlan.Position := 0;
  Application.ProcessMessages;
end;

procedure TEditMainForm.EditDataPoistion(var Msg: TMessage);
begin
  if Msg.WParam = 0 then
     Self.PRBShowPlan.Position := Self.PRBShowPlan.Position + Msg.LParam
  else
     Self.PRBShowPlan.Position := Msg.WParam;
  Application.ProcessMessages;
end;

procedure TEditMainForm.EditLengthData(var Msg: TMessage);
begin
  Self.PRBShowPlan.Max := Msg.WParam;
end;

procedure TEditMainForm.EditEnd(var Msg: TMessage);
begin
  Self.PRBShowPlan.Position := 0;
  Self.StbShow.Panels[0].Text := '';
  Self.PRBShowPlan.Visible := FALSE;
end;

procedure TEditMainForm.ShowWaveTime;
var
  t:  TCM_Wave_Time;
  Len: Integer;
begin
  if (Self.SelData1 < 0) OR (Self.SelData2 < 0) then
     Len := 0
  else
     Len := ABS(Self.SelData1 - Self.SelData2);
  Self.PlayWave.IntToWaveTime(Self.PlayWave.WaveLength, t);
  Self.FLEWaveLength.Text := '语音长度:' + Self.TimeToString(t);
  if Len = 0 then
     Self.FLESelectLength.Text := '选中长度:00:00:00.00'

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -