📄 edit.pas
字号:
unit Edit;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, Buttons, ComCtrls, PublicType, Tabs, StdCtrls,
TRecordWaveUnit, TCMWaveType, TPlayWaveUnit, LMDFormTabControl,
LMDCustomControl, LMDCustomPanel, LMDCustomBevelPanel,
LMDCustomComponent, LMDCustomHint, LMDCustomShapeHint, LMDShapeHint,
LMDWndProcComponent, LMDFormShadow, LMDControl, LMDBaseControl,
LMDBaseGraphicButton, LMDCustom3DButton, LMD3DEffectButton,
LMDCustomStatusBar, LMDStatusBar, TFlatCheckBoxUnit,
LMDCustomParentPanel, LMDCustomGroupBox, LMDCustomButtonGroup,
LMDCustomRadioGroup, LMDRadioGroup, TFlatRadioButtonUnit,
TFlatComboBoxUnit, LMDCustomPanelFill, LMDPanelFill, LMDCustomTrackBar,
LMDTrackBar, LMDBaseGraphicControl, LMDBaseShape, LMDShapeControl,
LMDSimplePanel, TFlatEditUnit, LMDButtonControl,
LMDCustomCheckBox, LMDCheckBox, ImgList, LMDRadioButton, LMDBaseLabel,
LMDCustomSimpleLabel, LMDSimpleLabel, Menus, lmdcont, AMixer,
LMDGraphicControl, LMDLEDCustomLabel, LMDLEDLabel, LMDStarter,
LMDCustomSpeedButton, LMDSpeedButton, LMDCustomButton, LMDButton,
FileCtrl, LMDCustomCheckGroup, LMDCheckGroup, AppEvnts,
Grids, TeEngine, Series, TeeProcs, Chart, Spin, LMDBaseController,
LMDCustomContainer, LMDCustomImageList, LMDBitmapList;
type
TEditMainForm = class(TForm)
PalTitle: TPanel;
imgTitle: TImage;
SpdMin: TSpeedButton;
SpdMax: TSpeedButton;
SpdClose: TSpeedButton;
Image1: TImage;
StbShow: TStatusBar;
LMDSpHShowHint: TLMDShapeHint;
ImageList1: TImageList;
ImageList2: TImageList;
AdmSetVolume: TAudioMixer;
OpenDialog1: TOpenDialog;
SaveDialog1: TSaveDialog;
PRBShowPlan: TProgressBar;
Timer1: TTimer;
Timer2: TTimer;
Timer3: TTimer;
LMDBitmapList1: TLMDBitmapList;
ApplicationEvents1: TApplicationEvents;
PagSele: TPageControl;
TabSheet1: TTabSheet;
LMDShapeControl1: TLMDShapeControl;
LMDShapeControl2: TLMDShapeControl;
LMDShapeControl6: TLMDShapeControl;
LMDShapeControl4: TLMDShapeControl;
LMDShapeControl7: TLMDShapeControl;
LMDShapeControl10: TLMDShapeControl;
DFBCopy: TLMDSpeedButton;
DFBCut: TLMDSpeedButton;
DFBPast: TLMDSpeedButton;
DFBDel: TLMDSpeedButton;
DFBUndo: TLMDSpeedButton;
DFBWaveOpen: TLMDSpeedButton;
DFBSaveWave: TLMDSpeedButton;
DFBSaveAS: TLMDSpeedButton;
DFBSaveArea: TLMDSpeedButton;
DFBPLayLOOP: TLMDSpeedButton;
DFBWaveStop: TLMDSpeedButton;
DFBWavePase: TLMDSpeedButton;
DFBPlaySreg: TLMDSpeedButton;
DFBThisPlay: TLMDSpeedButton;
DFBRecordStart: TLMDSpeedButton;
DFBBookMark5: TLMDSpeedButton;
DFBBookMark4: TLMDSpeedButton;
DFBBookMark3: TLMDSpeedButton;
DFBBookMark2: TLMDSpeedButton;
DFBBookMark1: TLMDSpeedButton;
DFBBookClear: TLMDSpeedButton;
FDBBookNew: TLMDSpeedButton;
FDBBookDEL: TLMDSpeedButton;
DFBWavePlay: TLMDSpeedButton;
DFBSetCont: TLMDSpeedButton;
LMDSimplePanel1: TLMDSimplePanel;
ImgDraw: TImage;
PaintBox1: TPaintBox;
ImgBookMark: TImage;
Panel2: TPanel;
FLEZoom: TFlatEdit;
FLEWaveLength: TFlatEdit;
FLESelectLength: TFlatEdit;
FLEThisLeng: TFlatEdit;
FLEMaxZF: TFlatEdit;
Panel1: TPanel;
FLEThisBookMark: TFlatEdit;
FLEPlayPoi: TFlatEdit;
FLEBookTime: TFlatEdit;
Panel3: TPanel;
LMDRadioButton1: TLMDRadioButton;
LMDRadioButton2: TLMDRadioButton;
LMDRadioButton3: TLMDRadioButton;
LMDRadioButton4: TLMDRadioButton;
LMDRadioButton5: TLMDRadioButton;
TrackBar1: TTrackBar;
Panel4: TPanel;
LMDLEDLabel1: TLMDLEDLabel;
PanExit: TPanel;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
LMDShapeControl8: TLMDShapeControl;
ResourceTabSheet2: TTabSheet;
TrackBar2: TTrackBar;
Shape1: TShape;
Shape2: TShape;
ListView1: TListView;
Panel5: TPanel;
LMD3DEffectButton1: TLMD3DEffectButton;
procedure imgTitleMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure FormShow(Sender: TObject);
procedure SpdCloseClick(Sender: TObject);
procedure SpdMinClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure AdmSetVolumeControlChange(Sender: TObject; MixerH,
ID: Integer);
procedure DFBWaveOpenClick(Sender: TObject);
procedure PaintBox1Paint(Sender: TObject);
procedure PaintBox1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure PaintBox1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure PaintBox1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure DFBCopyClick(Sender: TObject);
procedure DFBRecordStartClick(Sender: TObject);
procedure DFBSaveASClick(Sender: TObject);
procedure DFBSaveWaveClick(Sender: TObject);
procedure OpenDialog1CanClose(Sender: TObject; var CanClose: Boolean);
procedure DFBWavePaseClick(Sender: TObject);
procedure DFBWaveStopClick(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure DFBWavePlayClick(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure LMDRadioButton1Click(Sender: TObject);
procedure Timer2Timer(Sender: TObject);
procedure FDBBookNewClick(Sender: TObject);
procedure DFBBookClearClick(Sender: TObject);
procedure ImgBookMarkClick(Sender: TObject);
procedure FDBBookDELClick(Sender: TObject);
procedure DFBBookMark1Click(Sender: TObject);
procedure Timer3Timer(Sender: TObject);
procedure DFBSetContClick(Sender: TObject);
procedure ApplicationEvents1Exception(Sender: TObject; E: Exception);
procedure TrackBar2Change(Sender: TObject);
procedure SpdMaxClick(Sender: TObject);
procedure FormResize(Sender: TObject);
private
FFileName: String;
FWaveChange: Boolean;
SelectALL: Boolean;
procedure SetFileName(const Value: String);
procedure SetWaveChange(const Value: Boolean);
private
{ Private declarations }
DrawBMP, CopyDrawBMP: TBitMap;
StopDrawBmp: TBitMap;
SelData1, SelData2: Integer;
DrawSelClick: Boolean;
PlayWave: TCMPlayWave;
TempDir: array[0..255] of Char;
RecordWave: TCMRecordWave;
GetVolumeTag: Integer;
EditSelect: Integer;
Wave_Type: TSave_Type;
isStopPlay: Boolean;
doUser: Integer;
BookLenght: Integer;
SPType: Byte;
SPLength: Byte;
SetVolume: Array[0..2] of TTrackBar;
LoopUser: Array[0..BookMarkMax + 1] of Integer;
GotoBookMarkButton: Array[0..4] of TLMDSpeedButton;
SetNoneVol: Array[0..2] of TLMDCheckBox;
BookMarkImg: Array[0..BookMarkMax - 1] of TImage;
BookMarkPoi: Array[0..BookMarkMax - 1] of Integer;
procedure ClearBookMark;
procedure SetIndex(Start, EndStart: Integer);
function AddBookMark(Poistion: Integer): Integer;
procedure DelBookMark(Index: Integer);
procedure SetTextSize;
procedure SetCaption;
procedure GetVolume;
procedure GetVolumeCtrl;
procedure PlayWaveStart(Sender: TObject);
procedure ShowWaveTime;
procedure DrawRule;
procedure SetSpEnd(Enb: Boolean);
procedure SetCanBookMarkGoto(Enb: Boolean);
function IsSave: Boolean;
function IsBookIn(const Poistion: Integer): Boolean;
procedure SetCanEdit;
procedure SetButtonEnabled;
procedure SetMax;
procedure SetHint;
function TimeToString(const Time: TCM_Wave_Time; RestChar: String = ':';
ShowHer: Boolean = TRUE): String;
procedure BeginDraw(var Msg: TMessage); Message CM_BEGINDRAW;
procedure DrawPoistion(var Msg: TMessage); Message CM_DRAWPOSI;
procedure EndDraw(var Msg: TMessage); Message CM_ENDDRAW;
procedure BeginSave(var Msg: TMessage); Message CM_BEGINSAVE;
procedure SavePoi(var Msg: TMessage); Message CM_SAVEPOSI;
procedure EndSave(var Msg: TMessage); Message CM_ENDSAVE;
procedure EditBeginCopy(var Msg: TMessage); Message CM_BEGINCOPY;
procedure EditBeginCut(var Msg: TMessage); Message CM_BEGINCUT;
procedure EditBeginDel(var Msg: TMessage); Message CM_BEGINDEL;
procedure EditBeginUndo(var Msg: TMessage); Message CM_BEGINUNDO;
procedure EditBeginPaste(var Msg: TMessage); Message CM_BEGINPASTE;
procedure EditLengthData(var Msg: TMessage); Message CM_EDITLENGTH;
procedure EditDataPoistion(var Msg: TMessage); Message CM_EDITPOI;
procedure EditEnd(var Msg: TMessage); Message CM_EDIEND;
procedure BeginPlayWave(var Msg: TMessage); Message CM_PLAYBEGIN;
procedure EndPlayWave(var Msg: TMessage); Message CM_PLAYEND;
procedure PausePlayWave(var Msg: TMessage); Message CM_PLAYPAUSE;
procedure RESTPlayWave(var Msg: TMessage); Message CM_PLAYREST;
procedure RestoreRequest(var Msg: TMessage); Message WM_CM_RESTORE;
procedure DrawSelData(const Sel1, Sel2: Integer; PaintBox: TPaintBox;
BitMap, DesBitMap: TBitMap);
property WaveChange: Boolean read FWaveChange write SetWaveChange;
property FileName: String read FFileName write SetFileName;
public
{ Public declarations }
procedure CreateParams(var Params: TCreateParams); override;
end;
var
EditMainForm: TEditMainForm;
implementation
uses SetVolSys;
{$R *.dfm}
procedure TEditMainForm.imgTitleMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
MouseDownMoveForm(Self.Handle);
end;
procedure TEditMainForm.FormShow(Sender: TObject);
begin
HideTitlebar(Self);
if Length(Self.Caption) > 0 then
begin
Self.imgTitle.Canvas.Brush.Style := bsClear;
Self.imgTitle.Canvas.Font.Color := $000000;
Self.imgTitle.Canvas.TextOut(35, 5, Self.Caption);
Self.imgTitle.Canvas.Font.Color := $FFFFFF;
Self.imgTitle.Canvas.TextOut(33, 3, Self.Caption);
end;
Self.DrawRule;
end;
procedure TEditMainForm.SetMax;
var
i: Integer;
begin
if Self.PagSele.TabIndex = 0 then
begin
if Self.SelData1 > Self.SelData2 then
begin
i := Self.SelData1;
Self.SelData1 := Self.SelData2;
Self.SelData2 := i;
end;
end;
end;
procedure TEditMainForm.SpdCloseClick(Sender: TObject);
begin
Self.PlayWave.Stop;
Self.PlayWave.CloseWave;
Self.RecordWave.Stop;
Self.Close;
end;
procedure TEditMainForm.SpdMinClick(Sender: TObject);
begin
Application.Minimize;
end;
procedure TEditMainForm.SetTextSize;
Procedure SetEditButtonSize;
var
i: Integer;
begin
for i := 0 to Self.TabSheet1.ControlCount - 1 do
if Self.TabSheet1.Controls[i] is TLMDSpeedButton then
TLMDSpeedButton(Self.TabSheet1.Controls[i]).Font.Size := 10;
end;
begin
case GetWinVersion of
WIN_32_S:
begin
Self.imgTitle.Canvas.Font.Size := 15;
Self.PagSele.Font.Size := 12;
Self.LMDSpHShowHint.Font.Size := 12;
SetEditButtonSize;
end;
WIN_95:
begin
Self.imgTitle.Canvas.Font.Size := 15;
Self.PagSele.Font.Size := 12;
Self.LMDSpHShowHint.Font.Size := 12;
SetEditButtonSize;
//…
end;
WIN_NT:
begin
Self.imgTitle.Canvas.Font.Size := 12;
Self.PagSele.Font.Size := 12;
end;
end;//end GetWinVersion
end;
procedure TEditMainForm.FormCreate(Sender: TObject);
var
i: Integer;
begin
if Self.AdmSetVolume.MixerCount <= 0 then
begin
Application.MessageBox('找不到音频设备!', '系统错误', MB_OK + MB_ICONSTOP);
Halt;
end;
ApplicationPath := ExtractFilePath(Application.ExeName);
Self.Caption:= ReadString('Application', 'Title');
Application.Title := Self.Caption;
Self.GotoBookMarkButton[0] := Self.DFBBookMark1;
Self.GotoBookMarkButton[1] := Self.DFBBookMark2;
Self.GotoBookMarkButton[2] := Self.DFBBookMark3;
Self.GotoBookMarkButton[3] := Self.DFBBookMark4;
Self.GotoBookMarkButton[4] := Self.DFBBookMark5;
Self.GetVolume;
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;
Self.DrawBMP := TBitMap.Create;
Self.PlayWave := TCMPlayWave.Create;
Self.RecordWave := TCMRecordWave.Create;
Self.CopyDrawBMP := TBitMap.Create;
Self.StopDrawBmp := TBitMap.Create;
Self.PlayWave.ShowDrawWave := TRUE;
GetTempPath(255, @Self.TempDir);
Self.PlayWave.DesBMP := Self.DrawBMP;
Self.PlayWave.DrawWave := Self.PaintBox1;
Self.PlayWave.ShowMessageParBar := Self.PRBShowPlan;
Self.RecordWave.DesBMP := Self.DrawBMP;
Self.RecordWave.DrawWave := Self.PaintBox1;
Self.StopDrawBmp.Width := Self.PaintBox1.Width;
Self.StopDrawBmp.Height := Self.PaintBox1.Height;
Self.CopyDrawBMP.Width := Self.PaintBox1.Width;
Self.CopyDrawBMP.Height := Self.PaintBox1.Height;
Self.RecordWave.DesBMP := Self.DrawBMP;
Self.BookLenght := 0;
Self.doUser := 0;
Self.SPType := 0;
Self.SPLength := 0;
Self.SelData1 := -1;
Self.SelData2 := -1;
Self.DrawSelClick := False;
Self.FileName := '';
Self.WaveChange := False;
Self.isStopPlay := TRUE;
Self.SelectALL := FALSE;
Self.Wave_Type := CS_SAVE_PLAY;
for i := 0 to BookMarkMax - 1 do
Self.BookMarkPoi[i] := -1;
Self.SetTextSize;
Self.SetCaption;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -