Elektroda.pl
Elektroda.pl
X
Elektroda.pl
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[Delphi]ListBox

20 Sie 2007 20:45 5726 3
  • Poziom 17  
    Witam!
    Mam listę (ListBox) do której wczytuję utwory za pomocą przycisku oto kod
    Code:
    procedure TForm1.Button1Click(Sender: TObject);
    
    begin
       if OpenDialog.Execute then
          MediaPlayer.FileName :=OpenDialog.FileName;
         ListBox.Items.Add(ExtractFileName(OpenDialog.FileName)); 
    end;


    Mam na liście te utwory które załaduję za pomocą Button1 i klikam sobie na utwór z listy :

    procedure TForm1.ListaClick(Sender: TObject);
    begin
    MediaPlayer.FileName := Lista.Items;
    MediaPlayer.Open;
    MediaPlayer.Play;
    end;
    Wszystko działa jest tylko jeden mankament że po załadowaniu utworów z różnych folderów program się wysypuje .Jak ładuje utwory z jednego folderu wszystko jest Ok wystarczy że załaduję z 2 różnych to zaraz wyskakuję bład .Coś trzeba tu poprawić ,ale na razie nie mam koncepcji ,dlatego proszę o pomoc[/code]
  • VIP Zasłużony dla elektroda
    Witam, kolega do listy wpisuje same nazwy plików. Program nie wie w jakim katalogu się znajdują, więc musi kolega przechowywać w programie jeszcze informacje o katalogach.

    BTW, może lepiej połączyć wszystki wątki dotyczące kolegi projektu w jeden ?

    Pozdrawiam, Krzysztof.
  • Poziom 17  
    A może by tu trzeba zastosować funkcję ExtractFileName ?
  • Pomocny post
    Poziom 42  
    trzeba by było zrobić tak:

    Cytat:
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    if OpenDialog.Execute then
    MediaPlayer.FileName :=OpenDialog.FileName;
    ListBox.Items.Add(OpenDialog.FileName);
    end;


    ale to spowoduje oczywiście że w listboxie będą widoczne nie tylko nazwy plików ale również ich ścieżki i wtedy będzie wszystko działało poprawnie. Natomiast sam listbox dla oka będzie "brzydki" bo jak ścieżki będą długie to nie będzie nawet widać nazwy pliku.

    jak sobie z tym poradzić? zapewne jest na to 1.000.000 różnych sposobów mi na szybko przychodzi jeden z nich do głowy:

    Cytat:
    var
    sList: TStringList;

    ...
    ... gdzieś w OnCreate formy
    sList := TStringList.Create;

    ...
    ... gdzieś w OnDestroy Formy
    FreeAndNil(sList)


    procedure TForm1.Button1Click(Sender: TObject);
    begin
    if OpenDialog.Execute then
    MediaPlayer.FileName :=OpenDialog.FileName;
    sList.Add(OpenDialog.FileName);
    ListBox.Items.Add(ExtractFileName(OpenDialog.FileName));
    end;

    a potem:

    procedure TForm1.ListaClick(Sender: TObject);
    begin
    MediaPlayer.FileName := sList.Strings(Lista.itemIndex);
    MediaPlayer.Open;
    MediaPlayer.Play;
    end;



    oczywiście musisz sam zadbać aby zawartość stringlist sList oraz lista itemsów ListBoxa zawsze się zgadzały. Przy dodawaniu pozycji już już to masz natomiast jeśli będziesz usuwał jakąś pozycję z ListBoxa to tę samą pozycję musisz jednocześnie usunąć ze stringlisty sList

    oczywiście można by to było jeszcze zrobić za pomocą zdefiniowania jakiejś tablicy rekordów itp itd - no mówię na milion sposobów i prostszych i bardziej skomplikowanych ale za to fajniej wyglądających - a to jest jeden z wielu

    pozdrawiam