ListBox -(playlista) wyświetlanie informacji o pliku audio

0

Znajomi, którzy prowadzą radio internetowe poprosili mnie o napisanie programu do grania, który pomoże im zastąpić Winampa. Na rynku są dostępne takie programy, jak Dynamix, AudioVault, Dalet, ale one kosztują kupę siana.

Wiele rzeczy mam już napisanych, ale nie wiem, jak zrobić dwie.

  1. Wyświetlanie playlisty (wykorzystanie komponentu ListBox)
    Wygląd playlisty w załączniku.

Ważnym jest, aby w playliście wyświetlana była godzina emisji danego elementu. Program od momentu naciśnięcia PLAY oblicza długość każdego pliku i pokazuje nam o której zostanie on zagrany.

Do każdego pliku audio tworzony będzie o identycznej nazwie plik tekstowy opisujący dany utwór. Zawarte będą w nim informacje o:

;##### OPIS PLIKU AUDIO ####

Typ=Muzyka ;Określa typ pliku np. muzyka (kolor niebieski), jingiel (kolor zielony)
Autor=Steve Wonder
Tytul=Part Time Lover
Total=02:46 ;Całkowity czas trwania
Int=10 ;Czas intro - od początku do pierwszych słów
Out=03 ;Czas Outro - od ostatniego słowa do końca

I moje pytanie brzmi, jak to zrobić, aby te dane ładowane były do jednego wiersza elementu ListBox?

  1. Przechodzenie między jednym utworem, a drugim

Istotnym elementem jest płynne, delikatne ustawienie przechodzenia między jednym plikiem audio, a drugim.

Program działa na dwóch podstawowych playerach, które odtwarzają elementy audio z playlisty.
Chodzi o to, aby utworzyć okienko, w którym, wyświetlałoby się widmo dwóch zaznaczonych plików audio, przy których miało by być zastosowane przejście. Np plik pierwszy ma łączoną długość 2:43, od 2:38 zaczyna się wyciszać i mogę ustawić, że jak będzie 2:40 zacznie grać drugi plik na drugim playerze.

0

Czy to co jest w załączniku, to finalna wersja interfejsu, czy tylko przykład?

I moje pytanie brzmi, jak to zrobić, aby te dane ładowane były do jednego wiersza elementu ListBox?

Jest kilka rozwiązań, które można tu zastosować; Najprostsze to stworzenie rekordu z wszystkimi wymienionymi polami, a przy dodawaniu nowej pozycji do komponentu, korzystasz z metody AddObject, podając w drugim argumencie pointer na utworzony i uzupełniony rekord; W ten sam sposób możesz skorzystać z klasy zamiast rekordu, utworzyć obiekt i wrzucić go tą samą metodą do komponentu;

W metodzie DrawItem korzystasz z rekordu/obiektu i odpowiednio rysujesz wszystkie potrzebne użytkownikowi informacje w itemie, takie jak czasy, tytuł, wykonawca itd.;

Ale to jest najprostsze rozwiązanie, niekoniecznie najlepsze; Osobiście polecałbym trzymać wszystkie dane poza komponentem, aby ten ListBox nie służył do wszystkiego; Trzymaj utwory w odrębnej liście, a przy rysowaniu korzystaj z danych w niej zapisanych; Poza tym ListBox jest dość ubogi i nie posiada kolumn, więc będziesz musiał przy rysowaniu ręcznie obliczać offsety i zabezpieczyć rysowanie przed nakładaniem się tekstu w przypadku, gdy np. tytuł będzie zbyt długi;

Co do pozostałych rzeczy to nie doradzę, bo nie bawiłem się dźwiękiem i na takich bajerach się nie znam.

0

Najprościej - użyj TVirtualStringTree.
Pozwała to wyświetlać nawet drzewa ale dla list też pasuje.

1 użytkowników online, w tym zalogowanych: 0, gości: 1