Advertisement
Egor_Vakar

Мейн курсача(1 курс)

May 10th, 2022
344
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 37.06 KB | None | 0 0
  1. unit PlaySoundUnit;
  2.  
  3. interface
  4.  
  5. uses
  6.   Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  7.     Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.MPlayer, Vcl.StdCtrls, Vcl.ComCtrls,
  8.     Vcl.Menus, Vcl.ExtCtrls, Vcl.Imaging.jpeg, Vcl.Buttons, Vcl.FileCtrl,
  9.     Vcl.WinXCtrls, mmsystem, ShellAPI, Vcl.Imaging.pngimage, Vcl.JumpList,
  10.     Vcl.WinXPickers, Vcl.TabNotBk, Vcl.ExtDlgs;
  11.  
  12. type
  13.   TPlaySoundForm = class(TForm)
  14.     PrevTrackBtn: TBitBtn;
  15.     StopBtn: TBitBtn;
  16.     NextTrackBtn: TBitBtn;
  17.     SettingsBtn: TBitBtn;
  18.     SongImage: TImage;
  19.     NowTimeLabel: TLabel;
  20.     MaxTimeLabel: TLabel;
  21.     TrackBar: TTrackBar;
  22.     VolumeBar: TTrackBar;
  23.     VolumeLabel: TLabel;
  24.     TrackNameLabel: TLabel;
  25.     MyTracksBtn: TBitBtn;
  26.     PlaylistsBtnBtn: TBitBtn;
  27.     CreatePlaylistBtn: TBitBtn;
  28.     CycleBtn: TBitBtn;
  29.     PlaylistsListBox: TListBox;
  30.     DeletePlaylistBtn: TBitBtn;
  31.     EqualizerBtn: TBitBtn;
  32.     MiniViewBtn: TBitBtn;
  33.     ExplorerBtn: TBitBtn;
  34.     MediaPlayer: TMediaPlayer;
  35.     TrackTimer: TTimer;
  36.     PlayBtn: TBitBtn;
  37.     TracksListBox: TFileListBox;
  38.     MuteBtn: TSpeedButton;
  39.     Cycle1TrackBtn: TBitBtn;
  40.     NoCycleBtn: TBitBtn;
  41.     RefocusTimer: TTimer;
  42.     BitBtn2: TBitBtn;
  43.     AddPlaylistBtn: TBitBtn;
  44.     RandBtn: TSpeedButton;
  45.     DeleteTrackBtn: TBitBtn;
  46.     DefaultImage: TImage;
  47.     ChangePlaylistBtn: TBitBtn;
  48.     BitBtn3: TBitBtn;
  49.     PlaylistNAmeLabel: TLabel;
  50.     AddTrackBtn: TBitBtn;
  51.     AddMusicDialog: TOpenDialog;
  52.     RenameTrackBtn: TBitBtn;
  53.     Image1: TImage;
  54.     Image2: TImage;
  55.     Image3: TImage;
  56.     Image4: TImage;
  57.     Panel: TPanel;
  58.     AskLabel: TLabel;
  59.     TipLabel: TLabel;
  60.     procedure StopBtnClick(Sender: TObject);
  61.     procedure FormKeyPress(Sender: TObject; var Key: Char);
  62.     procedure PauseTrack;
  63.     procedure PlayTrack;
  64.     procedure FormCreate(Sender: TObject);
  65.     procedure FindDir;
  66.     procedure LoadPlaylists;
  67.     procedure CopyTracks(Directory: String);
  68.     procedure LoadTracks;
  69.     function GetCurrentUserName: string;
  70.     procedure DblClick(Sender: TObject);
  71.     procedure UpdateTime;
  72.     procedure TrackBarChange(Sender: TObject);
  73.     procedure TrackTimerTimer(Sender: TObject);
  74.     procedure CycleBtnClick(Sender: TObject);
  75.     procedure Cycle1TrackBtnClick(Sender: TObject);
  76.     procedure NoCycleBtnClick(Sender: TObject);
  77.     procedure ActivateMusicPlayer;
  78.     procedure DisactivateMusicPlayer;
  79.     procedure UpdateTrackName;
  80.     procedure MuteBtnClick(Sender: TObject);
  81.     procedure VolumeBarChange(Sender: TObject);
  82.     procedure MiniViewBtnClick(Sender: TObject);
  83.     procedure RandBtnClick(Sender: TObject);
  84.     procedure RefocusTimerTimer(Sender: TObject);
  85.     procedure NextTrackBtnClick(Sender: TObject);
  86.     procedure PlayBtnClick(Sender: TObject);
  87.     procedure PrevTrackBtnClick(Sender: TObject);
  88.     procedure MyTracksBtnClick(Sender: TObject);
  89.     procedure PlaylistsBtnBtnClick(Sender: TObject);
  90.     procedure ExplorerBtnClick(Sender: TObject);
  91.     procedure AddPlaylistBtnClick(Sender: TObject);
  92.     procedure DeletePlaylistBtnClick(Sender: TObject);
  93.     procedure PlaylistsListBoxDblClick(Sender: TObject);
  94.     procedure CreatePlaylistBtnClick(Sender: TObject);
  95.     procedure ChangePlaylistBtnClick(Sender: TObject);
  96.     procedure DeleteTrackBtnClick(Sender: TObject);
  97.     procedure AddTrackBtnClick(Sender: TObject);
  98.     procedure RenameTrackBtnClick(Sender: TObject);
  99.     procedure SettingsBtnClick(Sender: TObject);
  100.     procedure FindCfg;
  101.     procedure CreateCfg;
  102.     procedure ReadCfg;
  103.     procedure SetLang(Lang: String);
  104.     procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
  105.  
  106.   private
  107.     { Private declarations }
  108.   public
  109.     { Public declarations }
  110.   end;
  111. var
  112.   PlaySoundForm: TPlaySoundForm;
  113.   IsPlaying, IsActivate: Boolean;
  114.   FileDirectory, CurrDirectory, CurrPlaylist, Lang: String;
  115.   CurrTrack, VolumeValue, PrevPrevTrack, PrevTrack, PathCounter: Integer;
  116.   Pathes: Array of String;
  117.  
  118. implementation
  119.  
  120. {$R *.dfm}
  121.  
  122. uses
  123.     ToolsUnit, AddPlaylistUnit, RenameTrackUnit, MiniViewUnit, SettingsUnit, MusicPathsUnit;
  124.  
  125.  
  126. procedure TPlaySoundForm.PauseTrack();
  127. begin
  128.     MediaPlayer.Pause;
  129.     IsPlaying := False;
  130.     StopBtn.Visible := False;
  131.     PlayBtn.Visible := True;
  132. end;
  133.  
  134. procedure TPlaySoundForm.PlayBtnClick(Sender: TObject);
  135. begin
  136.     PlayTrack;
  137.     StopBtn.Visible := True;
  138.     PlayBtn.Visible := False;
  139. end;
  140.  
  141. procedure TPlaySoundForm.PlaylistsBtnBtnClick(Sender: TObject);
  142. begin
  143.     LoadPlaylists;
  144. end;
  145.  
  146. procedure TPlaySoundForm.PlaylistsListBoxDblClick(Sender: TObject);
  147. var
  148.     PlayListDirectory, ImagePath, ErrorCap, ErrorMsg: String;
  149.     SearchRec: TSearchRec;
  150.     IsFind: Boolean;
  151. begin
  152.     if PlaylistsListBox.ItemIndex <> - 1 then
  153.     begin
  154.         Panel.Visible := False;
  155.         PlayListDirectory := FileDirectory + 'Playlists\' + PlaylistsListBox.Items[PlaylistsListBox.ItemIndex];
  156.         if PlayListDirectory <> CurrPlaylist then
  157.         begin
  158.             DisactivateMusicPlayer;
  159.             PlaylistNameLAbel.Caption := PlaylistsListBox.Items[PlaylistsListBox.ItemIndex] + ':';
  160.             if DirectoryExists(PlayListDirectory) then
  161.             begin
  162.                 CurrPlaylist := PlayListDirectory;
  163.                 TracksListBox.Directory:= CurrPlaylist;
  164.                 TracksListBox.Update;
  165.                 SetCurrentDir(CurrPlaylist);
  166.                 IsFind := False;
  167.                 if FindFirst('*', faAnyFile, SearchRec) = 0 then
  168.                     repeat
  169.                         if (Copy(SearchRec.Name, 1, 5) = 'image') then
  170.                         begin
  171.                             ImagePath := SearchRec.Name;
  172.                             IsFind := True;
  173.                         end;
  174.                     until (IsFind or (FindNext(SearchRec) <> 0));
  175.             end;
  176.             FindClose(SearchRec);
  177.             if FileExists(ImagePath) then
  178.                 SongImage.Picture.LoadFromFile(ImagePath)
  179.             else
  180.                 SongImage.Picture := DefaultImage.Picture;
  181.             CurrTrack := 1000000;
  182.             if TracksListBox.Count <> 0 then
  183.                 TracksListBox.Selected[0] := True;
  184.             TracksListBox.ItemIndex := -1;
  185.         end;
  186.     end;
  187. end;
  188.  
  189. procedure TPlaySoundForm.PlayTrack();
  190. begin
  191.     MediaPlayer.Play;
  192.     IsPlaying := True;
  193.     StopBtn.Visible := True;
  194.     PlayBtn.Visible := False;
  195. end;
  196.  
  197. procedure TPlaySoundForm.PrevTrackBtnClick(Sender: TObject);
  198. var
  199.     FileNAme: String;
  200. begin
  201.     if RandBtn.Down then
  202.     begin
  203.         Randomize;
  204.         PrevPrevTrack := PrevTrack;
  205.         PrevTrack := CurrTrack;
  206.         repeat
  207.             CurrTrack := Random(TracksListBox.Items.Count);
  208.         until (CurrTrack <> PrevTrack) and (CurrTrack <> PrevPrevTrack);
  209.     end
  210.     else
  211.     begin
  212.         Dec(CurrTrack);
  213.         if CurrTrack = -1 then
  214.             CurrTrack := TracksListBox.Items.Count - 1;
  215.     end;
  216.     FileName := TracksListBox.Items[CurrTrack];
  217.     if CurrPlaylist = '' then
  218.     begin
  219.         if FileExists('Playlists\' + FileName) then
  220.         begin
  221.             TracksListBox.Selected[CurrTrack] := True;
  222.             try
  223.                 MediaPlayer.FileName := 'Playlists\' + FileName;
  224.                 MediaPlayer.Open;
  225.                 UpdateTrackName;
  226.                 UpdateTime;
  227.                 PlayTrack;
  228.             except
  229.                 DisactivateMusicPlayer;
  230.                 if Lang = 'RUS' then
  231.                     MessageBox(Handle, PChar('Файл не проигрывается'), PChar('Ошибка'), MB_OK + MB_ICONERROR)
  232.                 else
  233.                     MessageBox(Handle, PChar('Unable to play the file'), PChar('Error'), MB_OK + MB_ICONERROR);
  234.                 TrackBar.Position := 0;
  235.                 TrackNameLabel.Caption := '';
  236.             end;
  237.         end;
  238.     end
  239.     else
  240.     begin
  241.         if FileExists(CurrPlaylist + '\' + FileName) then
  242.         begin
  243.             TracksListBox.Selected[CurrTrack] := True;
  244.             try
  245.                 MediaPlayer.FileName := CurrPlaylist + '\' + FileName;
  246.                 MediaPlayer.Open;
  247.                 UpdateTrackName;
  248.                 UpdateTime;
  249.                 PlayTrack;
  250.             except
  251.                 DisactivateMusicPlayer;
  252.                 if Lang = 'RUS' then
  253.                     MessageBox(Handle, PChar('Файл не проигрывается'), PChar('Ошибка'), MB_OK + MB_ICONERROR)
  254.                 else
  255.                     MessageBox(Handle, PChar('Unable to play the file'), PChar('Error'), MB_OK + MB_ICONERROR);
  256.                 TrackBar.Position := 0;
  257.                 TrackNameLabel.Caption := '';
  258.             end;
  259.         end;
  260.     end;
  261. end;
  262.  
  263. procedure TPlaySoundForm.RandBtnClick(Sender: TObject);
  264. begin
  265.     if RandBtn.Down then
  266.     begin
  267.         NoCycleBtn.Visible := False;
  268.         Cycle1TrackBtn.Visible := False;
  269.         CycleBtn.Visible := True;
  270.         Image1.Visible := True;
  271.     end
  272.     else
  273.         Image1.Visible := False;
  274. end;
  275.  
  276. procedure TPlaySoundForm.FormCreate(Sender: TObject);
  277. var
  278.     UserName, Directory: String;
  279.     i: Integer;
  280. begin
  281.     PlaySoundForm.Height := 629;
  282.     PlaySoundForm.Width := 742;
  283.     Tools.SetVolume(4500, 4500);
  284.     CurrTrack := -1;
  285.     IsPlaying := False;
  286.     isActivate := False;
  287.     StopBtn.Visible := False;
  288.     PlayBtn.Visible := True;
  289.     PlayBtn.Enabled := True;
  290.     TrackBar.Enabled := False;
  291.     FileDirectory  := ExtractFilePath(ParamStr(0));
  292.     SetLength(Pathes, 15);
  293.     for i := 0 to 14 do
  294.         Pathes[i] := '';
  295.     FindDir;
  296.     FindCfg;
  297.     SetLang(Lang);
  298.     DisactivateMusicPlayer;
  299. end;
  300.  
  301. procedure TPlaySoundForm.FindCfg;
  302. begin
  303.     if FileExists(FileDirectory + 'settings.cfg') then
  304.         ReadCfg
  305.     else
  306.         CreateCfg;
  307. end;
  308.  
  309. procedure TPlaySoundForm.ReadCfg;
  310. var
  311.     CfgFile: TextFile;
  312. begin
  313.     AssignFile(CfgFile, FileDirectory + 'settings.cfg');
  314.     Reset(CfgFile);
  315.     Readln(CfgFile, Lang);
  316.     SetLang(Lang);
  317.     PathCounter := 0;
  318.     while not Eof(CfgFile) do
  319.     begin
  320.         Readln(CfgFile, Pathes[PathCounter]);
  321.         Inc(PathCounter);
  322.     end;
  323.     CloseFile(CfgFile);
  324. end;
  325.  
  326. procedure TPlaySoundForm.CreateCfg;
  327. var
  328.     CfgFile: TextFile;
  329.     UserName: String;
  330. begin
  331.     AssignFile(CfgFile,FileDirectory + 'settings.cfg');
  332.     Rewrite(CfgFile);
  333.     Writeln(CfgFile, 'RUS');
  334.     Lang := 'RUS';
  335.     SetLang(Lang);
  336.     UserName := GetCurrentUserName;
  337.     Writeln(CfgFile, 'C:\Users\' + UserName + '\Downloads');
  338.     Pathes[0] := 'C:\Users\' + UserName + '\Downloads';
  339.     Write(CfgFile,'C:\Users\' + UserName + '\Music');
  340.     Pathes[2] := 'C:\Users\' + UserName + '\Music';
  341.     PathCounter := 2;
  342.     CloseFile(CfgFile);
  343. end;
  344.  
  345. procedure TPlaySoundForm.SetLang(Lang: String);
  346. begin
  347.     if Lang = 'RUS' then
  348.     begin
  349.         PlaySoundForm.MyTracksBtn.Caption := 'Мои треки';
  350.         PlaySoundForm.MyTracksBtn.Hint := 'Показать песни';
  351.         PlaySoundForm.PlaylistsBtnBtn.Caption := 'Плейлисты';
  352.         PlaySoundForm.PlaylistsBtnBtn.Hint := 'Показать плейлисты';
  353.         PlaySoundForm.SettingsBtn.Caption := 'Настройки';
  354.         PlaySoundForm.SettingsBtn.Hint := 'Настройки плеера';
  355.         PlaySoundForm.PrevTrackBtn.Hint := 'Предыдущий трек';
  356.         PlaySoundForm.StopBtn.Hint := 'Пауза';
  357.         PlaySoundForm.PlayBtn.Hint := 'Пуск';
  358.         PlaySoundForm.NextTrackBtn.Hint := 'Следующий трек';
  359.         PlaySoundForm.NoCycleBtn.Hint := 'Повтор: 1 трек';
  360.         PlaySoundForm.CycleBtn.Hint := 'Повтор: выкл';
  361.         PlaySoundForm.Cycle1TrackBtn.Hint := 'Повтор: вкл';
  362.         PlaySoundForm.RandBtn.Hint := 'Воспроизводить в случайном порядке';
  363.         PlaySoundForm.MiniViewBtn.Hint := 'Показывать в мини окне';
  364.         PlaySoundForm.MuteBtn.Hint := 'Без звука';
  365.         PlaySoundForm.AddTrackBtn.Hint := 'Добавить трек';
  366.         PlaySoundForm.DeleteTrackBtn.Hint := 'Удалить трек';
  367.         PlaySoundForm.RenameTrackBtn.Hint := 'Переименовать трек';
  368.         PlaySoundForm.CreatePlaylistBtn.Hint := 'Создать плейлист';
  369.         PlaySoundForm.AddPlaylistBtn.Hint := 'Копировать плейлист';
  370.         PlaySoundForm.DeletePlaylistBtn.Hint := 'Удалить плейлист';
  371.         PlaySoundForm.ChangePlaylistBtn.Hint := 'Редактировать плейлист';
  372.         PlaySoundForm.ExplorerBtn.Hint := 'Расположение плейлистов';
  373.         AskLabel.Caption := 'Музыка не найдена?';
  374.         TipLAbel.Caption := 'Добавьте путь к музыке в настройках';
  375.         if PlaylistNameLabel.Caption = 'My tracks:' then
  376.             PlaylistNameLabel.Caption := 'Мои треки:';
  377.     end
  378.     else
  379.     begin
  380.         PlaySoundForm.MyTracksBtn.Caption := 'My tracks';
  381.         PlaySoundForm.MyTracksBtn.Hint := 'Show songs';
  382.         PlaySoundForm.PlaylistsBtnBtn.Caption := 'Playlists';
  383.         PlaySoundForm.PlaylistsBtnBtn.Hint := 'Show playlists';
  384.         PlaySoundForm.SettingsBtn.Caption := 'Settings';
  385.         PlaySoundForm.SettingsBtn.Hint := 'Player''s settings';
  386.         PlaySoundForm.PrevTrackBtn.Hint := 'Previos track';
  387.         PlaySoundForm.StopBtn.Hint := 'Pause';
  388.         PlaySoundForm.PlayBtn.Hint := 'Play';
  389.         PlaySoundForm.NextTrackBtn.Hint := 'Next track';
  390.         PlaySoundForm.NoCycleBtn.Hint := 'Repeat: 1 track';
  391.         PlaySoundForm.CycleBtn.Hint := 'Repeat: off';
  392.         PlaySoundForm.Cycle1TrackBtn.Hint := 'Repeat: on';
  393.         PlaySoundForm.RandBtn.Hint := 'Play in random order';
  394.         PlaySoundForm.MiniViewBtn.Hint := 'Play in mini view';
  395.         PlaySoundForm.MuteBtn.Hint := 'Mute';
  396.         PlaySoundForm.AddTrackBtn.Hint := 'Add track';
  397.         PlaySoundForm.DeleteTrackBtn.Hint := 'Delete track';
  398.         PlaySoundForm.RenameTrackBtn.Hint := 'Rename track';
  399.         PlaySoundForm.CreatePlaylistBtn.Hint := 'Create playlist';
  400.         PlaySoundForm.AddPlaylistBtn.Hint := 'Copy playlist';
  401.         PlaySoundForm.DeletePlaylistBtn.Hint := 'Delete playlist';
  402.         PlaySoundForm.ChangePlaylistBtn.Hint := 'Edit playlist';
  403.         PlaySoundForm.ExplorerBtn.Hint := 'Playlists location';
  404.         AskLabel.Caption := 'Music isn''t found?';
  405.         TipLAbel.Caption := 'Add path in settings';
  406.         if PlaylistNameLabel.Caption = 'Мои треки:' then
  407.             PlaylistNameLabel.Caption := 'My tracks:';
  408.     end;
  409. end;
  410.  
  411. function TPlaySoundForm.GetCurrentUserName: string;
  412.  const
  413.    cnMaxUserNameLen = 254;
  414.  var
  415.    sUserName: string;
  416.    dwUserNameLen: DWORD;
  417.  begin
  418.    dwUserNameLen := cnMaxUserNameLen - 1;
  419.    SetLength(sUserName, cnMaxUserNameLen);
  420.    GetUserName(PChar(sUserName), dwUserNameLen);
  421.    SetLength(sUserName, dwUserNameLen - 1);
  422.    Result := sUserName;
  423.  end;
  424.  
  425. procedure TPlaySoundForm.AddPlaylistBtnClick(Sender: TObject);
  426. var
  427.     Directory, str: String;
  428. begin
  429.     if Lang = 'RUS' then
  430.         Str := 'Выберите папку плейлиста'
  431.     else
  432.         Str := 'Select playlist directory';
  433.     if SelectDirectory(Str, '', Directory) then
  434.     begin
  435.         Tools.CopyDir(Directory, FileDirectory + 'Playlists\' + Tools.TakeName(Directory));
  436.         LoadPlaylists();
  437.     end;
  438. end;
  439.  
  440. procedure TPlaySoundForm.AddTrackBtnClick(Sender: TObject);
  441. var
  442.     Path: String;
  443. begin
  444.     Panel.Visible := False;
  445.     if CurrPlaylist <> '' then
  446.         Path := CurrPlaylist + '\'
  447.     else
  448.         Path := FileDirectory + 'Playlists\';
  449.     if AddMusicDialog.Execute() then
  450.     begin
  451.         CopyFile(PChar(AddMusicDialog.FileName), PChar(Path + Tools.TakeName(AddMusicDialog.FileName)), True);
  452.         TracksListBox.Update;
  453.     end;
  454.     if CurrPlaylist <> '' then
  455.             MyTracksBtn.Click;
  456. end;
  457.  
  458. procedure TPlaySoundForm.ChangePlaylistBtnClick(Sender: TObject);
  459. var
  460.     PlayListDirectory: String;
  461.     SearchRec: TSearchRec;
  462.     IsFind: Boolean;
  463. begin
  464.     if PlaylistsListBox.ItemIndex <> -1  then
  465.     begin
  466.         AddPlaylistForm.PlaylistNameEdit.Text := PlaylistsListBox.Items[PlaylistsListBox.ItemIndex];
  467.         PlayListDirectory := FileDirectory + 'Playlists\' + PlaylistsListBox.Items[PlaylistsListBox.ItemIndex];
  468.         if CurrPlayList = PlayListDirectory then
  469.         begin
  470.             DisactivateMusicPlayer;
  471.             TracksListBox.Clear;
  472.         end;
  473.         SetCurrentDir(PlayListDirectory);
  474.         IsFind := False;
  475.         if FindFirst('*', faAnyFile, SearchRec) = 0 then
  476.             repeat
  477.                 if (Copy(SearchRec.Name, 1, 5) = 'image') then
  478.                 begin
  479.                     AddPlaylistForm.PlaylistImage.Picture.LoadFromFile(SearchRec.Name);
  480.                     AddPlaylistForm.ImagePathLabel.Caption:=PlayListDirectory + '\' + SearchRec.Name;
  481.                     IsFind := True;
  482.                 end;
  483.             until (IsFind or (FindNext(SearchRec) <> 0));
  484.         if not IsFind then
  485.         begin
  486.             AddPlaylistForm.PlaylistImage.Picture := DefaultImage.Picture;
  487.             AddPlaylistForm.ImagePathLabel.Caption := '';
  488.         end;
  489.         if Lang = 'RUS' then
  490.             AddPlaylistForm.CreatePlaylistButton.Caption := 'Сохранить'
  491.         else
  492.             AddPlaylistForm.CreatePlaylistButton.Caption := 'Save';
  493.         AddPlaylistForm.ShowModal;
  494.     end;
  495. end;
  496.  
  497. procedure TPlaySoundForm.CopyTracks(Directory: String);
  498. var
  499.     FindResult: TSearchRec;
  500. begin
  501.     SetCurrentDir(Directory);
  502.     if FindFirst( '*', faAnyFile, FindResult ) = 0 then
  503.     begin
  504.         repeat
  505.             if (Copy(FindResult.Name, Length(FindResult.Name) - 3, 4) = '.mp3') then
  506.                 if not FileExists(FileDirectory + 'Playlists\' + FindResult.Name) then
  507.                     CopyFile(Pchar(Directory + '\' + FindResult.Name), Pchar(FileDirectory + 'Playlists\' + FindResult.Name), True);
  508.         until FindNext(FindResult) <> 0;
  509.         FindClose(FindResult);
  510.     end;
  511. end;
  512.  
  513. procedure TPlaySoundForm.CreatePlaylistBtnClick(Sender: TObject);
  514. begin
  515.     AddPlaylistForm.PlaylistNameEdit.Text := '';
  516.     AddPlaylistForm.PlaylistImage.Picture := DefaultImage.Picture;
  517.     if Lang = 'RUS' then
  518.         AddPlaylistForm.CreatePlaylistButton.Caption := 'Создать'
  519.     else
  520.         AddPlaylistForm.CreatePlaylistButton.Caption := 'Create';
  521.     AddPlaylistForm.ShowModal;
  522. end;
  523.  
  524. procedure TPlaySoundForm.Cycle1TrackBtnClick(Sender: TObject);
  525. begin
  526.     Cycle1TrackBtn.Visible := False;
  527.     NoCycleBtn.Visible := True;
  528. end;
  529.  
  530. procedure TPlaySoundForm.CycleBtnClick(Sender: TObject);
  531. begin
  532.     RandBtn.Down := False;
  533.     CycleBtn.Visible := False;
  534.     Cycle1TrackBtn.Visible := True;
  535.     Image3.Visible := True;
  536. end;
  537.  
  538. procedure TPlaySoundForm.FindDir();
  539. begin
  540.     if not FileExists(FileDirectory + 'Playlists') then
  541.           CreateDir(FileDirectory + 'Playlists');
  542. end;
  543.  
  544. procedure TPlaySoundForm.LoadPlaylists();
  545. var
  546.     FindResult: TSearchRec;
  547. begin
  548.     PlaylistsListBox.Clear;
  549.     SetCurrentDir(FileDirectory + 'Playlists');
  550.     if FindFirst('*', faDirectory, FindResult) = 0 then
  551.     begin
  552.         repeat
  553.             if ((FindResult.attr and faDirectory) = faDirectory) and (FindResult.Name <> '.') and (FindResult.Name <> '..') and ((Length(FindResult.Name) < 4) or (Copy(FindResult.Name, Length(FindResult.Name) - 3, 4) <> '.mp3'))  then
  554.                 PlaylistsListBox.Items.Add(FindResult.Name);
  555.         until FindNext(FindResult) <> 0;
  556.         FindClose(FindResult);
  557.     end;
  558. end;
  559.  
  560. procedure TPlaySoundForm.LoadTracks();
  561. var
  562.     FindResult: TSearchRec;
  563.     str: String;
  564. begin
  565.     TracksListBox.Clear;
  566.     SetCurrentDir(FileDirectory + 'Playlists');
  567.     str := FileDirectory + 'Playlists';
  568.     if FindFirst('*', faDirectory, FindResult) = 0 then
  569.     begin
  570.         repeat
  571.             if (FindResult.Name <> '.') and (FindResult.Name <> '..') and  ((Length(FindResult.Name) >= 4) and (Copy(FindResult.Name, Length(FindResult.Name) - 3, 4) = '.mp3'))  then
  572.                 TracksListBox.Items.Add(FindResult.Name);
  573.         until FindNext(FindResult) <> 0;
  574.         FindClose(FindResult);
  575.     end;
  576. end;
  577.  
  578. procedure TPlaySoundForm.MiniViewBtnClick(Sender: TObject);
  579. begin
  580.     Top:=Screen.WorkAreaRect.Bottom;
  581.     Left:=Screen.WorkAreaRect.Right;
  582.     MiniViewForm.ShowModal;
  583. end;
  584.  
  585. procedure TPlaySoundForm.MuteBtnClick(Sender: TObject);
  586. begin
  587.     if MuteBtn.Down then
  588.     begin
  589.         VolumeValue := VolumeBar.Position;
  590.         VolumeBar.Position := 100;
  591.         VolumeBar.Enabled := False;
  592.         Image2.Visible := True;
  593.     end
  594.     else
  595.     begin
  596.         VolumeBar.Enabled := True;
  597.         VolumeBar.Position := VolumeValue;
  598.         Image2.Visible := False;
  599.     end;
  600. end;
  601.  
  602. procedure TPlaySoundForm.MyTracksBtnClick(Sender: TObject);
  603. var
  604.     UserName: String;
  605.     i: Integer;
  606. begin
  607.     Panel.Visible := False;
  608.     DisactivateMusicPlayer;
  609.     UserName := GetCurrentUserName;
  610.     for I := 0 to PathCounter - 1 do
  611.         CopyTracks(Pathes[i]);
  612.     CurrTrack := -1;
  613.     LoadTracks;
  614.     TracksListBox.Directory := FileDirectory + 'Playlists';
  615.     SongImage.Picture := DefaultImage.Picture;
  616.     CurrDirectory := FileDirectory + 'Playlists';
  617.     if Lang = 'RUS' then
  618.         PlaylistNameLabel.Caption := 'Мои треки:'
  619.     else
  620.         PlaylistNameLabel.Caption := 'My tracks:';
  621.     CurrPlaylist := '';
  622.     if TracksListBox.Count = 0 then
  623.         Panel.Visible := True;
  624. end;
  625.  
  626. procedure TPlaySoundForm.NextTrackBtnClick(Sender: TObject);
  627. var
  628.     FileNAme: String;
  629. begin
  630.     if RandBtn.Down then
  631.     begin
  632.         Randomize;
  633.         PrevPrevTrack := PrevTrack;
  634.         PrevTrack := CurrTrack;
  635.         repeat
  636.             CurrTrack := Random(TracksListBox.Items.Count);
  637.         until (CurrTrack <> PrevTrack) and (CurrTrack <> PrevPrevTrack);
  638.     end
  639.     else
  640.     begin
  641.         Inc(CurrTrack);
  642.         if CurrTrack = TracksListBox.Items.Count then
  643.             CurrTrack := 0;
  644.     end;
  645.     FileName := TracksListBox.Items[CurrTrack];
  646.     if CurrPlaylist = '' then
  647.     begin
  648.         if FileExists('Playlists\' + FileName) then
  649.         begin
  650.             TracksListBox.Selected[CurrTrack] := True;
  651.             try
  652.                 MediaPlayer.FileName := 'Playlists\' + FileName;
  653.                 MediaPlayer.Open;
  654.                 UpdateTrackName;
  655.                 UpdateTime;
  656.                 PlayTrack;
  657.             except
  658.                 DisactivateMusicPlayer;
  659.                 if Lang = 'RUS' then
  660.                     MessageBox(Handle, PChar('Файл не проигрывается'), PChar('Ошибка'), MB_OK + MB_ICONERROR)
  661.                 else
  662.                 TrackBar.Position := 0;
  663.                 TrackNameLabel.Caption := '';
  664.             end;
  665.         end;
  666.     end
  667.     else
  668.     begin
  669.         if FileExists(CurrPlaylist + '\' + FileName) then
  670.         begin
  671.             TracksListBox.Selected[CurrTrack] := True;
  672.             try
  673.                 MediaPlayer.FileName := CurrPlaylist + '\' + FileName;
  674.                 MediaPlayer.Open;
  675.                 UpdateTrackName;
  676.                 UpdateTime;
  677.                 PlayTrack;
  678.             except
  679.                 DisactivateMusicPlayer;
  680.                 MessageBox(Handle, PChar('Файл не проигрывается'), PChar('Ошибка'), MB_OK + MB_ICONERROR);
  681.                 TrackBar.Position := 0;
  682.                 TrackNameLabel.Caption := '';
  683.             end;
  684.         end;
  685.     end;
  686. end;
  687.  
  688. procedure TPlaySoundForm.NoCycleBtnClick(Sender: TObject);
  689. begin
  690.     NoCycleBtn.Visible := False;
  691.     CycleBtn.Visible := True;
  692.     Image3.Visible := False;
  693. end;
  694.  
  695. procedure TPlaySoundForm.FormKeyDown(Sender: TObject; var Key: Word;
  696.   Shift: TShiftState);
  697. begin
  698.     if (Key = VK_LEFT) and IsActivate then
  699.     begin
  700.         TrackBar.Position := TrackBar.Position - TrackBar.Max * 5 div (MediaPlayer.Length div 1000);
  701.         TracksListBox.ItemIndex := TracksListBox.ItemIndex + 1;
  702.     end;
  703.  
  704.     if (Key = VK_RIGHT) and IsActivate then
  705.     begin
  706.         TrackBar.Position := TrackBar.Position + TrackBar.Max * 5 div (MediaPlayer.Length div 1000);
  707.         TracksListBox.ItemIndex := TracksListBox.ItemIndex - 1;
  708.     end;
  709.     if (Key = VK_UP) and IsActivate then
  710.     begin
  711.         VolumeBar.Position := VolumeBar.Position - 90;
  712.         TracksListBox.ItemIndex := TracksListBox.ItemIndex + 1;
  713.     end;
  714.     if (Key = VK_DOWN) and IsActivate then
  715.     begin
  716.         VolumeBar.Position := VolumeBar.Position + 90;
  717.         TracksListBox.ItemIndex := TracksListBox.ItemIndex - 1;
  718.     end;
  719. end;
  720.  
  721. procedure TPlaySoundForm.FormKeyPress(Sender: TObject; var Key: Char);
  722. var
  723.     Text: String;
  724. begin
  725.     if (Key = #32) and IsActivate then    //OnSpase
  726.         if IsPlaying then
  727.             PauseTrack()
  728.         else
  729.             PlayTrack();
  730.  
  731.     if (Key = 'M') or (Key = 'm') or (Key = 'ь') or (Key = 'Ь')then    //Mute
  732.     begin
  733.         if MuteBtn.Down then
  734.            MuteBtn.Down := False
  735.         else
  736.             MuteBtn.Down := True;
  737.         MuteBtnClick(MuteBtn);
  738.     end;
  739.  
  740.     if Key = #27 then
  741.     begin
  742.         if Lang = 'RUS' then
  743.         begin
  744.             Text := 'Вы уверены, что хотите выйти?';
  745.             if MessageBox(PlaySoundForm.Handle, PCHar(Text), 'd' , MB_YESNO + MB_ICONINFORMATION + MB_DEFBUTTON2) = ID_YES then
  746.             begin
  747.                 PlaySoundForm.Close;
  748.             end
  749.         end
  750.         else
  751.         begin
  752.             Text := 'Are you sure, you want to exit?';
  753.             if MessageDlg(Text, mtConfirmation, [mbYes, mbNo], 0) = mrYes then
  754.             begin
  755.                 PlaySoundForm.Close;
  756.             end
  757.         end;
  758.     end;
  759. end;
  760.  
  761. procedure TPlaySoundForm.SettingsBtnClick(Sender: TObject);
  762. begin
  763.     SettingsForm.ShowModal;
  764. end;
  765.  
  766. procedure TPlaySoundForm.StopBtnClick(Sender: TObject);
  767. begin
  768.     PauseTrack;
  769.     StopBtn.Visible := False;
  770.     PlayBtn.Visible := True;
  771. end;
  772.  
  773. procedure TPlaySoundForm.RefocusTimerTimer(Sender: TObject);
  774. begin
  775.     TracksListBox.SetFocus;
  776. end;
  777.  
  778. procedure TPlaySoundForm.RenameTrackBtnClick(Sender: TObject);
  779. begin
  780.     if Length(TracksListBox.FileName) <> 0 then
  781.     begin
  782.         RenameTrackForm.TrackNameEdit.Text := Copy(Tools.TakeName(TracksListBox.Items[TracksListBox.ItemIndex]),1, Length(Tools.TakeName(TracksListBox.Items[TracksListBox.ItemIndex])) - 4);
  783.         RenameTrackForm.ShowModal;
  784.     end;
  785. end;
  786.  
  787. procedure TPlaySoundForm.TrackBarChange(Sender: TObject);
  788. begin
  789.     if IsActivate then
  790.         MediaPlayer.Position := TrackBar.Position;
  791.     if not GetKeyState(VK_LBUTTON) < 0 then
  792.         if IsPlaying then
  793.             PlayTrack
  794.         else
  795.         begin
  796.             PlayTrack;
  797.             PauseTrack;
  798.         end;
  799. end;
  800.  
  801. procedure TPlaySoundForm.DblClick(Sender: TObject);
  802. var
  803.     ImagePath, FileName, str: string;
  804. begin
  805.     if (TracksListBox.ItemIndex <> -1) and (TracksListBox.ItemIndex <> CurrTrack) then
  806.     begin
  807.         if not IsPlaying then
  808.         begin
  809.             ActivateMusicPlayer();
  810.         end;
  811.         SetCurrentDir(FileDirectory);
  812.         CurrTrack := TracksListBox.ItemIndex;
  813.         FileName := TracksListBox.Items[CurrTrack];
  814.         if CurrPlaylist = '' then
  815.         begin
  816.             if FileExists('Playlists\' + FileName) then
  817.             begin
  818.                 TracksListBox.Selected[CurrTrack] := True;
  819.                 try
  820.                     MediaPlayer.FileName := 'Playlists\' + FileName;
  821.                     MediaPlayer.Open;
  822.                     UpdateTrackName;
  823.                     UpdateTime;
  824.                     PlayTrack;
  825.                 except
  826.                     DisactivateMusicPlayer;
  827.                     if Lang = 'RUS' then
  828.                         MessageBox(Handle, PChar('Файл не проигрывается'), PChar('Ошибка'), MB_OK + MB_ICONERROR)
  829.                     else
  830.                         MessageBox(Handle, PChar('Unable to play the file'), PChar('Error'), MB_OK + MB_ICONERROR);
  831.                     TrackBar.Position := 0;
  832.                     TrackNameLabel.Caption := '';
  833.                 end;
  834.             end;
  835.         end
  836.         else
  837.         begin
  838.             if FileExists(CurrPlaylist + '\' + FileName) then
  839.             begin
  840.                 TracksListBox.Selected[CurrTrack] := True;
  841.                 try
  842.                     MediaPlayer.FileName := CurrPlaylist + '\' + FileName;
  843.                     MediaPlayer.Open;
  844.                     UpdateTrackName;
  845.                     UpdateTime;
  846.                     PlayTrack;
  847.                 except
  848.                     DisactivateMusicPlayer;
  849.                     if Lang = 'RUS' then
  850.                         MessageBox(Handle, PChar('Файл не проигрывается'), PChar('Ошибка'), MB_OK + MB_ICONERROR)
  851.                     else
  852.                         MessageBox(Handle, PChar('Unable to play the file'), PChar('Error'), MB_OK + MB_ICONERROR);
  853.                     TrackBar.Position := 0;
  854.                     TrackNameLabel.Caption := '';
  855.                 end;
  856.             end;
  857.         end;
  858.     end;
  859. end;
  860.  
  861. procedure TPlaySoundForm.TrackTimerTimer(Sender: TObject);
  862. var
  863.     Event: TNotifyEvent;
  864.     FileName: String;
  865. begin
  866.     Event := TrackBar.OnChange;
  867.     TrackBar.OnChange := nil;
  868.     if MediaPlayer.FileName <> '' then
  869.     begin
  870.         TrackBar.Max := MediaPlayer.Length;
  871.         TrackBar.Position := MediaPlayer.Position;
  872.         NowTimeLabel.Caption := FormatDateTime('nn:ss', (MediaPlayer.Position div 1000)/(24*60*60));
  873.     end;
  874.     TrackBar.OnChange := Event;
  875.  
  876.  
  877.     if MediaPlayer.Position = MediaPlayer.Length then
  878.     begin
  879.         if RandBtn.Down then
  880.         begin
  881.             Randomize;
  882.             PrevPrevTrack := PrevTrack;
  883.             PrevTrack := CurrTrack;
  884.             repeat
  885.                 CurrTrack := Random(TracksListBox.Items.Count);
  886.             until (CurrTrack <> PrevTrack) and (CurrTrack <> PrevPrevTrack);
  887.             FileName := TracksListBox.Items[CurrTrack];
  888.             if FileExists('Playlists\' + FileName) then
  889.             begin
  890.                 TracksListBox.Selected[CurrTrack] := True;
  891.                 MediaPlayer.FileName := 'Playlists\' + FileName;
  892.                 MediaPlayer.Open;
  893.                 UpdateTrackName();
  894.                 UpdateTime();
  895.                 PlayTrack();
  896.             end;
  897.         end
  898.         else
  899.             if NoCycleBtn.Visible = False then
  900.             begin
  901.                 if TracksListBox.Count <> 0 then
  902.                     if (CurrTrack <> TracksListBox.Items.Count - 1) or (Cycle1TrackBtn.Visible = True) then
  903.                         NextTrackBtnClick(TrackTimer)
  904.                     else
  905.                     begin
  906.                         PauseTrack;
  907.                         DisactivateMusicPlayer()
  908.                     end
  909.                 else
  910.                 begin
  911.                     DisactivateMusicPlayer();
  912.                 end;
  913.             end
  914.             else
  915.                 PlayTrack();
  916.     end;
  917. end;
  918.  
  919. procedure TPlaySoundForm.ActivateMusicPlayer();
  920. begin
  921.     TrackBar.Enabled := True;
  922.     PlayBtn.Enabled := True;
  923.     StopBtn.Enabled := True;
  924.     NextTrackBtn.Enabled := True;
  925.     PrevTrackBtn.Enabled := True;
  926.     TrackTimer.Enabled := True;
  927.     CycleBtn.Enabled := True;
  928.     IsActivate := True;
  929.     CycleBtn.Enabled := True;
  930.     RandBtn.Enabled := True;
  931.     MiniViewBtn.Enabled := True;
  932.     EqualizerBtn.Enabled := True;
  933. end;
  934. procedure TPlaySoundForm.DeletePlaylistBtnClick(Sender: TObject);
  935. var
  936.     PlaylistName, NowPlay: string;
  937.     lpCaption, lpText: PChar;
  938. begin
  939.     if PlaylistsListBox.ItemIndex <> -1 then
  940.     begin
  941.         NowPlay := CurrPlaylist;
  942.         SetCurrentDir(FileDirectory + 'Playlists');
  943.         PlaylistName := FileDirectory + 'Playlists\' + PlaylistsListBox.Items[PlaylistsListBox.ItemIndex];
  944.         if Lang = 'RUS' then
  945.         begin
  946.             lpCaption := 'Удаление';
  947.             lpText := PChar('Вы действительно хотите удалить плейлист'#13#10 + PlaylistsListBox.Items[PlaylistsListBox.ItemIndex] +'?');
  948.             if MessageBox(Handle, PChar(lpText), PChar(lpCaption), MB_YESNO + MB_ICONQUESTION) = IDYES then
  949.             begin
  950.                 if NowPlay = PlaylistName then
  951.                 begin
  952.                     MediaPlayer.Close;
  953.                     DisactivateMusicPlayer;
  954.                     TracksListBox.Clear;
  955.                 end;
  956.                 SetCurrentDir(FileDirectory + 'Playlists');
  957.                 Tools.DeleteDir(PlaylistName);
  958.                 LoadPlaylists();
  959.             end;
  960.         end
  961.         else
  962.         begin
  963.             lpCaption := 'Deleting';
  964.             lpText := PChar('Are you shure for deleting playlist'#13#10 + PlaylistsListBox.Items[PlaylistsListBox.ItemIndex] +'?');
  965.             if MessageDlg(lpText, mtConfirmation, [mbYes, mbNo], 0) = mrYes then
  966.             begin
  967.                 if NowPlay = PlaylistName then
  968.                 begin
  969.                     MediaPlayer.Close;
  970.                     DisactivateMusicPlayer;
  971.                     TracksListBox.Clear;
  972.                 end;
  973.                 SetCurrentDir(FileDirectory + 'Playlists');
  974.                 Tools.DeleteDir(PlaylistName);
  975.                 LoadPlaylists();
  976.             end;
  977.         end;
  978.     end
  979.     else
  980.     begin
  981.         if Lang = 'RUS' then
  982.             MessageBox(Handle, PChar('Выберите плейлист'), PChar('Ошибка'), MB_OK + MB_ICONERROR)
  983.         else
  984.             MessageBox(Handle, PChar('Select playlist'), PChar('Error'), MB_OK + MB_ICONERROR)
  985.     end;
  986. end;
  987.  
  988. procedure TPlaySoundForm.DeleteTrackBtnClick(Sender: TObject);
  989. var
  990.     QuestCap, Question, ErrorCap, ErrorMsg: string;
  991.     lpCaption, lpText: PChar;
  992.     PrevIndex, PrevPos: Integer;
  993. begin
  994.     if Length(TracksListBox.FileName) <> 0 then
  995.     begin
  996.         if Lang = 'RUS' then
  997.         begin
  998.             lpCaption := 'Удаление';
  999.             lpText := PChar('Вы действительно хотите удалить трек'#13#10 + PlaylistsListBox.Items[PlaylistsListBox.ItemIndex] +'?');
  1000.         end
  1001.         else
  1002.         begin
  1003.             lpCaption := 'Deleting';
  1004.             lpText := PChar('Are you shure for deleting track'#13#10 + PlaylistsListBox.Items[PlaylistsListBox.ItemIndex] +'?');
  1005.         end;
  1006.         if MessageBox(Handle, PChar(lpText), PChar(lpCaption), MB_YESNO + MB_ICONQUESTION) = IDYES then
  1007.         begin
  1008.             PrevPos := MediaPlayer.Position;
  1009.             PrevIndex := TracksListBox.ItemIndex;
  1010.             DeleteFile(TracksListBox.FileName);
  1011.             TracksListBox.Update;
  1012.             if TracksListBox.Count = 0 then
  1013.                 DisactivateMusicPlayer
  1014.             else
  1015.             begin
  1016.                 if PrevIndex >= CurrTrack  then
  1017.                     TracksListBox.ItemIndex := CurrTrack
  1018.                 else
  1019.                 begin
  1020.                     TracksListBox.ItemIndex := CurrTrack - 1;
  1021.                     PrevTrackBtn.Click;
  1022.                     DblClick(TracksListBox);
  1023.                 end;
  1024.                 PrevTrackBtn.Click;
  1025.                 DblClick(TracksListBox);
  1026.                 if PrevIndex <> CurrTrack  then
  1027.                 begin
  1028.                     MediaPlayer.Position := PrevPos;
  1029.                     StopBtn.Click;
  1030.                     PlayBtn.Click;
  1031.                 end;
  1032.             end;
  1033.         end;
  1034.     end
  1035.     else
  1036.     begin
  1037.         if Lang = 'RUS' then
  1038.             MessageBox(Handle, PChar('Выберите трек'), PChar('Ошибка'), MB_OK + MB_ICONERROR)
  1039.         else
  1040.             MessageBox(Handle, PChar('Select track'), PChar('Error'), MB_OK + MB_ICONERROR)
  1041.     end;
  1042. end;
  1043.  
  1044. procedure TPlaySoundForm.DisactivateMusicPlayer();
  1045. begin
  1046.     TrackNameLabel.Caption := '';
  1047.     PlaylistNameLabel.Caption := '';
  1048.     SongImage.Picture := DefaultImage.Picture;
  1049.     MediaPlayer.Close;
  1050.     IsActivate := False;
  1051.     IsPlaying := False;
  1052.     TrackBar.Enabled := False;
  1053.     PlayBtn.Visible := True;
  1054.     PlayBtn.Enabled := False;
  1055.     StopBtn.Visible := False;
  1056.     NextTrackBtn.Enabled := False;
  1057.     PrevTrackBtn.Enabled := False;
  1058.     TrackTimer.Enabled := False;
  1059.     CycleBtn.Enabled := False;
  1060.     RandBtn.Enabled := False;
  1061.     MiniViewBtn.Enabled := False;
  1062.     EqualizerBtn.Enabled := False;
  1063. end;
  1064.  
  1065. procedure TPlaySoundForm.ExplorerBtnClick(Sender: TObject);
  1066. var
  1067.     FilePath: string;
  1068. begin
  1069.     FilePath := FileDirectory + 'Playlists';
  1070.     if not FileExists(FilePath) then
  1071.         CreateDir(FilePath);
  1072.     ShellExecute(0, 'open', PChar(FilePath), nil, nil, SW_SHOW);
  1073. end;
  1074.  
  1075. procedure TPlaySoundForm.UpdateTrackName;
  1076. var
  1077.     Name: string;
  1078. begin
  1079.     Name := Tools.TakeName(MediaPlayer.FileName);
  1080.     Delete(Name, Length(Name) - 3, 4);
  1081.     if Length(Name) > 40 then
  1082.     begin
  1083.         Delete(Name, 38, Length(Name) - 37);
  1084.         Insert('...',Name,38)
  1085.     end;
  1086.     TrackNameLabel.Caption := Name;
  1087. end;
  1088.  
  1089. procedure TPlaySoundForm.VolumeBarChange(Sender: TObject);
  1090. var
  1091.     Volume: Integer;
  1092. begin
  1093.  
  1094.     Tools.SetVolume(Abs(VolumeBar.Position),abs(VolumeBar.Position));
  1095.     Volume := Round((9000 + VolumeBar.Position) / 90);
  1096.     VolumeLabel.Caption := IntToStr(100 - Volume) + '%';
  1097. end;
  1098.  
  1099. procedure TPlaySoundForm.UpdateTime();
  1100. begin
  1101.     MaxTimeLabel.Caption := FormatDateTime('nn:ss', (MediaPlayer.Length div 1000)/(24*60*60));
  1102. end;
  1103.  
  1104. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement