Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > Не отображаются открытые файлы в ListBox


Автор: Ednikbod 11.2.2017, 21:51
Помогите! Не пойму, в чём дело.
Делаю проигрыватель, взятый из группы компонентов System. 
Компилятор у меня Borland builder 6. Файлы открываются 
нормально, воспроизводятся, но в листбоксе не отображаются 
совсем, их не видно. Устал интернет перерывать в поисках 
ответа. Вот код (весь, целиком):

Код

//---------------------------------------------------------------------------

#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();
for (z=0;z<ListBox1->Items->Count;z++)
ListBox1->Items->AddStrings(OpenDialog1->Files);
}

//---------------------------------------------------------------------------

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


Автор: Ednikbod 12.2.2017, 14:44
Разобрался. Ошибки исправил. Новый вопрос.
Я сделал программно включение некоторых кнопок. Но при попытке запрограммировать кнопки Next и Previous возникает ошибка - такая: [C ++ Error] unit1.cpp (68): E2015 неоднозначность между 'btNext' и 'Comctrls :: btNext'. Что это значит? И можно ли это исправить?

Вот код:

Код

//---------------------------------------------------------------------------

#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 btStep:
 MediaPlayer1->Position = MediaPlayer1->Position + 25000;
 MediaPlayer1->Step();
 break;
 case btBack:
 MediaPlayer1->Position = MediaPlayer1->Position - 25000;
 MediaPlayer1->Back();
 break;
 case btNext:
 MediaPlayer1->Next();
 break;
 case btPrev:
 MediaPlayer1->Previous();
 break;
 default :
 DoDefault = true;
 break;
}
}
//---------------------------------------------------------------------------


Автор: xvr 13.2.2017, 10:57
Цитата(Ednikbod @  12.2.2017,  14:44 Найти цитируемый пост)
 неоднозначность между 'btNext' и 'Comctrls :: btNext'. Что это значит?

Это значит, что константа btNext описана на глобальном уровне и внутри namespace Comctrls (и этот namespace подключен через using namespace Comctrls)
Цитата

И можно ли это исправить?
Можно. Нужно явно указать, откуда брать константу. Так - ::btNext либо так - Comctrls :: btNext

Автор: Ednikbod 13.2.2017, 14:52
Большое спасибо за совет, он помог!
Но странная вещь: я сделал управление всеми кнопками программно. И кнопки Next и Previous почему-то дублируют кнопку Play. А если оставить "пуск", "пауза" и "стоп" по умолчанию, то кнопка "пуск" совсем не работает, а воспроизведение включается кнопкой Next. Казалось бы: это разные кнопки, они не должны дублироваться?

Вот информация об ошибках:
[C++ Error] Unit1.cpp(79): E2172 Duplicate case
[C++ Error] Unit1.cpp(80): E2188 Expression syntax
[C++ Error] Unit1.cpp(82): E2172 Duplicate case
[C++ Error] Unit1.cpp(83): E2188 Expression syntax

Вот эта часть кода:

Код

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;
}
}


Первые три кнопки сделаны без Comctrls, потому что возникает ошибка при компиляции.

Автор: xvr 13.2.2017, 21:00
Похоже коды bt* не соответствуют действительности. Сравните чему равны коды в Comctrls и глобальные

Автор: Ednikbod 13.2.2017, 21:31
Простите, пожалуста. А как это сравнить? Где находится эта Comctrls? Я ещё полный новичок в программировании, только учусь!

Автор: xvr 14.2.2017, 10:22
У вас параметр Button имеет тип TMPBtnType ( http://docs.embarcadero.com/products/rad_studio/delphiAndcpp2009/HelpUpdate2/EN/html/delphivclwin32/MPlayer_TMPBtnType.html )
Это вообще не comctrls и не глобальные kb*.
Это должны быть константы MPlayer::kb*


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)