Стандартная демка по работе с потоками:
X:\Borland\Delphi7\Demos\Threads\
+ найди какую-нибудь доку по работе с потоками.
Что-нибудь на подобие того, что тебе надо можно примерно сделать так:
1. File\New\Aplication
2. File\New\Other... -> ThreadObject, на вопрос о названии класса вводишь чтонибудь типа TScanThread
Получился модуль с заготовкой для объекта.
3. В этом объекте добавляешь новое public свойство CurScanDir:string, например
4. В стандартном методе Execute пишешь свой код по сканированию дерева каталогов и обязательно добавляешь присваивание свойству CurScanDir текущий сканируемый каталог, или файл, то, что нужно отображать.
5. В модуле главной формы вверху, где всякие uses Windows, Forms и т.п. добавляешь название своего модуля с потоком.
6. В Главной форме (TForm1, по умолчанию) в секции private описываешь что-то типа MyScanThread:TScanThread.
7. Добавляешь на форму таймер, устанавливаешь интервал примерно в 300-500, т.е. где-то 2-3 раза в секунду обновление - обычно нормально смотриться.
8. В обработчике таймера пишешь примерно так:
if Assigned(MyScanThread)
then StatusBar1.Panels[0].Text:=MyScanThread.CurScanDir;
else StatusBar1.Panels[0].Text:='Сканирование не проводилось';
9. Теперь запуск потока и сканирования, например по нажатию на кнопку пишешь в обработчике нажатия кнопки что-нибудь типа:
if Assigned(MyScanThread) then exit; //предотвращение повторного сканирования
MyScanThread:=TScanThread.Create(False);
Ну вот, примерно так.