- •Работа с кнопками
- •Компонент Edit
- •2. Событие KeyPress возникает при нажатии алфавитно-
- •Текст (компоненты tLabel и tStaticText)
- •Компонент ListBox
- •Компонент ComboBox
- •Компонент CheckBox
- •Компонент RadioGroup
- •Класс tStringList
- •Компонент ImageList
- •Invalidate(); //Перерисовываем.
- •Создание главного меню
- •Работаем с контекстным меню (tPopupMenu)
- •Значок на панели задач (компонент tTrayIcon)
- •Работаем со сплиттером
- •Компонент Panel
- •Совместное использование сплиттера и Panel
- •Компонент HotKey
- •Компонент StatusBar
- •Назначение формы главной
- •Рисование на форме
- •Компонент ActionList
- •Работаем с двумя формами
- •Используем api-функции
- •Окна сообщений
- •Работаем с сетью. Клиент (класс tClientSocket)
- •Работаем с сетью. Сервер (класс tServerSocket)
- •Пересчитываем компоненты на форме
- •Форма - добавление методов
- •Форма - добавление полей
- •Форма - добавление свойств
Компонент 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);