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

📄 edit.pas

📁 语音与识别技术包含很多C语言处理模块系统
💻 PAS
📖 第 1 页 / 共 4 页
字号:
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 + -