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

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

Вернуться   Форум программистов > C/C++ программирование > C++ Builder
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.02.2017, 15:39   #1
Ednikbod
Пользователь
 
Регистрация: 13.10.2015
Сообщений: 21
По умолчанию Программное управление кнопками компонента TMediaPlayer

Компилятор у меня Borland builder 6, проигрыватель из группы компонентов System. При программировании всех кнопок кнопки Next и Previous почему-то дублируют кнопку Play. Почему? Ведь это разные кнопки?
Если оставить "пуск", "паузу" и "стоп" по умолчанию (не программировать), а программировать только Next и Prev, то "пуск" вообще не работает, а воспроизведение включается кнопкой Next - то есть дублируется. Почему всё это? Почему кнопки не автономны?

Вот код:

Код:
//---------------------------------------------------------------------------

#include <vcl.h>
#include<stdio.h>
#include<iostream.h>
#include<conio.h>
#include <Windows.h>

#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
int main();
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::N2Click(TObject *Sender)
{
int z;
OpenDialog1->Execute();
MediaPlayer1->FileName = OpenDialog1->FileName;
MediaPlayer1->Open();
ListBox1->Items->AddStrings(OpenDialog1->Files);
}
//---------------------------------------------------------------------------

void __fastcall TForm1::ListBox1Click(TObject *Sender)
{
MediaPlayer1->FileName = ListBox1->Items->Strings[ListBox1->ItemIndex];
MediaPlayer1->Open();
}
//---------------------------------------------------------------------------

void __fastcall TForm1::N3Click(TObject *Sender)
{
 ListBox1->Clear();
}
//---------------------------------------------------------------------------


void __fastcall TForm1::Panel1Click(TObject *Sender)
{
MediaPlayer1->DisplayRect = Rect(0,0,497,297);        
}
//---------------------------------------------------------------------------

void __fastcall TForm1::MediaPlayer1Click(TObject *Sender,
      TMPBtnType Button, bool &DoDefault)
{
 DoDefault = false;
 switch(Button)
{
 case ::btPlay:
 MediaPlayer1->Play();
 break;
 case ::btPause:
 MediaPlayer1->Pause();
 break;
 case ::btStop:
 MediaPlayer1->Stop();
 break;
 case btStep:
 MediaPlayer1->Position = MediaPlayer1->Position + 25000;
 MediaPlayer1->Step();
 MediaPlayer1->Play();
 break;
 case btBack:
 MediaPlayer1->Position = MediaPlayer1->Position - 25000;
 MediaPlayer1->Back();
 MediaPlayer1->Play();
 break;
 case Comctrls::btNext:
 MediaPlayer1->Next();
 break;
 case Comctrls::btPrev:
 MediaPlayer1->Previous();
 break;
}
}
//---------------------------------------------------------------------------
Ednikbod вне форума Ответить с цитированием
Старый 13.02.2017, 15:56   #2
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Скинь весь проект и расскажи, что по твоему должно происходить при нажатии на проблемные кнопки.
ura_111 вне форума Ответить с цитированием
Старый 13.02.2017, 20:58   #3
Ednikbod
Пользователь
 
Регистрация: 13.10.2015
Сообщений: 21
По умолчанию

Вот весь код. Кнопки Step (шаг вперёд на несколько кадров) и Back (шаг назад) работают нормально. А проблемные кнопки: Next (воспроизведение должно переключаться на следующий трек) и Previous (на предыдущий трек) - их я в код не внёс, потому что они не работают (дублируют кнопку Play), их код пробовал делать такой:
Код:
case btNext:
 MediaPlayer1->Next();
 break;
,
и такой:
Код:
case Comctrls::btNext:
 MediaPlayer1->Next();
 break;
,
и такой:
Код:
case ::btNext:
 MediaPlayer1->Next();
 break;
,
и просто оставлять по умолчанию (не программировать) - всё без толку.


А вот код всей программы:

Код:
//---------------------------------------------------------------------------

#include <vcl.h>
#include<stdio.h>
#include<iostream.h>
#include<conio.h>
#include <Windows.h>

#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
int main();
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::N2Click(TObject *Sender)
{
int z;
OpenDialog1->Execute();
MediaPlayer1->FileName = OpenDialog1->FileName;
MediaPlayer1->Open();
ListBox1->Items->AddStrings(OpenDialog1->Files);
}
//---------------------------------------------------------------------------

void __fastcall TForm1::ListBox1Click(TObject *Sender)
{
MediaPlayer1->FileName = ListBox1->Items->Strings[ListBox1->ItemIndex];
MediaPlayer1->Open();
}
//---------------------------------------------------------------------------

void __fastcall TForm1::N3Click(TObject *Sender)
{
 ListBox1->Clear();
}
//---------------------------------------------------------------------------


void __fastcall TForm1::Panel1Click(TObject *Sender)
{
MediaPlayer1->DisplayRect = Rect(0,0,497,297);        
}
//---------------------------------------------------------------------------

void __fastcall TForm1::MediaPlayer1Click(TObject *Sender,
      TMPBtnType Button, bool &DoDefault)
{
 DoDefault = false;
 switch(Button)
{
 case ::btPlay:
 MediaPlayer1->Play();
 break;
 case ::btPause:
 MediaPlayer1->Pause();
 break;
 case ::btStop:
 MediaPlayer1->Stop();
 break;
 case btStep:
 MediaPlayer1->Position = MediaPlayer1->Position + 25000;
 MediaPlayer1->Step();
 MediaPlayer1->Play();
 break;
 case btBack:
 MediaPlayer1->Position = MediaPlayer1->Position - 25000;
 MediaPlayer1->Back();
 MediaPlayer1->Play();
 break;
 default:
 DoDefault = true;
 break;
}
}
//---------------------------------------------------------------------------

Последний раз редактировалось Ednikbod; 13.02.2017 в 21:07. Причина: Небольшая поправка.
Ednikbod вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программное управление ADO Bad_Shuriks БД в Delphi 3 14.11.2016 09:00
Программное управление TWebBrowser Pcrepair Общие вопросы Delphi 11 20.04.2013 13:01
Сервис - программное управление. Air Win Api 3 23.06.2008 13:09
Управление кнопками со стрелками eks-s Общие вопросы Delphi 6 19.01.2008 02:23