Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.06.2012, 16:36   #1
blondino4ka_milk
Пользователь
 
Аватар для blondino4ka_milk
 
Регистрация: 02.03.2010
Сообщений: 59
По умолчанию Создать класс(Delphi)

Преподаватель требует от меня написание класса, наследование, т.е. из этого кода взять что нить за класс.

Мини-плеер же написан с использованием Delphi-компонеты TMediaPlayer


Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, MPlayer, ExtCtrls, Buttons, MMSystem, ComCtrls,
  ShellAPI, ShlObj;
type
  TfrmPlay = class(TForm)
    mpPlay: TMediaPlayer;
    lbPlayList: TListBox;
    odPlay: TOpenDialog;
    lbFileName: TLabel;
    TrackBar: TScrollBar;
    Timer: TTimer;
    BtnPlay: TBitBtn;
    BtnPause: TBitBtn;
    BtnStop: TBitBtn;
    BtnPrev: TBitBtn;
    BtnNext: TBitBtn;
    VolBar: TTrackBar;
    btnAdd: TBitBtn;
    btnDelete: TBitBtn;
    btnOpenFolder: TBitBtn;
    LblTimer: TLabel;
	
//    procedure btnAddClick(Sender: TObject);
    procedure btnDeleteClick(Sender: TObject);
    procedure lbPlayListClick(Sender: TObject);
    procedure TimerTimer(Sender: TObject);
    procedure BtnPlayClick(Sender: TObject);
    procedure BtnPauseClick(Sender: TObject);
    procedure BtnStopClick(Sender: TObject);
    procedure BtnNextClick(Sender: TObject);
    procedure BtnPrevClick(Sender: TObject);
    procedure VolBarChange(Sender: TObject);
    procedure btnOpenFolderClick(Sender: TObject);
    procedure TrackBarChange(Sender: TObject);



  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  frmPlay: TfrmPlay;
   tmr:boolean;
implementation



{$R *.dfm}




function Mus2Str(n: longint): string;
var
s: string;
sec: longint;
min: longint;
begin
sec:=trunc(n/1000);
min:=trunc(sec/60);
sec:=sec-min*60;
if min<10 then s:='0'+inttostr(min) else s:=inttostr(min);
if sec<10 then s:=s+':0'+inttostr(sec)
else s:=s+':'+ inttostr(sec);
Result:=s;
end;


