📄 edit.pas
字号:
else
begin
Self.PlayWave.IntToWaveTime(Self.PlayWave.IntToWaveLength(Len), t);
Self.FLESelectLength.Text := '选中长度:' + Self.TimeToString(t);
end;
if Self.SelData1 > 0 then
begin
Self.PlayWave.IntToWaveTime(Self.PlayWave.IntToWaveLength(Self.SelData1), t);
Self.FLEThisLeng.Text := '当前位置:' + Self.TimeToString(t);
end
else
Self.FLEThisLeng.Text := '当前位置:00:00:00.00';
Self.FLEMaxZF.Text := '最大振幅:' + IntToStr(Self.PlayWave.MaxVal);
Self.FLEZoom.Text := IntToStr(Integer(Self.PlayWave.WaveLength)
DIV 2 DIV Self.PaintBox1.Width + 1) + ':1';
end;
procedure TEditMainForm.DrawRule;
var
i, k: Integer;
Len, SLen: LongInt;
t: TCM_Wave_Time;
begin
Len := Self.PlayWave.WaveLength DIV 10;
k := Self.ImgDraw.Width DIV 10;
With Self.ImgDraw.Canvas do
begin
SLen := TextWidth('00:00:00') DIV 2;
MoveTo(1, 30);
LineTo(Self.ImgDraw.Width - 1, 30);
for i := 1 to 9 do
begin
MoveTo(i * k, 25);
LineTo(i * k, 40);
Self.PlayWave.IntToWaveTime(i * Len, t);
TextOut(i * k - SLen, 5, Self.TimeToString(t, ':', False));
end;
MoveTo(0, 25);
LineTo(0, 40);
MoveTo(10 * k - 1, 25);
LineTo(10 * k - 1, 40);
end;
end;
procedure TEditMainForm.DFBSaveASClick(Sender: TObject);
begin
if Self.SaveDialog1.Execute then
begin
case TLMDSpeedButton(Sender).Tag of
1010:
begin
Self.FileName := Self.SaveDialog1.FileName;
Self.PlayWave.Save(Self.FileName);
Self.WaveChange := False;
Self.PlayWave.SetWaveFile(Self.SaveDialog1.FileName);
end;
1011:
begin
Self.SetMax;
Self.PlayWave.Save(Self.SaveDialog1.FileName,
Self.PlayWave.IntToWaveLength(Self.SelData1),
Self.PlayWave.IntToWaveLength(ABS(Self.SelData2 -
Self.SelData1)));
end;
end;
end;
end;
procedure TEditMainForm.DFBSaveWaveClick(Sender: TObject);
begin
if Self.FileName = '' then
Self.DFBSaveASClick(Self.DFBSaveAS)
else begin
Self.PlayWave.Save(Self.FileName);
Self.WaveChange := FALSE;
end;
end;
procedure TEditMainForm.SetFileName(const Value: String);
begin
FFileName := Value;
if Value = '' then
Self.StbShow.Panels[1].Text := 'None.wav'
else
Self.StbShow.Panels[1].Text := Value;
end;
procedure TEditMainForm.SetWaveChange(const Value: Boolean);
begin
FWaveChange := Value;
Self.DFBSaveWave.Enabled := Value;
end;
procedure TEditMainForm.OpenDialog1CanClose(Sender: TObject;
var CanClose: Boolean);
begin
if NOT FileExists(TOpenDialog(Sender).FileName) then
begin
if TControl(Sender).Tag = 1020 then
begin
Application.MessageBox('文件不存在!', '文件错误', MB_OK + MB_ICONSTOP);
CanClose := False;
end;
end
else begin
if TControl(Sender).Tag = 1021 then
begin
CanClose := Application.MessageBox('文件已存在!是否覆盖?', '文件错误',
MB_OKCANCEL + MB_ICONWARNING) = idOk;
end;
end;
end;
procedure TEditMainForm.DFBWavePaseClick(Sender: TObject);
begin
// TLMDSpeedButton(Sender).Down := Not TLMDSpeedButton(Sender).Down;
case Self.Wave_Type of
CS_SAVE_PLAY:
if TLMDSpeedButton(Sender).Down then
Self.PlayWave.Pause
else
Self.PlayWave.Restart;
CS_SAVE_RECORD:
if TLMDSpeedButton(Sender).Down then
Self.RecordWave.Pause
else
Self.RecordWave.Restart;
end;
end;
procedure TEditMainForm.DFBWaveStopClick(Sender: TObject);
begin
case Self.Wave_Type of
CS_SAVE_PLAY:
begin
Self.PlayWave.Stop;
Self.DFBWavePlay.Enabled := Self.PlayWave.WaveLength > 0;
Self.DFBWavePlay.Down := FALSE;
end;
CS_SAVE_RECORD:
begin
Self.RecordWave.Stop;
end;
end;
Self.isStopPlay := True;
Self.Timer1.Enabled := FALSE;
Self.Timer3.Enabled := False;
Self.Timer3.Tag := 1;
Self.TrackBar1.Position := 0;
Self.DFBWaveStop.Enabled := FALSE;
Self.DFBWavePase.Down := FALSE;
Self.DFBWavePase.Enabled := FALSE;
Self.DFBRecordStart.Enabled := TRUE;
Self.DFBRecordStart.Down := FALSE;
Self.SetSpEnd(TRUE);
if Self.Wave_Type = CS_SAVE_PLAY then
Self.PaintBox1.Refresh;
Self.SetCanEdit;
Self.DFBSaveWave.Enabled := Self.WaveChange;
Self.DFBSaveAS.Enabled := Self.PlayWave.FileName <> '';
Self.DFBWaveOpen.Enabled := TRUE;
Self.DFBThisPlay.Down := FALSE;
Self.DFBPlaySreg.Down := FALSE;
Self.DFBBookClear.Enabled := Boolean(Self.DFBBookClear.Tag);
Self.FDBBookDEL.Enabled := Self.FDBBookDEL.Tag >= 0;
Self.Timer2.Enabled := False;
Self.LMDLEDLabel1.Caption := '';
Self.SetCanBookMarkGoto(TRUE);
Self.FLEPlayPoi.Text := '播放序号:0';
end;
procedure TEditMainForm.BeginSave(var Msg: TMessage);
begin
Self.PRBShowPlan.Visible := TRUE;
Self.PRBShowPlan.Max := Msg.WParam;
if Self.Wave_Type = CS_SAVE_RECORD then
Self.StbShow.Panels[0].Text := '正在转换数据'
else
Self.StbShow.Panels[0].Text := '正在保存';
end;
procedure TEditMainForm.EndSave(var Msg: TMessage);
begin
Self.StbShow.Panels[0].Text := '';
Self.PRBShowPlan.Visible := False;
Self.PRBShowPlan.Position := 0;
if Self.Wave_Type = CS_SAVE_RECORD then
Self.PlayWave.FileName := Self.RecordWave.WaveFileName;
end;
procedure TEditMainForm.SavePoi(var Msg: TMessage);
begin
Self.PRBShowPlan.Position := Msg.WParam;
Application.ProcessMessages;
end;
function TEditMainForm.IsSave: Boolean;
var
k: Integer;
Re: Boolean;
begin
Re := Self.WaveChange;
k := idNo;
if Self.WaveChange then
begin
k := Application.MessageBox('音频文件已经更改!是否保存?', '提示', MB_YESNOCANCEL + MB_ICONINFORMATION);
case k of
idYes: Self.DFBSaveWaveClick(Self.DFBSaveWave);
idNo: Re := FALSE;
end;
end;
if k <> idNO then
Re := Self.WaveChange;
Result := Re;
end;
procedure TEditMainForm.DFBWavePlayClick(Sender: TObject);
begin
TLMDSpeedButton(Sender).Down := TRUE;
Self.Wave_Type := CS_SAVE_PLAY;
Self.DFBRecordStart.Enabled := FALSE;
Self.DFBRecordStart.Down := FALSE;
Self.DFBWaveStop.Enabled := TRUE;
Self.DFBWavePase.Enabled := TRUE;
Self.DFBWavePase.Down := False;
Self.SetButtonEnabled;
Self.SetSpEnd(FALSE);
Self.SetCanBookMarkGoto(False);
Self.isStopPlay := False;
Self.DFBBookClear.Tag := Integer(Self.DFBBookClear.Enabled);
Self.DFBBookClear.Enabled := FALSE;
Self.FDBBookDEL.Enabled := FALSE;
Self.FDBBookNew.Enabled := (Self.Panel3.Tag = 1050);
Try
Self.PlayWaveStart(Sender);
Except;
Self.PlayWave.CloseWave;
Self.SetCanEdit;
Self.ShowWaveTime;
Self.DFBWaveStopClick(Self.DFBWavePlay);
Application.MessageBox('播放错误!', '播放错误', MB_OK + MB_ICONERROR);
Exit;
end;
end;
procedure TEditMainForm.SetButtonEnabled;
begin
Self.DFBCopy.Enabled := False;
Self.DFBCut.Enabled := False;
Self.DFBPast.Enabled := False;
Self.DFBDel.Enabled := False;
Self.DFBUndo.Enabled := False;
Self.DFBSaveWave.Enabled := False;
Self.DFBSaveAS.Enabled := False;
Self.DFBSaveArea.Enabled := False;
Self.DFBWaveOpen.Enabled := False;
Self.DFBThisPlay.Enabled := False;
Self.DFBPlaySreg.Enabled := False;
Self.DFBWavePlay.Enabled := False;
{
Self.DFBThisPlay.Down := False;
Self.DFBPlaySreg.Down := False;
Self.DFBWavePlay.Down := False;
}
end;
procedure TEditMainForm.EndPlayWave(var Msg: TMessage);
begin
case Self.PagSele.TabIndex of
0:
begin
BitBlt(Self.StopDrawBmp.Canvas.Handle, 0, 0, Self.PaintBox1.Width,
Self.PaintBox1.Height, Self.PaintBox1.Canvas.Handle, 0, 0, SRCCOPY);
if (Self.Panel3.Tag <> 1050) and (Not Self.isStopPlay) then
begin
Exit;
end;
Self.isStopPlay := True;
if Self.DFBPLayLOOP.Down then
begin
if Self.DFBWavePlay.Down then
Self.DFBWavePlayClick(Self.DFBWavePlay);
if Self.DFBThisPlay.Down then
Self.DFBWavePlayClick(Self.DFBThisPlay);
if Self.DFBPlaySreg.Down then
Self.DFBWavePlayClick(Self.DFBPlaySreg);
end
else
Self.DFBWaveStopClick(Self.DFBWaveStop);
end;
1:
begin
end;
2:;
3:;
end;
end;
procedure TEditMainForm.Timer1Timer(Sender: TObject);
begin
case Self.PagSele.TabIndex of
0: Self.TrackBar1.Position := Self.PlayWave.Position;
1:;
2:;
3:;
end;
Application.ProcessMessages;
end;
procedure TEditMainForm.BeginPlayWave(var Msg: TMessage);
begin
case Self.PagSele.TabIndex of
0:
begin
Self.Timer1.Enabled := TRUE;
Self.Timer2.Enabled := True;
Self.LMDLEDLabel1.Caption := 'S';
end;
1: Self.Timer1.Enabled := TRUE;
2:;
3:;
end;
end;
procedure TEditMainForm.LMDRadioButton1Click(Sender: TObject);
begin
TControl(TLMDRadioButton(Sender).Parent).Tag := TLMDRadioButton(Sender).Tag
end;
procedure TEditMainForm.Timer2Timer(Sender: TObject);
begin
Application.ProcessMessages;
if Self.LMDLEDLabel1.Caption = '' then
begin
if Self.Timer2.Tag = 0 then
Self.LMDLEDLabel1.Caption := 'S'
else
Self.LMDLEDLabel1.Caption := ' P';
end
else
Self.LMDLEDLabel1.Caption := '';
Application.ProcessMessages;
end;
procedure TEditMainForm.ClearBookMark;
var
i: Integer;
begin
for i := 0 to Self.BookLenght - 1 do
begin
if Self.BookMarkPoi[i] >= 0 then
Self.BookMarkImg[i].Free;
Self.BookMarkPoi[i] := -1;
end;
Self.BookLenght := 0;
end;
function TEditMainForm.AddBookMark(Poistion: Integer): Integer;
var
Re: TRect;
w, h, i: Integer;
St: String;
begin
Result := -1;
if Self.IsBookIn(Poistion) then
Exit;
i := Self.BookLenght;
for w := 0 to Self.BookLenght - 1 do
begin
if Self.BookMarkPoi[w] = -1 then
begin
i := w;
break;
end;
end;
if (i >= BookMarkMax) or (Poistion < 0) then
Exit;
Re := Rect(0, 0, Self.ImgBookMark.Width, Self.ImgBookMark.Height);
Self.BookLenght := Self.BookLenght + 1;
St := IntToStr(i + 1);
Self.BookMarkImg[i] := TImage.Create(Self);
Self.BookMarkPoi[i] := Poistion;
w := (Self.ImgBookMark.Width DIV 2) - (Self.ImgBookMark.Canvas.TextWidth(St) DIV 2) - 2;
h := (Self.ImgBookMark.Height DIV 2) - (Self.ImgBookMark.Canvas.TextHeight(St) DIV 2) + 1;
Self.BookMarkImg[i].Parent := Self.ImgBookMark.Parent;
Self.BookMarkImg[i].Tag := i;
Self.BookMarkImg[i].Width := Self.ImgBookMark.Width;
Self.BookMarkImg[i].Height := Self.ImgBookMark.Height;
Self.BookMarkImg[i].Canvas.CopyRect(Re, Self.ImgBookMark.Canvas, Re);
Self.BookMarkImg[i].Canvas.Brush.Style := bsClear;
Self.BookMarkImg[i].Canvas.TextOut(w, h, St);
Self.BookMarkImg[i].Top := Self.ImgBookMark.Top;
Self.BookMarkImg[i].OnClick := Self.ImgBookMark.OnClick;
if Poistion <= 12 then
Self.BookMarkImg[i].Left := 4
else
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -