Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
70
Добавлен:
27.03.2015
Размер:
379.39 Кб
Скачать

Компонент ImageList

Компонент ImageList предназначен для хранения набора однотипных изображений и

расположен на вкладке Win32. Конечно, изображения можно хранить и по отдельности - но в наборе удобнее. ImageList можно рассматривать как массив изображений- в частности, к элементам такого набора вы можете обращаться по индексу.

Перенесите его на форму. Сейчас в нашем ImageList изображений нет. Давайте добавим несколько изображений. Для этого сделайте двойной щелчок на расположенном на форме компоненте ImageList1. Появится диалоговое окно для работы с изображениями.

Естественно, что для добавления изображения используется кнопка Add. При нажатии на нее появляется стандартное окно для выбора файла. Выберите какой-нибудь bmp-файл с изображением размера 32 на 16. Естественно, что такой файл надо предварительно создать.В файле должно быть 2 изображения 16 на 16. Нажмите на кнопку Open. Так как у нас 2 изображения, то должно появится окно с вопросом, предлагающим разделить нашу картинку на две (на две, так как картинки должны быть квадратные). Отвечаем, естественно, да:

Теперь в нашем диалоговом окне появилось 2 изображения:

Назначение остальных кнопок понятно. Отметим все же, что удалять можно и отдельные изображения из загруженного файла - т. е. фактически из графического файла можно взять только нужные картинки.

Изображения в диалоговом окне можно менять местами (перетаскиванием мышью).

Закройте диалоговое окно. Давайте теперь используем наш ImageList. Добавьте на форму компонент Image с вкладки Additional Палитры компонентов и обычную кнопку. В обработчик для щелчка по кнопке внесите следующий код:

void __fastcall TForm1::Button2Click(TObject *Sender)

{

static int index=0;

//Выводим очередное изображение в Image1.

ImageList1->GetBitmap(index, Image1->Picture->Bitmap);

index++; //Берем индекс следующей картинки.

Invalidate(); //Перерисовываем.

}

Теперь если вы запустите программу и будете щелкать на кнопке, то в Image1 будут последовательно появляться изображения из ImageList1 - сначала с индексом 0, потом с индексом 1 и т. д. В приведенном фрагменте используется метод GetBitmap класса TImageList. Первым параметром он берет номер картинки из ImageList (нумерация идет с нуля), вторым - куда эта картинка пишется. У нас она пишется в Image1.

Вообще говоря, довольно-таки много компонентов имеют свойство Images. Это свойство как раз и имеет тип ImageList. Например, если вы разместите на форме компонент MainMenu, то для этого свойства вы сможете выбрать все ImageList'ы:

Для отдельных же пунктов меню вы можете выбирать изображения из ImageList по индексу.

OpenDialog

Часто в программах используют стандартные диалоги для открытия и сохранения файлов соответственно. Для этого нужно разместите на форме компоненты OpenDialog и SaveDialog (с вкладки Dialogs):

Код может быть таким (читаем данные из файла):

if(OpenDialog1->Execute())

Memo1->Lines->LoadFromToFile(SaveDialog1->FileName);

или таким (пишем данные в файл):

if(SaveDialog1->Execute())

Memo1->Lines->SaveToFile(SaveDialog1->FileName);