TURBO PASCAL |
Новости
|
Просмотр списка файлов
Ниже приводится программа, в которой показано, как можно создать и использовать диалоговое окно для выбора файлов из любого каталога. В пример включены лишь минимальные средства, с помощью которых на экране формируется окно выбора файлов и окно с сообщением о конкретном выборе (см. рис.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; {Создаем окно:} R.Assign (17, 4 ,63, 14 ); W := New(PDialog, Init (R, 'Текущий каталог:')); {Вставляем в окно TListBox:} with W do begin RR.Assign(44,1,45,9) ; В := New(PScrollBar, Init(RR)); Insert (B) ; R.Assign (1, 1,44,9) ; P:= New(PMyListBox, Init (R, 3 ,B) ) ; P.NewList(L) ; Insert (P) end ; DeskTop . Insert (W) ; {Помещаем окно на экран} Inherited Run {Ждем команду Alt-X} end; {TMyApp.Run} {-------------------} Function TMyListBox. Valid; {Помещает в Foc имя выбранного файла} begin Foc := PString(L.At (Focused)); Valid := True end ; {TMyL stBox .Valid} Destructor TMyApp.Done; {Выводит имя выбранного файла} var R: TRect; begin R.Assign(20, 15, 60,22) ; MessageBoxRect(R,#3' Выбран файл '+Foc, NIL, $402); Inherited Done end {TMyApp.Done}; {-----------------} var P: TMyApp; begin P. Init; P. Run; P. Done end. Окно TListBox управляется мышью и клавишами. В частности, клавишами смещения курсора можно выбрать нужный файл, клавишами PgUp, PgDn листать окно со списком. Работают также клавиши End, Home, Ctrl-PgUp, Ctrl-PgDn. В момент обращения к методу TMyApp.Done вызывается функция TMyListBox. Valid, которая определяет номер вьщеленного файла (этот номер хранится в поле TListBox.Focused) и переписывает имя этого файла из коллекции в глобальную переменную Foc.
|
(с)Все права защищены По всем интересующим вопросам прошу писать на электронный адрес |