亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? lyric.pas.~84~

?? delphi2007寫的播放器源碼。效果類似于千千靜聽。
?? ~84~
字號:
unit Lyric;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls,ComFunction,ComVariable;

type
  TForm3 = class(TForm)
    Timer1: TTimer;
    PaintBox1: TPaintBox;
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure PaintBox1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure Timer1Timer(Sender: TObject);
    procedure PaintBox1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
  private
    { Private declarations }
    procedure LoadLyric;
    procedure Format(str:String);
    procedure ChangeSize;
    procedure Draw(Y:integer;C:TColor;txt:string);
  public
    { Public declarations }
    procedure FindLyric(Name: string;Titles:String);
  end;

var
  Form3: TForm3;
  LineIndex:integer; //正在進行的行索引
  LyricList:TStringList;//歌詞列表
  TimeList:TStringList; //時間列表
  FSize:integer; //字體大小
  IsEns:Boolean;//是否有歌詞

implementation

{$R *.dfm}

procedure TForm3.ChangeSize;
begin
  paintbox1.Top:=0;
  paintbox1.Left:=0;
  paintbox1.Width:=FSize*34;
  paintbox1.Height:=FSize*5;
  form3.Top:=10;
  form3.Left:=trunc((screen.Width-paintbox1.Width)/2);
  form3.Width:=paintbox1.Width;
  form3.Height:=paintbox1.Height;
end;
procedure TForm3.Draw(Y:integer;C:TColor;txt:string);
var
  W:integer;
begin
    paintbox1.Canvas.Font.Size:=FSize;
    paintbox1.Canvas.Font.Color:=C;
    W:=paintbox1.Canvas.TextWidth(txt);
    W:=trunc((paintbox1.Width-W)/2);
    paintbox1.Canvas.TextOut(W,Y,txt);
end;

procedure TForm3.FindLyric(Name: string;Titles:String);
var
  Temp:string;
