- •Содержание
- •4. 5. Контрольные вопросы....................................................................44
- •7. 1. Краткие теоретические сведения..................................................59
- •8. 1. Краткие теоретические сведения...................................................70
- •Введение
- •1. 1. Главное окно
- •2. Лабораторная работа №1 Тема: Ввод и вывод
- •2. 1. Экранная форма (Form)
- •2. 1. 1. Таблица свойств (Form)
- •2. 2. Кнопка (Button)
- •2. 2. 1. Таблица свойств для Button
- •2. 3. Однострочный редактор (Edit)
- •2. 3. 1. Таблица свойств для Edit
- •2. 4. Контрольные вопросы
- •2. 5. Задания к лабораторной работе
- •3. Лабораторная работа №2 Тема: Программирование алгоритмов линейной структуры
- •3. 1. Классификация типов данных
- •3. 2. Константы
- •“Это начало строки, ” “а это ее продолжение”
- •“Это начало строки, а это ее продолжение”
- •3. 3. Задания к лабораторной работе
- •4. Лабораторная работа №3 Тема: Программирование алгоритмов циклической структуры
- •4. 1. Условный оператор if... Else
- •4. 1. 1. Об условиях в операторе if
- •4. 2. Цикл while
- •4. 3. Цикл do while
- •4. 4. Цикл for
- •4. 5. Контрольные вопросы
- •5. Лабораторная работа №4 Тема: Работа с массивами
- •5. 1. Контрольные вопросы
- •5. 2. Задания к лабораторной работе
- •6. Лабораторная работа №5
- •Изучение утилит Database Desktop (dbd), bd Administrator Использование компонентов tDataModule, tTable, tDataSet
- •6. 1. Краткие теоретические сведения
- •6. 2. Модуль данных
- •6. 3. Доступ к содержимому поля
- •6. 4. Поиск записей
- •6. 5. Фильтры
- •6. 6. Задание
- •6. 7. Ход выполнения работы
- •6. 8. Контрольные вопросы
- •7. Лабораторная работа №6 Тема: Программирование объекта tQuery
- •7. 1. Краткие теоретические сведения
- •7. 2. Задание
- •7. 3. Ход выполнения работы
- •7. 4. Контрольные вопросы
- •8. Лабораторная работа №7 Тема: Создание связей между таблицами
- •8. 1. Краткие теоретические сведения
- •8. 2. Задание
- •8. 3. Ход выполнения работы
- •8. 4. Контрольные вопросы
- •9. Лабораторная работа №8 Тема: Работа с полями
- •9. 1. Краткие теоретические сведения
- •9. 2. Задание
- •9. 3. Ход выполнении работы
- •9. 4. Контрольные вопросы
- •10. Задания к базам данных
2. 2. Кнопка (Button)
Кнопки на рабочей поверхности приложения играют такую же роль, что и кнопки в жизни – нажатием на них инициируется некоторое действие. В интерфейсе пользователя Windows-приложения есть несколько кнопок разного назначения (например, позицию переключателя также называют кнопкой выбора). Стандартная командная кнопка С++Builder относится к независимым элементам – её можно поместить на любое место формы и пользоваться её событием Click (щелчок), как заблагорассудится. Факт щелчка на ней кнопка обозначает тем, что изображает “нажатие”.
2. 2. 1. Таблица свойств для Button
Свойства |
Описание |
Cancel |
Отмена. Только одна из кнопок формы может иметь значение этого свойства True. Это должна быть кнопка, выполняющая функции кнопки Cancel (отмена). При Cancel = True нажатие клавиши <Esc> генерирует событие Click для этой кнопки вне зависимости от того, какому из элементов формы принадлежит фокус. |
Caption |
Задаёт текст надписи на поверхности кнопки. |
Default |
Выполнить. Аналогично свойству Cancel, только для кнопок ОК (реагирующих на клавишу Enter). |
Enabled |
Разрешено. Булево значение, содержащееся в этом свойстве, разрешает или запрещает функционирование управляющего элемента (объекта) в плане пользовательского ввода. При Enabled = False элемент не реагирует на действия пользователя. |
2. 3. Однострочный редактор (Edit)
Этот компонент служит для отображения одной строки текста с возможностью редактирования. В Windows поддерживаются операции выделения текста, копирования, удаления, которые могут выполняться как с помощью клавиатуры, так и с помощью мыши.
2. 3. 1. Таблица свойств для Edit
Свойства |
Описание |
AutoSelect |
Если значение этого свойства равно True, то при получении объектом фокуса ввода, содержимое окна редактирования будет выделено, если False – то не выделено. |
AutoSize |
Указывает на необходимость изменения размера компонента при изменении размера шрифта |
BorderStyle |
Здесь выбирается стиль обрамления Edit |
CharCase |
Используется для изменения регистра символов, содержащихся в текте. Значение ecNormal задаёт нормальный режим ввода. Значение ecLowerCase задаёт ввод символов только нижнего регистра, а значение ecUpperCase – только верхнего регистра. |
Color |
Определяет цвет, которым изображается элемент Edit на экране. |
Enabled |
Разрешено. Булево значение, содержащееся в этом свойстве, разрешает или запрещает редактирование текста в окна Edit. |
MaxLength |
Позволяет ограничивать число вводимых пользователем символов (для этого нужно присвоить этому свойству необходимое значение) |
ReadOnly |
Позволяет отображать текст без возможности редактирования, если значение этого свойства равно True (по умолчанию оно равно – False). |
Text |
Определяет тот текст, который будет выведен в окне Edit при запуске программы. Используется для доступа к содержимому компонента Edit. |
Пример. Потребуется три объекта: список, поле редактора и кнопка. Перенесем компоненты на форму проектирования. Метод перетаскивания (drag-and-drop) чисто интуитивен и состоит в следующих действиях: нажмите левую кнопку мыши на выбранном элементе, переведите курсор на любое место формы, а затем снова щёлкните мышью. Будем использовать “стандартные” компоненты Палитры [3]:
· Выберите вкладку Standard.
· Перетащите компонент списка TListBox на форму.
· Перетащите компонент редактируемого ввода TEditBox.
· Перетащите компонент кнопки TButton.
· С помощью инспектора объектов определите начальные значения свойств компонентов. В графе свойства значений Items списка ListBox1 кнопку (TStrings) и в открывшемся окне редактора введите семь первых строк стихотворения. В свойстве Caption формы Form1 и кнопки Button1 укажите те их смысловые названия (соответственно, “Десять негритят”, “Результат”). В свойстве Text поля редактирования Edit1 напишите строку подсказки результата (“Десять негритят”).
· Расположите компоненты и измените их размеры так, как вы хотели бы их видеть в окне вашего редактора.
Рис.3. показывает вид формы приложения и свойства списка ListBox1 после выполнения указанных действий. Теперь можно переключиться на Редактор кода и написать программу.
Рис3. Визуальное проектирование формы
Обратите внимание, что присвоение значения true свойству Sorted вызовет лексиграфическое упорядочивание списка ListBox1 уже на стадии проектирования.
· В инспекторе объектов укажите вкладку События (Events), чтобы увидеть все события, ассоциированные с выбранным объектом.
· Дважды щёлкните мышью по кнопке “Результат”. В открывшемся окне Редактора кода курсор покажет позицию для ввода инструкций в тело обработчика события OnClick, возникающего при нажатии кнопки Button1.
Рис.4 показывает простой код, который в ответ на очередное нажатие кнопки “Результат” присоединяет предыдущую подсказку prev к концу списка и заносит следующую подсказку next в поле редактирования.
Рис.4.Редактор кода обеспечивает ввод и редактирование текста программы
Инструкция ListBox1->Items->Append(prev) добавляет методом Append строку prev к списку ListBox1. Операция Edit1->Text = next присваивает строку next объекту редактируемого ввода Edit1. Строки подсказок в двумерном массиве count индексируется целой переменной типа static, сохраняющей текущие значения между вызовами процедуры ButtonClick обработки события OnClick.
· Командой главного меню Run | Run запустите процесс компиляции, сборки и прогона примера.
· Несколько раз нажмите на кнопку “Результат”.
Рис.5 показывает содержание формы приложения после девяти нажатий на кнопку “Результат”. Чтобы игнорировать последующие нажатия кнопки, в обработчике события предусмотрена инструкция возврата по условию if (i == 9).
Рис.5. Работа первой версии приложения “Десять негритят”
· Откройте контекстное меню Редактора кода щелчком правой кнопки мыши, а затем с помощью опции Open Source/Header File переключитесь на интерфейсный файл Unit1.h.
· Организуйте экранное отображение инструментов так, чтобы одновременно видеть проектируемую форму и файл Unit1.h в окне Редактора кода.
· Перетащите ещё один компонент кнопки TВutton на форму. В свойстве Caption кнопки укажите её смысловое название “Новый куплет”.
Рис.6. C++Builder автоматически генерирует интерфейсный модуль
Проследите за тем, что , как только вы перенесли кнопку на форму, объявление объекта TButton2 моментально появится в модуле Unit1.h, а определение события OnClick сгенерирует объявление метода Button2Click обработчика этого события (Рис.6). такая синхронизация процессов проектирования формы и автоматической генерации кода действительно ускоряет визуальную разработку С++, сохраняя постоянный контроль над исходным текстом.
Сделаем ещё один шаг в разработке приложения – заставим его составлять куплеты автоматически. Для этого придётся наполнить содержанием обработчик события OnClick, возникающий при нажатии кнопки “Новый куплет”.
Рис.7. Новый обработчик события в файле Unit1.cpp
Рис.7 показывает простой код, который в ответ на очередное нажатие кнопки “Новый куплет” выводит друг за другом семь строк нового куплета, причём первая и третья строки берутся по переменной prev. Поскольку значение этой переменной присваивает обработчик события “Результат”, пришлось переопределить её в секции public пользовательских объявлений класса формы (выделенная на рис.6 строка). При этом переменная становится доступной обработчикам событий обеих кнопок [3].
Рис.8. Работа законченной версии приложения “Десять негритят”
Рис.8 показывает работу законченной версии приложения “Десять негритят” после девяти парных нажатий на кнопки “Результат” и “Новый куплет”. Список автоматически приобретает вертикальную линейку прокрутки, с помощью которой можно просматривать всё стихотворение.