TSearchRec SearchRec; // результат поиска файла, компонент входит в библиотеку VCL
Практическая работа №2
Тема: Использование компонента «список» в приложениях
Цель: Освоить приемы использования компонента список, а также компонента изображений в приложениях, разрабатываемых средствами C++Builder.
Ход работы.
1. Средствами C++Builder создайте форму и расположите на ней компоненты TListBox, TButton(группа Standard на Палитре Инструментов), TImage(группа Additional на Палитре Инструментов). Примерный вид формы:
2. Прежде всего в файл реализации формы Unit1.cpp добавьте директивы
#include <jpeg.hpp> - для работы с изображениями формата jpeg(аналог uses jpeg)
#include <filectrl.hpp> - для доступа к функциям поиска FindFirst и FindNext, которые будут использованы для формирования списка
3. При нажатии на кнопку «Папка», на экран нужно вывести диалоговое окно, в котором пользователь сможет выбрать папку с изображениями. Это можно сделать с использованием функции SelectDirectory, которая вызывает окно стандартного диалога
Таким образом, для кнопки Button1 создайте функцию-обработчик события OnClick и добавьте в нее следующий программный код:
/*в случае открытия окна стандартного диалога, после того как пользователь выберет нужную папку, список имен файлов из папки будут загружены в компонент ListBox, и, при выборе файла, его имя будет отображаться в строке заголовка главного окна программы*/
if (SelectDirectory("Выберите каталог", "",Path ) )
{
Path = Path + "\\";
Form1->Caption = "Просмотр иллюстраций - " + Path;
FillListBox();
}
4. Для формирования списка файлов в компоненте ListBox используется FillListBox( ) и переменная Path, для хранения имени папки с изображениями. Для начала опишите функцию и переменную в заголовочном файле Unit1.h.
class TForm1 : public TForm
{
__published: // IDE-managed Components
TListBox *ListBox1;
TImage *Image1;
TButton *Button1;
void __fastcall ListBox1Click(TObject *Sender);
void __fastcall Button1Click(TObject *Sender);
private: // User declarations
__fastcall int FillListBox( );
AnsiString Path;
public: // User declarations
__fastcall TForm1(TComponent* Owner);
};
Затем в файле Unit1.cpp в конструктор формы, т.е. функцию TForm1 добавьте вызов функции FillListBox( ), чтобы сформировать список изображений, которые находятся в папке с exe-файлом.
// Конструктор
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
// т.к. значение переменной Path равно "пустая строка",
// то будет сформирован список иллюстраций текущего
// каталога, т.е. того, в котором находится exe-файл
this->FillListBox();
}
В этом же файле напишите следующую реализацию функции FillListBox( ):
// Сформировать список jpg-файлов
__fastcall TForm1::FillListBox( ){
TSearchRec SearchRec; // результат поиска файла, компонент входит в библиотеку VCL
int r;
r = FindFirst(Path + "*.jpg",faAnyFile,SearchRec);