begin
    LyricName:='';
    LyRicList.Clear;
    TimeList.Clear;

    temp:=copy(Name,(LastDelimiter('\',Name))+1,length(Name));
    temp:=Copy(temp,1,Length(temp)-4);
    MakeFileList(Path+'LRC\','.lrc',temp,true);
    if LyricName='' then
      MakeFileList(Path+'LRC\','.lrc',Titles,true);
    
    if LyricName<>'' then
    begin
      LoadLyric;
      LineIndex:=0;
      Timer1.Enabled:=true;
      IsEns:=true;
      paintbox1.Canvas.FillRect(paintbox1.ClientRect);
      //dll窗體設置為最前SetWindowPos
      //SetForegroundWindow(form3.Handle);
      //BringWindowToTop(form3.Handle);
    end
    else
    begin
      Timer1.Enabled:=false;
      IsEns:=False;
    end;
end;

procedure TForm3.FormDestroy(Sender: TObject);
begin
  TimeList.Free;
  LyricList.Free;
end;

procedure TForm3.PaintBox1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  if Shift = [ssLeft] then
  begin
    ReleaseCapture;
    Perform(WM_SYSCOMMAND, $f012, 0);
  end;
end;

procedure TForm3.PaintBox1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  if Shift = [ssLeft] then
  begin
    ReleaseCapture;
    Perform(WM_SYSCOMMAND, $f012, 0);
  end;
end;

function RoundEx (const Value: Real): integer;
var
  x: Real;
begin
  x := Value - Trunc(Value);
  if x >= 0.5 then
    Result := Trunc(Value) + 1
  else Result := Trunc(Value);
end;

//前進
procedure Rev;
label
  Advance;
begin

Advance:
    if RoundEx(NowTime)>RoundEx(strtofloat(TimeList[LineIndex])) then
    begin
      if (LineIndex+1)<=TimeList.Count-1 then
      begin
        LineIndex:=LineIndex+1;
        goto Advance;
      end;
    end;
end;
//倒退
procedure Adv;
label
  Reverse;
begin

Reverse:
  if LineIndex<=0 then Exit;
  if RoundEx(NowTime)<RoundEx(strtofloat(TimeList[LineIndex-1])) then
  begin
    if (LineIndex-1)>=0 then
    begin
      LineIndex:=LineIndex-1;
      goto Reverse;
    end;
  end;
end;
procedure TForm3.Timer1Timer(Sender: TObject);
begin
  if not isPlay then Exit;
  if not IsEns then Exit;
  if (LineIndex<=TimeList.Count-1) then
  begin
    Rev;
    Adv;

    if RoundEx(NowTime)=RoundEx(strtofloat(TimeList[LineIndex])) then
    begin
       paintbox1.Canvas.FillRect(paintbox1.ClientRect);
       Draw(12,$0000FF,LyricList[LineIndex]);
       LineIndex:=LineIndex+1;
    end;
    if (LineIndex<=TimeList.Count-1) then
      Draw(FSize*2,$00FF00,LyricList[LineIndex])
      else
      Draw(FSize*2,$00FF00,'')
  end;


  if (LineIndex>TimeList.Count-1) then
  begin
    timer1.Enabled:=false;
    Exit;
  end;
end;

procedure TForm3.LoadLyric;
var
  lsttemp:TStringList;
  strTemp:string;
  I,J:integer;
begin
  if not FileExists(LyricName) then Exit;

  lstTemp:=TStringList.Create;
  lsttemp.LoadFromFile(LyricName);
  for I := 0 to lsttemp.Count - 1 do
  begin
    if lstTemp[I]='' then Break;

    if (Pos('[0',lstTemp[I])>0) then
    begin
      Format(lstTemp[I]);
    end;
  end;

  //排序
  for I := 0 to TimeList.Count - 1 do
  begin
    for J := 0 to TimeList.Count - 1 do
    begin
       if strtofloat(TimeList[J]) > strtofloat(TimeList[I]) then
      begin
        strTemp:=TimeList[I];TimeList[I]:=TimeList[J];TimeList[J]:=strTemp;
        strTemp:=LyricList[I];LyricList[I]:=LyricList[J];LyricList[J]:=strTemp;
      end;
    end;
  end;
  lstTemp.Free;
end;

procedure TForm3.FormCreate(Sender: TObject);
begin
  FSize:=16;
  ChangeSize;
  IsEns:=False;
  form3.Show ;
  //窗口強制刷新
  //UpdateWindow(form3.Handle);
  //設置窗口位置
  SetWindowPos(form3.Handle, HWND_TOPMOST, self.Left,
      self.Top, self.Width, self.Height,0);// SWP_NOMOVE Or SWP_NOSIZE);

  TimeList:=TStringList.Create;
  LyricList:=TStringList.Create;
end;

function LastPos(const subStr, s:string):integer;
  var
    iPos:Integer;
    strTmp:Widestring;
  begin
    Result:=0;
    strTmp:=s;
    iPos:=Pos(SubStr,strTmp);
    while iPos<>0 do
    begin
      //刪除已經查找過的字符
      Delete(strTmp,1,iPos+Length(SubStr)-1);
      Result:=Result+iPos;
      iPos:=Pos(SubStr,strTmp);
      if iPos=0 then Break;
      Result:=Result+Length(SubStr)-1;
    end;
  end;

function StrToNumber(s:string):String;
var
Temp:double;
begin
  temp:=strtofloat(Copy(s,1,Pos(':',s)-1))*60.0;
  temp:=temp+strtofloat(Copy(s,Pos(':',s)+1,Pos('.',s)-1));
  Result:=floattostr(temp);
end;

procedure TForm3.Format(str: string);
begin
  TimeList.Add(StrToNumber(Copy(str,Pos('[',str)+1,Pos(']',str)-1)));
  LyricList.Add(Copy(str,LastPos(']',str)+1,Length(str)));

  str:=Copy(str,Pos(']',str)+1,Length(str));

  if (Pos('[',str)>0) then
    Format(str);
end;

end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久99蜜桃精品| 久久一日本道色综合| 日韩欧美国产综合在线一区二区三区| 欧美精品一区二| 婷婷一区二区三区| 99久久国产综合精品女不卡| 26uuu另类欧美亚洲曰本| 一区二区三区在线视频观看| 国产成人av电影免费在线观看| 欧美日本国产一区| 亚洲永久精品大片| 99麻豆久久久国产精品免费优播| 欧美一区二区三区爱爱| 亚洲成人久久影院| 在线欧美日韩国产| 亚洲欧美激情一区二区| 成人动漫一区二区| 国产精品久久看| 国产成人高清视频| 久久嫩草精品久久久久| 久久精品av麻豆的观看方式| 911精品国产一区二区在线| 亚洲成a人片在线观看中文| 在线这里只有精品| 亚洲国产综合在线| 欧美日韩国产123区| 亚洲成人在线网站| 91精品在线观看入口| 日韩精彩视频在线观看| 6080yy午夜一二三区久久| 午夜国产精品影院在线观看| 67194成人在线观看| 男女男精品视频| 欧美mv日韩mv国产| 狠狠色丁香婷综合久久| 久久蜜桃av一区精品变态类天堂| 激情欧美一区二区三区在线观看| 日韩欧美综合一区| 国产精品性做久久久久久| 欧美韩国一区二区| 色偷偷88欧美精品久久久| 亚洲自拍与偷拍| 91精品国产乱| 韩国v欧美v亚洲v日本v| 国产精品午夜在线| 色悠久久久久综合欧美99| 亚洲二区在线观看| 亚洲精品一区二区三区99| 国产乱码精品一区二区三区忘忧草| 久久精品男人天堂av| 91麻豆国产福利精品| 日韩精品电影在线| 久久精品视频网| 色视频成人在线观看免| 丝袜亚洲精品中文字幕一区| 欧美xfplay| 91美女视频网站| 日韩综合小视频| 中文字幕第一区二区| 欧美视频在线观看一区| 美女视频黄 久久| 国产精品网站在线| 欧美色图一区二区三区| 精品一区二区三区影院在线午夜| 中文字幕一区二区三区不卡在线| 欧美麻豆精品久久久久久| 国产福利一区二区三区视频 | 国产精品免费aⅴ片在线观看| 99精品在线观看视频| 蜜臀久久久久久久| 国产精品久久久久国产精品日日| 欧美日韩精品免费| 成人小视频免费观看| 日韩中文字幕麻豆| 自拍偷自拍亚洲精品播放| 日韩欧美一二三四区| 色婷婷久久99综合精品jk白丝| 免费成人小视频| 亚洲一区二区三区视频在线 | 国产ts人妖一区二区| 香蕉久久夜色精品国产使用方法 | 99久久精品免费| 中文字幕免费不卡在线| 蜜臀va亚洲va欧美va天堂| 亚洲视频一二区| 久久精品一区二区三区四区| 5月丁香婷婷综合| 91麻豆精品一区二区三区| 国产成人免费视频网站高清观看视频| 五月天亚洲婷婷| 亚洲免费观看高清完整版在线观看| 久久伊人中文字幕| 91精品国产一区二区三区香蕉| 99天天综合性| 国产·精品毛片| 国产一区二区三区在线观看免费| 午夜不卡av在线| 亚洲一区二区3| 亚洲欧美一区二区三区孕妇| 欧美激情一区三区| 国产喷白浆一区二区三区| 精品国产乱码久久久久久老虎| 欧美日韩高清一区| 欧美视频精品在线| 在线观看免费一区| 日本韩国一区二区三区| 一本大道久久a久久综合| 成人av在线资源网站| 福利一区二区在线| 成人免费视频视频在线观看免费| 国产高清不卡一区| 成人免费高清视频| 国产成人啪免费观看软件| 麻豆免费精品视频| 国产自产高清不卡| 国产精品66部| 国产一区二区在线观看免费| 日本欧美一区二区三区乱码| 国产精品乱人伦| 久久久久久亚洲综合| 亚洲精品一区二区三区蜜桃下载| 337p亚洲精品色噜噜噜| 欧美巨大另类极品videosbest| 欧美猛男超大videosgay| 亚洲欧美偷拍卡通变态| 91蝌蚪porny成人天涯| 成人av在线电影| 91免费小视频| 欧美伊人久久久久久久久影院| 欧美性猛交xxxxxx富婆| 在线成人av网站| 精品国产区一区| 国产精品少妇自拍| 夜色激情一区二区| 日韩精品欧美成人高清一区二区| 精品综合久久久久久8888| 国产精品456露脸| 色婷婷精品久久二区二区蜜臀av| 在线播放中文字幕一区| 国产亚洲一区二区三区在线观看| 亚洲人快播电影网| 婷婷综合另类小说色区| 国产精品99久久久| 欧美在线视频你懂得| 精品久久久久久久一区二区蜜臀| 国产精品色噜噜| 日本特黄久久久高潮| 成人精品免费视频| 欧美日本在线看| 国产精品私人影院| 日日摸夜夜添夜夜添亚洲女人| 国产精品一品视频| 不卡一区二区在线| 欧美日韩五月天| 亚洲国产精品ⅴa在线观看| 亚洲免费在线观看视频| 奇米影视一区二区三区小说| 一区二区在线观看av| 男女性色大片免费观看一区二区| 国产乱子伦一区二区三区国色天香| 国产成人在线免费| 在线观看视频一区二区| 精品欧美一区二区三区精品久久| 亚洲天堂久久久久久久| 精品亚洲成a人| 欧美色图激情小说| 亚洲日本韩国一区| 国产剧情av麻豆香蕉精品| 91麻豆精品国产自产在线观看一区| 中文字幕一区二区5566日韩| 韩国一区二区三区| 欧美日韩激情一区| 亚洲人成网站在线| 国产成人免费视频网站| 精品日韩99亚洲| 日韩高清不卡一区二区三区| 91免费版pro下载短视频| 国产三级精品视频| 久久精品理论片| 欧美日本免费一区二区三区| 亚洲精品中文字幕在线观看| 成人午夜av在线| 久久九九全国免费| 韩国v欧美v亚洲v日本v| 日韩午夜av一区| 青青草国产精品97视觉盛宴| 在线不卡免费欧美| 三级欧美在线一区| 91麻豆精品久久久久蜜臀| 午夜精品aaa| 69堂成人精品免费视频| 偷窥少妇高潮呻吟av久久免费 | 国产一区二区在线看| 日韩精品中文字幕在线不卡尤物 | 国产99久久久国产精品潘金 | 成人一区在线观看| 欧美国产1区2区| 成人h精品动漫一区二区三区| 国产精品视频一二三区| 成人福利视频网站|