
- •Программирование для 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. Рисование на форме
Урок 23. Пересчитываем компоненты на форме
На этом уроке мы с вами посмотрим, как можно перечислить все элементы на форме. Это может оказаться полезным для разных задач - например, вы хотите одновременно изменить положение всех элементов формы просто определить, есть ли среди элементов элемент с определенными свойствами.
Для нашей задачи мы будем использовать свойство Controlsформы. Это свойство представляет из себя набор всех дочерних элементов формы - кнопок,edit'ов,label'ов и т. п. Каждый элемент этого набора имеет типTControl(родительский тип для всех элементов).
Вот пример кода, который сдвигает все элементы на форме к левому краю формы:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
//Переменная для элемента формы
TControl*child;
for (int i = 0; i < Form1->ControlCount; i++){
//Берем очередной элемент
child=Form1->Controls[i];
//Сдвигаем очередной элемент
child->Left=10;
}
}
Как вы видите, мы получаем i-элемент на форме просто указав его индекс:
...
Form1->Controls[i];
...
Нумерация при этом, как и следовало ожидать, идет с нуля. Для получения же общего количества элементов мы используем свойство ControlCount:
...
i < Form1->ControlCount;
...
Урок 24. Форма - добавление методов
У формы могут быть собственные методы. Для их быстрого добавления сделайте следующие действия:
В дереве классов (оно располагается слева от окна кода) выберите нужный класс формы и щелкните на нем правой кнопкой мыши для показа контекстного меню. В контекстном меню выберите NewMethod:
В появившемся диалоговом окне AddMethodзадайте имя метода, возможные параметры, тип возвращаемого значения, модификаторы доступа (private,publicи т. п.) и другие характеристики:
Нажимите на OKдля закрытия окна или наApplyдля добавления еще одного метода.Созданная нами заготовка для метода появится в дереве классов:
Все. Теперь ослось только написать код метода в созданной заготовке.
Урок 25. Форма - добавление полей
Поля - это внутрение переменные класса. Для добавления поля надо щелкнуть правой кнопкой мыши на имени формы в дереве классов (слева от окна кода) и в появившемся контекстном меню выбрать New Field:
В появивщемся окне Add Field задаем имя поля, тип и область видимости:
При необходимости не закрывая это окно можно добавить несколько переменных (полей) как в класс одной формы, так и в несколько. Для этого надо нажать на кнопку Apply. При этом в классе сразу создастся переменная заданного типа с заданным именем и в диалоговом окне можно будет задавать следующую переменную.
Добавленная нами переменная появится в дереве классов:
Урок 26. Форма - добавление свойств
Для добавления свойства щелкаем на классе правой кнопкой мыши и появившемся контекстном меню выбираем NewProperty:
Появится окно AddProperty. В этом окне в можете задать свойство разным способом. При любом способе мы задаем имя свойства и его тип.
Способ первый - можно создать свойство, привязанное к определенному полю. Например, к полю num, заданному на прошлом уроке. Для этого мы должны в нашем диалоговом окне выбрать название поляnumвcombobox'ахReadsиWrites():
После нажатья на OKнаше свойство появится на в дереве классов:
Второй способ - не использовать для нашего свойства готовое поле, а позволить C++Builder'у автоматически создать новое. Для этого мы после задания имени и типа нового свойства должны поставить галочкуcreatefield:
После нажатия на OKновое свойство и соответствующее ему поле появятся в классе нашей формы:
__published:
int FData; // User declarations
public:
...
__property int Data = { read=FData, write=FData };