ИСПОЛЬЗОВАНИЕ ЭЛЕМЕНТА LISTBOX

advertisement
ИСПОЛЬЗОВАНИЕ ЭЛЕМЕНТА LISTBOX
ListBox (список)- это элемент управления, содержащий набор пунктов,
которые может выбрать пользователь. В VPI есть несколько предикатов для
работы со списками:
 lbox_Add (Window, Index, Str) добавляет новую строку Str в
список в позицию с индексом Index. Если Index равен -1, то строка
добавляется в конец списка
 lbox_Clear (Window) удаляет все элементы списка
 lbox_Delete (Window, Index) удаляет элемент с указанным
индексом
Пример. Проект, позволяющий формировать и редактировать списки
данных.
Создать проект, содержащий элементы ListBox (список), Edit Control
(поле ввода) для ввода новых данных, Push Button (кнопки) для добавления
нового элемента в список и удаления выделенного элемента.
Решение
1. Создайте новый проект.
2. Добавьте в главное меню новый пункт Spisok .
3. Создайте новое окно. Для этого в окне проекта нажмите кнопку
Window на левой панели инструментов, а затем – кнопку New справа.
Откроется окно Window Attributes. Введите имя создаваемого окна Spisok и
нажмите ОК.
4. Разместите на макете появившегося нового окна следующие
компоненты: Edit Control, Push Button, ListBox
Edit Control
ListBox
Push Button
Задайте имена-константы для размещенных элементов, например:
для Edit Control
- idc_edit
для ListBox
- id_list_box
для кнопки ADD
- idc_add
для кнопки DELETE - idc_delete
5. Сгенерируйте стандартный код Visual Prolog для нового окна. Для
этого в окне проекта нажмите кнопку Code Expert, когда выбрано окно
Spisok. Откроется окно Dialog and Window Expert. Выберите исходный
модуль spisok.pro и нажмите кнопку Default Code.
6. Запрограммируйте выбор пункта меню Spisok для вызова окна
Spisok. Для этого в списке окон выберите Task Window, пункт Menu в
списке Event Type и выделите строку id_spisok (имя пункта меню) в списке
Event or Item. Нажмите кнопку Add Clause, чтобы сгенерировать Прологпредложение для события. Название кнопки изменится на Edit Clause, когда
код для события будет создан. Нажмите кнопку Edit Clause. Откроется окно
редактора для файла Spisok.pro, в который добавлено предложение:
%BEGIN Task Window, id_spisok
task_win_eh(_Win,e_Menu(id_spisok,_ShiftCtlAlt),0):!,
!.
%END Task Window, id_spisok
Допишите
команду
для
открытия
окна
win_spisok_Create(_Win). В результате должно получиться:
Spisok:
%BEGIN Task Window, id_spisok
task_win_eh(_Win,e_Menu(id_spisok,_ShiftCtlAlt),0):!,
win_spisok_Create(_Win),
!.
%END Task Window, id_spisok
7. Запрограммируйте нажатие кнопки ADD в окне Spisok для
добавления нового элемента в список. Для этого вызовите окно Dialog and
Window Expert (кнопка Code Expert) и в списке окон выберите Spisok.
Выберите пункт Control в списке Event Type и выделите строку pb:
idc_add(имя кнопки). Нажмите кнопку Add Clause, а затем Edit Clause.
Откроется окно редактора для файла Spisok.pro, в который добавлено
предложение:
%BEGIN spisok, idc_add _CtlInfo
win_spisok_eh(_Win,e_Control(idc_add,_CtrlType,_Ctrl
Win,
_CtlInfo),0):-!,
!.
%END spisok, idc_add _CtlInfo
Допишите необходимые команды. В результате должно получиться:
%BEGIN spisok, idc_add _CtlInfo
win_spisok_eh(_Win,e_Control(idc_add,_CtrlType,_CtrlWin
,
_CtlInfo),0):-!,
LBOXWIN = win_GetCtlHandle(_Win,id_list_box),
E_WINDOW = win_GetCtlHandle(_Win,idc_edit),
EDIT_STRING= win_GetText(E_WINDOW),
EDIT_STRING<>"",
lbox_Add(LBOXWIN,-1,EDIT_STRING),
!.
%END spisok, idc_add _CtlInfo
8. Аналогично запрограммируйте нажатие кнопки DELETE в окне
Spisok для удаления выделенного элемента списка.
%BEGIN spisok, idc_delete _CtlInfo
win_spisok_eh(_Win,e_Control(idc_delete,_CtrlType,_
CtrlWin, _CtlInfo),0):-!,
LBOXWIN = win_GetCtlHandle(_Win,id_list_box),
Index = lbox_GetSelIndex(LBOXWIN),
lbox_Delete(LBOXWIN,Index),
!.
%END spisok, idc_delete _CtlInfo
9. Запустите проект на исполнение и протестируйте его.
ЗАДАНИЕ ДЛЯ САМОСТОЯТЕЛЬНОЙ РАБОТЫ
Доработайте проект, добавив кнопку CLEAR, при нажатии на которую
удаляется все содержимое списка (используйте предикат lbox_Clear)
Download