ListBox verliert Focus



  • Hallo. Wie schon im Titel beschrieben verliert meine Listbox beim letzten Titel in der Listbox den Focus. Das ganze ist in Verbindung mit TMediaPlayer.

    Hier mal mein Code

    void __fastcall TForm1::ImgBtPlayClick(TObject *Sender)
    {
      Timer1->Enabled = true;
      MediaPlayer1->FileName = PlayList->Items->Strings[PlayList->ItemIndex];
      MediaPlayer1->Open();
      MediaPlayer1->Play();
    }
    void __fastcall TForm1::ImgBtNextClick(TObject *Sender)
    {
      PlayList->ItemIndex++;
      ImgBtPlayClick(Sender);
      if (PlayList->ItemIndex == PlayList->Items->Count -1)
        PlayList->ItemIndex = -1;
      Label1->Caption = IntToStr(StrToInt(PlayList->ItemIndex)+1);
    }
    

    Beim letzten Titel geht der Eintrag verloren. Somit auch die Nummer des abgespielten Titels. Kann mir jemand einen Tip geben?

    Danke im Voraus

    PS: wenn ich die 2 Zeilen auskommentiere, dann geht es problemlos. Der Fehler muss in der Anweisung liegen.

    if (PlayList->ItemIndex == PlayList->Items->Count -1)
        PlayList->ItemIndex = -1;
    


  • PlayList->SetFocus();



  • Hallo Christian,

    Danke für die Antwort. Ist natürlich eine Möglichkeit den Focus Manuell zu setzen. Wenn ich aber nun 10 Lieder hinzufüge, dann ist der Focus erst beim 10 Lied weg.
    Gibt es dafür eine Erklärung?

    Danke



  • Habs gerade behoben.

    Die Reihenfolge der Zeilen ist entscheidend 🙂

    void __fastcall TForm1::ImgBtNextClick(TObject *Sender)
    {
      if (PlayList->ItemIndex == PlayList->Items->Count -1)
        PlayList->ItemIndex = -1;
      PlayList->ItemIndex++;
      ImgBtPlayClick(Sender);
      Label1->Caption = IntToStr(StrToInt(PlayList->ItemIndex)+1);
      Label2->Caption = IntToStr(PlayList->ItemIndex);
    }
    

Anmelden zum Antworten