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

📄 unit1.pas

📁 使用DELPHI实现文本文件显示和声音同步播放
💻 PAS
字号:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ExtCtrls, Db, DBTables, ComCtrls, MPlayer;

type
  TForm1 = class(TForm)
    MediaPlayer1: TMediaPlayer;
    RichEdit1: TRichEdit;
    RadioGroup1: TRadioGroup;
    Table1: TTable;
    Timer1: TTimer;
    procedure FormCreate(Sender: TObject);
    procedure RadioGroup1Click(Sender: TObject);
    procedure MediaPlayer1Click(Sender: TObject; Button: TMPBtnType;
      var DoDefault: Boolean);
    procedure Timer1Timer(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  isend:Boolean;
  CurrentButton:TMPBtnType;
  CurrentPlay,CurrentDisp:longint;
implementation

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);
begin
  Table1.TableName:='ex1.dbf';
  Table1.Open;
  MediaPlayer1.FileName:='ex1.wav';
  MediaPlayer1.Open;
  MediaPlayer1.TimeFormat:=tfMilliseconds;
  isend:=False;
  CurrentButton:=btStop;
  CurrentDisp:=1;
  CurrentPlay:=1;
end;

procedure TForm1.RadioGroup1Click(Sender: TObject);
begin
  MediaPlayer1.Close;
  Table1.Close;
  case radiogroup1.ItemIndex of
  0:begin MediaPlayer1.FileName:='ex1.wav';
	Table1.TableName:='ex1.dbf';
    end;
  1:begin MediaPlayer1.FileName:='ex2.wav';
   	Table1.TableName:='ex2.dbf';
    end;
  2:begin MediaPlayer1.FileName:='ex3.wav';
	Table1.TableName:='ex3.dbf';
    end;
  end;
  Table1.Open; MediaPlayer1.Open;
end;

procedure TForm1.MediaPlayer1Click(Sender: TObject; Button: TMPBtnType;
  var DoDefault: Boolean);
begin
  DoDefault:=False;
  with MediaPlayer1 do
  begin
  case  Button of
  btPlay : begin
  if isend=true then
  begin
  Table1.first;
  Position:=start;
  CurrentPlay:=1;
  CurrentDisp:=1;
  isend:=False;
  RichEdit1.lines.clear;
  RichEdit1.lines.add('演讲内容');
  end;
  CurrentButton:=btPlay;
  end;
  btStop :
  begin
  CurrentButton:=btStop;
  isend:=true;
  end;
  btpause:
  if CurrentButton=btPlay then
  CurrentButton:=btpause
  else if CurrentButton=btpause then
  CurrentButton:=btPlay;
  btPrev: begin  CurrentButton:=btPrev;
  Table1.Prior;
  Position:=Table1.fieldvalues
  ['STARTTIME'];
  CurrentButton:=btPlay;
  end;
  btBack:  begin  CurrentButton:=btBack;
  Table1.first;
  Position:=start;
  CurrentPlay:=1;
  CurrentDisp:=1;
  RichEdit1.lines.clear;
  RichEdit1.lines.add('演讲内容');
  CurrentButton:=btPlay;
  end;
  btNext: begin  CurrentButton:=btNext;
  Table1.Next;
  Position:=Table1.fieldvalues['STARTTIME'];
  CurrentButton:=btPlay;
  end;
  end;
  case  CurrentButton of
  btPlay: Play;
  btpause:pause;
  btStop:Stop;
  end;
  end;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  with MediaPlayer1 do
  begin
  if CurrentButton=btPlay  then
  begin
  if  not Table1.eof and (Position>Table1.FieldValues['STARTTIME']) then
  begin  CurrentPlay:=Table1.recno;
  if CurrentPlay >=CurrentDisp then
  begin
  RichEdit1.Lines.add(Table1.fieldvalues['TEXT']);
  CurrentDisp:=CurrentDisp+1;
  end;
  Table1.Next;
  end;
  if Table1.eof then
  begin
  CurrentButton:=btStop;
  isend:=true;
  end;
  end;
  end;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -