📄 edit.~pas
字号:
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 + -