📄 edit.pas
字号:
if Poistion >= (Self.PaintBox1.Width - 12) then
Self.BookMarkImg[i].Left := Self.PaintBox1.Width - 28
else
Self.BookMarkImg[i].Left := Poistion - 12;
Result := i;
end;
procedure TEditMainForm.FDBBookNewClick(Sender: TObject);
var
i: Integer;
begin
if Self.PlayWave.NowPlay <> CPPLAYING then
begin
Self.SetMax;
i := Self.AddBookMark(Self.SelData1);
Self.DFBBookClear.Enabled := TRUE;
Self.FDBBookNew.Enabled := False;
Self.ImgBookMarkClick(Self.BookMarkImg[i]);
end
else begin
i := Integer(Self.PlayWave.WaveLength) DIV 2 DIV Self.PaintBox1.Width + 1;
if i <= 0 then
i := 1;
i := LongInt(Self.PlayWave.Position) DIV i DIV 2;
Self.AddBookMark(i);
end;
Self.SetCanBookMarkGoto(Self.isStopPlay);
end;
procedure TEditMainForm.DFBBookClearClick(Sender: TObject);
begin
Self.ClearBookMark;
Self.DFBBookClear.Enabled := FALSE;
Self.FDBBookDEL.Enabled := FALSE;
Self.FDBBookDELClick(Self.FDBBookDEL);
Self.SetCanBookMarkGoto(False);
end;
procedure TEditMainForm.DelBookMark(Index: Integer);
var
i: Integer;
begin
if Self.BookMarkPoi[Index] >= 0 then
Self.BookMarkImg[Index].Free;
for i := Index to Self.BookLenght - 2 do
begin
Self.BookMarkImg[i] := Self.BookMarkImg[i + 1];
Self.BookMarkPoi[i] := Self.BookMarkPoi[i + 1];
end;
Self.BookMarkImg[Self.BookLenght - 1] := NIL;
Self.BookMarkPoi[Self.BookLenght - 1] := -1;
Self.BookMarkPoi[Index] := -1;
if Self.BookLenght > 0 then
Self.BookLenght := Self.BookLenght - 1;
end;
procedure TEditMainForm.ImgBookMarkClick(Sender: TObject);
var
t: TCM_Wave_Time;
begin
if (Self.PlayWave.NowPlay <> CPSTOPING) OR (NOT Self.isStopPlay) then
Exit;
Self.FDBBookDEL.Tag := TImage(Sender).Tag;
Self.FDBBookDEL.Enabled := True;
Self.SelData1 := Self.BookMarkPoi[TImage(Sender).Tag];
Self.SelData2 := Self.SelData1;
Self.DrawSelData(Self.SelData1, Self.SelData2, Self.PaintBox1, Self.CopyDrawBMP, Self.DrawBMP);
Self.FLEThisBookMark.Text := '当前书签:' + IntToStr(TImage(Sender).Tag + 1);
Self.PlayWave.IntToWaveTime(Self.PlayWave.IntToWaveLength(
Self.BookMarkPoi[TImage(Sender).Tag]), t);
Self.FLEBookTime.Text := '书签位置:' + Self.TimeToString(t);
Self.SetCanEdit;
end;
procedure TEditMainForm.FDBBookDELClick(Sender: TObject);
begin
Self.DelBookMark(Self.FDBBookDEL.Tag);
Self.FDBBookDEL.Tag := -1;
Self.FDBBookDEL.Enabled := False;
Self.FLEBookTime.Text := '书签位置:00:00:00.00';
Self.FLEThisBookMark.Text := '当前书签:0';
Self.SetCanBookMarkGoto(True);
end;
function TEditMainForm.IsBookIn(const Poistion: Integer): Boolean;
var
w: Integer;
begin
Result := False;
if Poistion < 0 then
Exit;
for w := 0 to Self.BookLenght - 1 do
begin
if Self.BookMarkPoi[w] = Poistion then
begin
Result := True;
Exit;
end;
end;
end;
procedure TEditMainForm.SetCanBookMarkGoto(Enb: Boolean);
var
i: Integer;
begin
for i := 0 to 4 do
Self.GotoBookMarkButton[i].Enabled := (Self.BookMarkPoi[i] >= 0)
AND Enb;
Self.DFBBookClear.Enabled := Enb AND (Self.BookLenght > 0);
end;
procedure TEditMainForm.DFBBookMark1Click(Sender: TObject);
begin
Self.SelData1 := Self.BookMarkPoi[TControl(Sender).Tag - 1060];
Self.SelData2 := Self.SelData1;
Self.DFBWavePlayClick(Self.DFBThisPlay);
Self.FLEPlayPoi.Text := '播放序号:' + IntToStr(TControl(Sender).Tag - 1060);
end;
procedure TEditMainForm.SetIndex(Start, EndStart: Integer);
var
i, j, k: integer;
begin
Self.doUser := 0;
for i := 0 to Self.BookLenght - 1 do
begin
if Self.BookMarkPoi[i] >= 0 then
begin
if (Self.BookMarkPoi[i] > Start) and (Self.BookMarkPoi[i] < EndStart) then
begin
Self.LoopUser[Self.doUser] := i;
Self.doUser := Self.doUser + 1;
end;
end;
end;
for i := 0 to Self.doUser - 2 do
begin
k := Self.BookMarkPoi[Self.LoopUser[i]];
for j := i + 1 to Self.doUser - 1 do
begin
if Self.BookMarkPoi[Self.LoopUser[j]] < Self.BookMarkPoi[Self.LoopUser[i]] then
begin
Self.BookMarkPoi[Self.LoopUser[i]] := Self.BookMarkPoi[Self.LoopUser[j]];
Self.BookMarkPoi[Self.LoopUser[j]] := k;
k := Self.BookMarkPoi[Self.LoopUser[i]];
end;
end;
end;
Self.doUser := Self.doUser + 2;
for i := Self.doUser - 2 Downto 0 do
Self.LoopUser[i + 1] := Self.LoopUser[i];
Self.LoopUser[0] := Start;
Self.LoopUser[Self.doUser - 1] := EndStart;
end;
procedure TEditMainForm.SetSpEnd(Enb: Boolean);
var
i: Integer;
begin
for i := 0 to Self.Panel3.ControlCount - 1 do
begin
if Self.Panel3.Controls[i] is TLMDRadioButton then
TLMDRadioButton(Self.Panel3.Controls[i]).Enabled := Enb;
end;
end;
procedure TEditMainForm.PlayWaveStart(Sender: TObject);
procedure PlaySpWave(Start, Length: LongInt);
var
i: Integer;
t: TCM_Wave_Time;
begin
Self.Timer3.Enabled := False;
Self.Timer3.Tag := 0;
Self.PlayWave.IntToWaveTime(Length, t);
Self.Timer3.Interval := (t.Hour * 3600 + t.Minute * 60 + t.Second) * 1000 + t.Heroism;
Self.isStopPlay := False;
for i := 0 to Self.SPLength - 1 do
begin
if Self.isStopPlay then
Exit;
if Boolean((Self.SPType SHR i) AND 1) then
begin
Self.Timer2.Tag := 0;
Self.PlayWave.Play(Start, Length);
end
else begin
Self.Timer3.Tag := 0;
Self.Timer2.Tag := 1;
Self.Timer3.Enabled := TRUE;
While Self.Timer3.Tag = 0 do
begin
if Self.isStopPlay then
Exit;
Application.ProcessMessages;
end;
end;
end;
end;
var
Start, Length: LongInt;
Sel1, Sel2: Integer;
i: Integer;
Falg: Integer;
begin
Self.SetMax;
Falg := Integer(Self.PlayWave.WaveLength) DIV 2 DIV Self.PaintBox1.Width + 1;
if Falg <= 0 then
Falg := 1;
Falg := LongInt(Self.PlayWave.WaveLength) DIV Falg DIV 2;
case TLMDSpeedButton(Sender).Tag of
1040: Self.SetIndex(0, Falg);
1041: Self.SetIndex(Self.SelData1, Falg);
1042: Self.SetIndex(Self.SelData1, Self.SelData2);
end;
case Self.Panel3.Tag of
1050:
begin
Start := 0;
Length := 0;
if (TLMDSpeedButton(Sender).Tag = 1041) OR (TLMDSpeedButton(Sender).Tag = 1042) then
begin
Start := Self.PlayWave.IntToWaveLength(Self.SelData1);
if TLMDSpeedButton(Sender).Tag = 1042 then
Length := Self.PlayWave.IntToWaveLength(ABS(Self.SelData2 - Self.SelData1));
end;
Self.Timer2.Tag := 0;
Self.PlayWave.Play(Start, Length);
end;
1051,//SP
1052,//SSP
1053,//SPS
1054://SPSP
begin
While True do
begin
for i := 0 to Self.doUser - 2 do
begin
if Self.isStopPlay then
Exit;
Self.FLEPlayPoi.Text := '播放序号:' + IntToStr(i + 1);
case Self.Panel3.Tag of
1051:
begin
Self.SPLength := 2;
Self.SPType := Type_SP;
end;
1052:
begin
Self.SPLength := 3;
Self.SPType := Type_SSP;
end;
1053, 1054:
begin
Self.SPLength := Self.Panel3.Tag - 1050;
Self.SPType := Type_SPS;
end;
end;
if i = 0 then
Sel1 := Self.LoopUser[0]
else
Sel1 := Self.BookMarkPoi[Self.LoopUser[i]];
if i = (Self.doUser - 2) then
Sel2 := Self.LoopUser[i + 1]
else begin
Sel2 := Self.BookMarkPoi[Self.LoopUser[i + 1]];
end;
PlaySpWave(Self.PlayWave.IntToWaveLength(Sel1), Self.PlayWave.IntToWaveLength(Sel2 - Sel1));
end;
if (Self.isStopPlay) or (NOT Self.DFBPLayLOOP.Down) then
begin
Self.DFBWaveStopClick(Self.DFBWavePlay);
Exit;
end;//end if
end;//end for
end;//end While
end;//end case
Self.DFBWaveStopClick(Self.DFBWavePlay);
end;
procedure TEditMainForm.Timer3Timer(Sender: TObject);
begin
Self.Timer3.Enabled := False;
Self.Timer3.Tag := 1;
end;
procedure TEditMainForm.PausePlayWave(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);
Self.Timer2.Enabled := False;
Self.LMDLEDLabel1.Caption := '';
end;
1:;
2:;
3:;
end;
end;
procedure TEditMainForm.RESTPlayWave(var Msg: TMessage);
begin
case Self.PagSele.TabIndex of
0:
begin
Self.Timer2.Enabled := TRUE;
if Self.Timer2.Tag = 0 then
Self.LMDLEDLabel1.Caption := 'S'
else
Self.LMDLEDLabel1.Caption := ' P';
end;
1:;
2:;
3:;
end;
end;
procedure TEditMainForm.SetHint;
var
i: Integer;
begin
for i := 0 to Self.TabSheet1.ControlCount - 1 do
begin
Self.TabSheet1.Controls[i].Hint := ReadString('Hint', Self.TabSheet1.Controls[i].Name);
if Self.TabSheet1.Controls[i].Hint <> '' then
Self.TabSheet1.Controls[i].ShowHint := TRUE;
end;
for i := 0 to Self.Panel3.ControlCount - 1 do
begin
Self.Panel3.Controls[i].Hint := ReadString('Hint', Self.Panel3.Controls[i].Name);
if Self.Panel3.Controls[i].Hint <> '' then
Self.Panel3.Controls[i].ShowHint := TRUE;
end;
end;
procedure TEditMainForm.DFBSetContClick(Sender: TObject);
var
SetVolSystem: TSetVolSystem;
begin
SetVolSystem := TSetVolSystem.Create(Self);
SetVolSystem.ShowModal;
Self.GetVolumeCtrl;
Self.GetVolume;
SetVolSystem.Free;
end;
procedure TEditMainForm.GetVolumeCtrl;
begin
end;
procedure TEditMainForm.ApplicationEvents1Exception(Sender: TObject;
E: Exception); //截取所有没有处理的异常
begin
Self.PlayWave.Stop;
Self.PlayWave.CloseWave;
Self.RecordWave.Stop;
Application.MessageBox(PChar(E.Message), '系统错误', MB_OK + MB_ICONSTOP);
Halt; //结束程序
end;
procedure TEditMainForm.RestoreRequest(var Msg: TMessage);
begin
if IsIconic(Application.Handle) = TRUE then
Application.Restore
else
Application.BringToFront;
end;
procedure TEditMainForm.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
Params.WinClassName := WaveSoundClass;
end;
procedure TEditMainForm.TrackBar2Change(Sender: TObject);
begin
Self.PlayWave.WavePlayKM := Self.TrackBar2.Position;
end;
procedure TEditMainForm.SpdMaxClick(Sender: TObject);
begin
if self.WindowState = wsMaximized then
self.WindowState := wsNormal
else
self.WindowState := wsMaximized;
end;
procedure TEditMainForm.FormResize(Sender: TObject);
begin
Self.SpdClose.Left := Self.PalTitle.Width - 2 - Self.SpdClose.Width;
Self.SpdMax.Left := Self.SpdClose.Left - 4 - Self.SpdMax.Width;
Self.SpdMin.Left := Self.SpdMax.Left - Self.SpdMin.Width;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -