Естественно, исчезают. Ты ведь в начале процедуры очищаешь список (ListBox1.Clear). Однако, при добавлении файлов из нескольких папок у тебя возникнет еще одна проблема. А именно, файлы у тебя в список добавляются без пути, т.о. неизвестно из какой папки добавлен конкретный файл. Тебе надо их хранить с полным путем, а для отображения выводить только короткое имя (или вообще, название, если оно есть, например, в ID3-тегах).
Я бы к каждому итему в ListBox'е "подвешивал" бы объектик, в котором хранил бы полный путь и разную дополнительную информацию.
И еще, я бы переписал добавление файлов. У тебя несколько абсолютно одинаковых кусков кода, что уже говорит о том, что этот участок надо отрефакторить. Это раз. Два. при добавлении файлов у тебя они будут сгруппированы по типу, а не по имени или как они лежат на диске. поэтому поиск надо делать по маске *.*, а проверять соответсвие по типам с помощью функции MatchesMask (модуль Masks).
|