
- •Программирование для Windows
- •Литература
- •Вам необходимо знать и уметь
- •Первая программа
- •Соглашения операционной системы Windows
- •Вызовы функций Windows
- •Идентификаторы, написанные прописными буквами
- •Новые типы данных
- •Описатели
- •Венгерская нотация
- •Точка входа программы
- •Оконная процедура
- •Регистрация класса окна
- •Создание окна
- •Отображение окна
- •Цикл обработки сообщений
- •Оконная процедура
- •Обработка сообщений
- •Воспроизведение звукового файла
- •Сообщение wm_paint
- •Сообщение wm_destroy
- •Сложности программирования для Windows
- •Синхронные и асинхронные сообщения
- •Думайте о пользователе
- •Лекция3. Приступаем с изучению компонент
- •Урок 4. Класс tObjectи его потомки
- •Урок 5. Работа с кнопками
- •Урок 6. Компонент ActionList
- •Урок 7. Работаем с меню (класс tMainMenu)
- •Урок 8. Работаем с контекстным меню (класс tPopupMenu)
- •Урок 9. Компонент Edit
- •Урок 10. Работаем с двумя формами
- •Урок 11. Текст (компоненты tLabel и tStaticText)
- •Урок 12. Компонент ListBox
- •Урок 13. Компонент ComboBox
- •Урок 14. Используем api-функции
- •Урок 15. Разные MessageBox'ы
- •Урок 16. Компонент CheckBox
- •Урок 17. Компонент RadioButton
- •Урок 18. Класс tStrings
- •Урок 19. Класс tStringList
- •Урок 20. Работаем с сетью. Клиент (класс tClientSocket)
- •Урок 21. Работаем с сетью. Сервер (класс tServerSocket)
- •Урок 22. Компонент ImageList
- •Урок 23. Пересчитываем компоненты на форме
- •Урок 24. Форма - добавление методов
- •Урок 25. Форма - добавление полей
- •Урок 27. Значок на панели задач (компонент tTrayIcon)
- •Урок 28. Работаем со сплиттером
- •Урок 29. Компонент Panel
- •Урок 30. Совместное использование сплиттера и Panel'ей
- •Урок 31. Компонент HotKey
- •Урок 32. Компонент StatusBar
- •Урок 33. Установка главной формы приложения
- •Урок 34. Рисование на форме
Урок 12. Компонент ListBox
Компонент ListBox(список) расположен на вкладкеStandardПалитры Компонентов:
Сейчас мы с вами рассмотрим стандартные операции, которые можно делать с ListBox'ом - добавление новых пунктов, их удаление, поиск нужного пункта, очистка всегоListBox'а и др.
Пункты для нашего ListBox'а хранятся в его свойствеItems. Для задания этого свойства на этапе разработки щелкните на многоточии рядом с ним в Инспекторе объектов:
Появится диалоговое окно StringListEditor, в котором вы и перчатаете нужные вам элементы списка:
Если же вам надо добавить новый пункт на этапе работы программы, то надо воспользоваться методом Addупомянутого свойстваItems:
ListBox1->Items->Add("New String");
Этот метод добавит новый элемент в конец списока. Если же нам надо добавить новый элемент куда-нибудь в середину, то используем метод Insert:
ListBox1->Items->Insert(1,"Roma");
Для очистки всего списка вызываем метод Clear:
ListBox1->Items->Clear();
Если нам надо удалить i-й элементListBox'а, то мы используем методdelete:
ListBox1->Items->Delete(1);
Нумерация элементов списка идет с нуля, так что указанный пример удалит второй сверху элемент (номер у которого будет равен одному).
Определить выделенный элемент списка позволяет свойство ItemIndex. Оно представляет из себя номер выделенного элемента (нумерация идет с нуля). Если ни один элеимент не выделен, то это свойство равно -1. Вот так, например, будет выглядеть код, который при шелчке наListBox'е покажет вMessageBox'е номер элемента, на ктором был произведен щелчок:
void __fastcall TForm1::ListBox1Click(TObject *Sender)
{
ShowMessage(IntToStr(ListBox1->ItemIndex));
}
Если вам надо, чтобы в ListBox'е пользователь имел возможность выделить сразу несколько элментов, то установите свойствоMultiSelectвtrue(по умолчанию оно равноfalse).
Урок 13. Компонент ComboBox
Компонент ComboBox(комбинированный список) расположен на вкладкеStandardПалитры Компонентов:
Этот компонент по своим свойствам очень похож на компонент ListBox. Методы и свойства он имеет почти те же самые. Самое важное из них - это, пожалуй, свойствоItems. Именно в нем и хранятся все строкиComboBox'а. Из отличных отListBox'а свойств выделим свойствоText. Оно дает нам текст в нашемComboBox'е (т.е. то, что пользователь непосредственно видит). Вот так, например, можно добавить напечатанный пользователем текст вComboBox:
ComboBox1->Items->Add(ComboBox1->Text);
Из полезных свойств отметим еще свойство style. Возможные значения для него -csDropDown(ComboBoxс возможностью редактирования),csDropDownList(ComboBoxбез возможности редактирования, т. е. пользователь может выбирать только из существующих элементов),csSimpleи другие. При значенииstyleравнымcsSimpleComboBoxбудет выглядеть приблизительно так:
Урок 14. Используем api-функции
В программах для WindowsнаC++Builder, как правило, всеAPI-функции можно использовать без особых проблем и без дополнительных объявлений иinclude'ов. Вот пример, как можно с помощьюAPI-функций сдвинуть кнопку Пуск на Панели задач:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
HWND hWnd = FindWindow("Shell_TrayWnd", NULL);
HWND hWndBt = FindWindowEx(hWnd, NULL, "Button", NULL);
MoveWindow(hWndBt, 30, 2, 98, 32,TRUE);
}
Разумеется, этот код надо разместить в обработчике нажатия на кнопку на форме. После щелчка на кнопке нашей программы кнопка "Пуск" сдвинется вправо:
Если же вы разместите этот код в консольном приложении, то вам необходимо добавить include'ом файлwindows.h:
#include <windows.h>
int main(int argc, char* argv[])
{
HWND hWnd = FindWindow("Shell_TrayWnd", NULL);
HWND hWndBt = FindWindowEx(hWnd, NULL, "Button", NULL);
MoveWindow(hWndBt, 30, 2, 98, 32,TRUE);
return0;
}
Как правило, этого include'а достаточно для использования любойAPI-функции в консольном приложении.
Некоторые API-функции требуют вWindows-приложениях дополнительныхinclude'ов. Например, функцияPlaySound. Она без проблем будет работать в консольном приложении (если файлwindows.hподключен, разумеется), вWindowsже приложении нужно добавить строчку
...
#include<Mmsystem.h>
...
после чего в вашей программе вы сможете проигрывать с помощью этой функции звуки:
...
PlaySound("LOGOFF.WAV", NULL, SND_FILENAME);
...
Приведенный фрагмент проиграет файл LOGOFF.WAV, который вы должы разместить в папке вашего проекта.
То, что надо подсоединить именно файл Mmsystem.h, выясняем по встроенной справке по функцииPlaySound.