Ниже приводится программа, в которой показано, как можно создать и использовать диалоговое окно для выбора файлов из любого каталога. В пример включены лишь минимальные средства, с помощью которых на экране формируется окно выбора файлов и окно с сообщением о конкретном выборе (см. рис.23. 5).
Для реализации просмотра списка файлов и выбора из этого списка нужного файла в Turbo Vision предусмотрен объект TListBox. Этот объект создает специальное окно скроллера, содержащее одну вертикальную полосу и указатель на текущий элемент. Имена файлов помещаются в коллекцию строк, указатель на которую передается объекту с помощью метода TListBox.NewList.
В программе используются две глобальные переменные, содержащие указатель на коллекцию L и номер выбранного элемента Foc. В объекте TApplication перекрываются методы Run и Done. Новый метод TMyApp.Run создает коллекцию и окно просмотра. Метод TMyApp.Done перед завершением работы программы формирует окно, в котором сообщается имя выбранного из списка файла. Заметим, что это имя помещается в переменную Foc в момент выхода из программы с помощью перекрываемого метода TListBox. Valid.

Рис. 23.5. Окно выбора файлов
{$Х+}
Uses DOS,Objects,App,Views,Dialogs,Drivers,MsgBox;
var
L: PStringCollection; {Коллекция имен файлов}
Foc: String; {Выбранный файл}
type
ТМуАрр = object (TApplication)
Procedure Run; Virtual;
Destructor Done; Virtual;
end ;
PMyListBox =^TMyListBox;
TMyListBox = object (TListBox)
Function Valid(Command: Word): Boolean; Virtual;
end ;
{------------------}
Procedure TMyApp.Run; {Создает диалоговое окно с TListBox}
var
R,RR: TRect;
W: PDialog;
S: SearchRec;
B: PScrollBar;
P: PListBox;
begin {Создаем коллекцию имен файлов:}
L := New(PStringCollection, Init(50,10));
FindFirst('\games\fl9\*.*',Archive,S);
While DosError = 0 do with S,L^ do
begin
Insert(NewStr(Name));
FindNext(S)
end;