Лабораторная работа № 5.
Разработка программы "Любимые напитки" в C++ Builder

Цель работы

Написать программу демонстрирующую работу с объектами ListBox.

Спецификация программы:
На пользовательской форме должны быть расположены 3 списка. Один из списков содержит названия напитков. Пользователь может переносить элементы из этого списка в списки «Любимые» и «Нелюбимые» и обратно. При этом перемещаемый элемент должен удалятся из списка-источника. То есть, например, перенос элемента «Чай» из общего списка в список «Любимые» происходит в следующем порядке: он добавляется в список «Любимые» и  удаляется из общего списка. Таким образом общее количество элементов всех трех списков остается постоянным. Перенос элементов между списками должен осуществляться по нажатию на соответствующие кнопки, либо мышью (система Drag and Drop). 
Система Drag and Drop позволяет напрямую перетаскивать объекты между разными источниками, например, из одного списка в другой. «Перетаскивание» представляет собой нажатие и удерживание левой кнопки мыши на объекте и дальнейшее его перемещение за курсором в желаемую область.
Списки «Любимые» и «Нелюбимые» должны сохраняться в текстовые файлы.

Для создания формы использовать компоненты: 
Label – для подписей
ListBox – для вывода списков
Button – для инициирования действий
Рекомендуемая компоновка формы программы представлена на рисунке 1.
 Рисунок 1. Рекомендуемая компоновка формы

Рекомендации для выполнения лабораторной работы:
    1) Запустить C++ Builder. При запуске автоматически создается новый проект. Окно C++ Builder показано на рисунке 2. Для создания нового проекта, в случае если он не создался автоматически или вы его закрыли, выполнить команду меню File / New /Application.
    2) Сохранить проект в свою рабочую папку, выполнив команду меню File / Save Project As. Будет сохранено несколько файлов проекта.
    3) На панели компонентов выбрать вкладку Standard, расположить на форме  компоненты Label , Button  и ListBox
 в требуемом количестве (см. рис.1). 
    4) Изменить подписи объектов Label и пользовательской  формы Form1. Для этого необходимо у перечисленных объектов отредактировать свойство Caption в соответствии с рисунком 1.
    5) Для заполнения ListBox2 названиями напитков необходимо выделить этот список, щелкнув по нему левой кнопкой мыши, и  в окне Object Inspector найти поле свойства Items. При нажатии в этом поле на кнопку с тремя точками появится окно String List Editor, в котором следует перечислить названия всех напитков.
 Рисунок 2. Редактирование свойства Items в окне String List Editor

    6) Пример кода для кнопки переноса строки из списка ListBox2 в ListBox1 показан ниже. По аналогии следует написать код для остальных кнопок переноса.
 
    7) Пример кода кнопки сохранения списка ListBox1 в файле:
 
По аналогии написать код для сохранения списка ListBox3.
    8) Перенос элементов между списками с помощью мыши можно организовать следующим образом. 
    a. Для каждого списка задать свойству DragMode значение dmAutomatic.
    b. Для списка ListBox3 назначить обработчик событие OnDragOver. Для этого нужно выбрать список ListBox3 и в окне Object Inspector на вкладке Events найти событие OnDragOver и дважды щелкнуть по его полю. 
 
При этом автоматически будет создана заготовка для функции-обработчика. В тело этой функции следует записать следующий код:
    c. Для этого же списка ListBox3 назначить обработчик событие OnDragDrop. Для этого нужно создать заготовку функции-обработчика события OnDragDrop и в нее записать ниже приведенный код:
 
    d. Для списков ListBox2 и ListBox1 в обработчиках событий OnDragOver  и OnDragDrop выбрать из выпадающих списков уже готовые функции ListBox3DragOver и ListBox3DragDrop:
 
    9) Сохранить проект нажатием кнопки на панели инструментов.
    10) Провести отладку и тестирование программы

Для защиты программы необходимо:
    1) Иметь рабочий вариант программы
    2) Знать основные свойства компонентов Label,  Button, ListBox и уметь их использовать.
    3) Ориентироваться в программном коде и знать все операторы, используемые в программе.
Comments