function BrowseDialog(const Title: string; const Flag: integer): string;
var  lpItemID: PItemIDList;
BrowseInfo : TBrowseInfo;
DisplayName : array[0..MAX_PATH] of char;
TempPath : array[0..MAX_PATH] of char;
begin
Result:='';
FillChar(BrowseInfo, sizeof(TBrowseInfo), #0);
with BrowseInfo do begin
hwndOwner := Application.Handle;
pszDisplayName := @DisplayName;
lpszTitle := PChar(Title);
ulFlags := Flag;
end;
lpItemID := SHBrowseForFolder(BrowseInfo);
if lpItemId <> nil then begin
SHGetPathFromIDList(lpItemID, TempPath);
Result := IncludeTrailingBackslash(TempPath);
GlobalFreePtr(lpItemID);
end;
end;


procedure FillMP3FileList(Folder: string; sl: TStrings);
var Rec : TSearchRec;
begin
sl.Clear;
if SysUtils.FindFirst(Folder + '*.mp3', faAnyFile, Rec) = 0 then
try
repeat
sl.Add(Rec.Name);
until SysUtils.FindNext(Rec) <> 0;
finally
SysUtils.FindClose(Rec);
end;
end;     

procedure TfrmPlay.btnOpenFolderClick(Sender: TObject);
var mp3Folder: string;
begin
mp3Folder := BrowseDialog('Choose a folder with mp3 files', BIF_RETURNONLYFSDIRS);
if mp3Folder = '' then Exit;
lbFileName.Caption := mp3Folder;
FillMP3FileList(mp3Folder, lbPlayList.Items);
end;

{procedure TfrmPlay.btnAddClick(Sender: TObject);
begin
     if odPlay.Execute then
      begin
      TrackBar.Max:=0;
      lbPlayList.items.Add(odPlay.FileName);
      mpPlay.FileName := odPlay.FileName;
      mpPlay.Open;
     // mpPlay.Play;
      TrackBar.Max:=mpPlay.Length;
      end;
end;   }
procedure TfrmPlay.btnDeleteClick(Sender: TObject);
begin
      if lbPlayList.ItemIndex>-1 then lbPlayList.Items.Delete(lbPlayList.ItemIndex);
end;

procedure TfrmPlay.lbPlayListClick(Sender: TObject);
var mp3File: string;
begin
if lbPlayList.Items.Count=0 then exit;
mp3File := Concat(lbFileName.Caption, lbPlayList.Items.Strings[lbPlayList.ItemIndex]);
if not FileExists(mp3File) then begin
ShowMessage('MP3 file '+#13#10+ mp3File +#13#10+'does not exist!');
exit;

       mpPlay.FileName:=lbPlayList.Items[lbPlayList.ItemIndex];
       mpPlay.Open;
       mpPlay.Play;
       lbFileName.Caption:=mpPlay.FileName;
       end;
       mpPlay.Close;
       mpPlay.FileName:=mp3File;
mpPlay.Open;
mpPlay.Play;
 TrackBar.Max:=mpPlay.Length;
end;

Последний раз редактировалось blondino4ka_milk; 09.06.2012 в 18:57.
blondino4ka_milk вне форума Ответить с цитированием
Старый 09.06.2012, 16:39   #2
blondino4ka_milk
Пользователь
 
Аватар для blondino4ka_milk
 
Регистрация: 02.03.2010
Сообщений: 59
По умолчанию

продолжение
Код:
procedure TfrmPlay.TimerTimer(Sender: TObject);
begin
    tmr:=True;
    if TrackBar.Max<>0 then
    TrackBar.Position := mpPlay.Position;
    tmr:=false;
    LblTimer.Caption:=Mus2Str(mpPlay.Position);

end;

procedure TfrmPlay.BtnPlayClick(Sender: TObject);
begin
mpPlay.Play;
end;

procedure TfrmPlay.BtnPauseClick(Sender: TObject);
begin
mpPlay.Pause;
end;

procedure TfrmPlay.BtnStopClick(Sender: TObject);
begin
mpPlay.Stop;
mpPlay.Position:=0;
end;

procedure TfrmPlay.BtnNextClick(Sender: TObject);
begin
       mpPlay.Stop;
       if lbPlayList.ItemIndex<>lbPlayList.Items.Count-1 then
          lbPlayList.ItemIndex:=lbPlayList.ItemIndex+1
       else
          lbPlayList.ItemIndex:=0;
       mpPlay.FileName:=lbPlayList.Items[lbPlayList.ItemIndex];
       mpPlay.Open;
       mpPlay.Play;
end;

procedure TfrmPlay.BtnPrevClick(Sender: TObject);
begin
mpPlay.Stop;
       if lbPlayList.ItemIndex<>0 then
          lbPlayList.ItemIndex:=lbPlayList.ItemIndex-1
       else
          lbPlayList.ItemIndex:=lbPlayList.Items.Count-1;
       mpPlay.FileName:=lbPlayList.Items[lbPlayList.ItemIndex];
       mpPlay.Open;
       mpPlay.Play;
end;

procedure TfrmPlay.VolBarChange(Sender: TObject);
var
  Value: DWord;
 begin
 Value :=  VolBar.Position - $FFFF;
  WaveOutSetVolume(0, (Value SHL 16) + Value);
end;

procedure TfrmPlay.TrackBarChange(Sender: TObject);
begin
      if not(tmr) then mpPlay.Position:=TrackBar.Position;
end;
blondino4ka_milk вне форума Ответить с цитированием
Старый 09.06.2012, 19:46   #3
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

Цитата:
взять что нить за класс
вот TMediaPlayer и возьмите. за класс.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 09.06.2012, 19:53   #4
blondino4ka_milk
Пользователь
 
Аватар для blondino4ka_milk
 
Регистрация: 02.03.2010
Сообщений: 59
По умолчанию

Так TMediaPlayer это стандартный родительский класс, который имеет подклассы, смысл брать его за класс?

Последний раз редактировалось blondino4ka_milk; 09.06.2012 в 20:01.
blondino4ka_milk вне форума Ответить с цитированием
Старый 09.06.2012, 21:44   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
смысл брать его за класс?
Что бы навернуть к нему то что стандарт не предполагает.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 09.06.2012, 22:11   #6
blondino4ka_milk
Пользователь
 
Аватар для blondino4ka_milk
 
Регистрация: 02.03.2010
Сообщений: 59
По умолчанию

Это получается допустим я хочу OpenDialog который сразу папку добавляет с треками, я должна в Unit2

Код:
unit Unit2;

interface

uses SysUtils;

type

  TMediaPlayer = class(TObject)
  private
	mp3Folder: string;
  public
  
  procedure btnOpenFolderClick;
  end;
implementation
procedure TMediaPlayer.btnOpenFolderClick;
begin
mp3Folder := BrowseDialog('Choose a folder with mp3 files', BIF_RETURNONLYFSDIRS);
if mp3Folder = '' then Exit;
lbFileName.Caption := mp3Folder;
FillMP3FileList(mp3Folder, lbPlayList.Items);
end;
end.
Вроде что то этого?
blondino4ka_milk вне форума Ответить с цитированием
Старый 09.06.2012, 22:31   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Да. Но про наследование не забывай:
Код:
TMediaPlayer = class(MPlayer.TMediaPlayer)
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 10.06.2012, 22:23   #8
blondino4ka_milk
Пользователь
 
Аватар для blondino4ka_milk
 
Регистрация: 02.03.2010
Сообщений: 59
По умолчанию

Что то у меня не получилось создать класс(
blondino4ka_milk вне форума Ответить с цитированием
Старый 10.06.2012, 22:24   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Выкладывай соображения - одна голова хорошо, а форумчане тут добрые
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 10.06.2012, 22:42   #10
blondino4ka_milk
Пользователь
 
Аватар для blondino4ka_milk
 
Регистрация: 02.03.2010
Сообщений: 59
По умолчанию

Как я понимаю, класс он должен иметь смысл.
Класс TMediaPlayer подродитель класса Mplayer(т.е. это библиотека стандартная имеющая всякие переменые, ф-ции, переменные, класс сам имеет свойства и методы)- имеет такие классы как - Play, Pause(который не работает вроде, работает как Stop), Stop, Prev, Next и ещё наверно какие-то.
Получается мне нужно присвоить компоненте TMediaPlayer не хватающей ей выполняющей ф-ции такую как трек играет и прогрессбар передвигается, либо при перемещении ползунка трек перематывается, тут то я думаю TrackBar это получается тоже как класс, так значит мне класс надо не к TMediaPlayer присваивать а к TrackBar?

Последний раз редактировалось blondino4ka_milk; 10.06.2012 в 22:47.
blondino4ka_milk вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создать класс Cuda Общие вопросы C/C++ 4 30.05.2012 23:54
Cоздать класс жидкость. определить конструкторы деструкторы и функцию печати. создать публик производный класс. (С++) Динар Габбасов Помощь студентам 0 28.05.2012 18:44
Delphi - создать свой класс Електроник Помощь студентам 18 18.03.2011 18:06
Описать класс-родитель и класс-потомок. Delphi 7 Andrew_M Помощь студентам 0 15.01.2011 14:42
Delphi - Создать класс для вычисления суммы... Danara Помощь студентам 2 26.10.2010 13:03