Bonjour,
en gros quand je double clic sur un filelistbox, je veux que le mdiaplayer1 le lise, si c'est un mp3 il n'y a pas d'affichage mais si c'est un avi par exemple, je veux qu'il le lise dans un panel4, mais si j'ai lu une autre video avant ou bien une musique avant, au lieu de s'afficher dans le pannel, elle s'affiche dans une autre fenetre oO bizard...

au double clic sur le filelistbox :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
void __fastcall TForm1::FileListBox1DblClick(TObject *Sender)
{
    int i;
    for (int i = 0; i < FileListBox1->Items->Count; i++)
    {
         if (FileListBox1->Selected[i]) Position = i;
    }
    PlayFileList(); // lecture de la liste des fichiers dropés
}
la fonction playfile list :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
void __fastcall TForm1::PlayFileList()
{
  int i;
  AnsiString MPError;
  TRect rec;
  rec.Left=0;
  rec.top=0;
  rec.Bottom=Panel4->Height;
  rec.right=Panel4->Width;
  for ( i = Position; i < FileListBox1->Items->Count; i++)
    {
      if (Position < FileListBox1->Items->Count )
      {
        MediaPlayer1->FileName = FileListBox1->Items->Strings[Position];
        MediaPlayer1->StartPos=0; //repositionne le départ de lecture à 0
        ScrollBar1->Position= 0;  // idem pour le curseur
        MediaPlayer1->Display = Panel4;
        try
          {
          MediaPlayer1->Open();
          MediaPlayer1->DisplayRect=rec;
          Timer1->Enabled=true;
          MediaPlayer1->Play();
          PlayLength();
          }
        catch (...)
        {
        MPError = "Error " + IntToStr(MediaPlayer1->Error) + ": " + MediaPlayer1->ErrorMessage;
        Application->MessageBox(MPError.c_str(),NULL, MB_OK);
        }
 
        StatusBar1->Panels->Items[0]->Text = FileListBox1->Items->Strings[Position];
        StatusBar1->Panels->Items[1]->Text = Position;
        // affichage index
       }
     }
}
PS: quand je passe d'une video a une musique, sur le pannel il y a toujours l'image, et que je lit une musique, je fais quand meme le display, ca vient peut etre de la je sais pas, et pour cleaner le panel4, je fais comment? pas de free...

Des idées peut etre?

en gros pour l'affichage dans le pannel il faut regarder ca :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
TRect rec;
rec.Left=0;
rec.top=0;
rec.Bottom=Panel4->Height;
rec.right=Panel4->Width;
MediaPlayer1->FileName = FileListBox1->Items->Strings[Position];
MediaPlayer1->Display = Panel4;
MediaPlayer1->Open();
MediaPlayer1->DisplayRect=rec;
Timer1->Enabled=true;
MediaPlayer1->Play();