Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Использование элемента ListBox

Поиск

ListBox (список)- это элемент управления, содержащий набор пунктов, которые может выбрать пользователь. В VPI есть несколько предикатов для работы со списками:

· lbox_Add (Window, Index, Str) добавляет новую строку Str в список в позицию с индексом Index. Если Index равен -1, то строка добавляется в конец списка. Нумерация элементов списка начинается с 0, т.е. первый элемент списка имеет индекс 0, второй -1 и т.д.

· lbox_Clear (Window) удаляет все элементы списка

· lbox_Delete (Window, Index) удаляет элемент с указанным индексом

· lbox_GetItem (Window, Index) возвращает элемент списка с указанным индексом

· Integer=lbox_GetSelIndex(Window) возвращает индекс выбранного элемента. Предикат завершится неуспешно, если никакой элемент в списке не выбран

· lbox_IsSel(Window, Index) завершается успешно или неспешно в зависимости от того, является ли текущим заданный элемент в списке

 

Пример. Проект, позволяющий формировать и редактировать списки данных.

Создать проект, содержащий элементы ListBox (список), Edit Control (поле ввода) для ввода новых данных, Push Button (кнопки) для добавления нового элемента в список и удаления выделенного элемента.

Решение

1. Создайте новый проект.

2. Добавьте в главное меню новый пункт Spisok.

3. Создайте новое окно. Для этого в окне проекта нажмите кнопку Window на левой панели инструментов, а затем – кнопку New справа. Откроется окно Window Attributes. Введите имя создаваемого окна Spisok и нажмите ОК.

4. Разместите на макете появившегося нового окна следующие компоненты: Edit Control, Push Button, ListBox (рис.26).

Push Button
ListBox
Edit Control

рис.26. Созданное окно Spisok


Задайте имена-константы для размещенных элементов, например для 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

Допишите команду для открытия окна Spisok: win_spisok_Create(_Win). В результате должно получиться:

%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). Нажмите кнопку Add Clause, а затем Edit Clause (рис.26).

рис.26. Созданное окно Spisok


Откроется окно редактора для файла Spisok.pro, в который добавлено предложение:

%BEGIN spisok, idc_add _CtlInfo

win_spisok_eh(_Win,e_Control(idc_add,_CtrlType,_CtrlWin,

_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. Запустите проект на исполнение и протестируйте его.

ЗАДАНИЕ ДЛЯ САМОСТОЯТЕЛЬНОЙ РАБОТЫ

Доработайте проект проект следующим образом:

1) добавьте кнопку CLEAR, при нажатии на которую удаляется все содержимое списка (используйте предикат lbox_Clear);

2) добавьте компонент Static Text, который должен отображать выделенный элемент списка.




Поделиться:


Последнее изменение этой страницы: 2016-04-08; просмотров: 519; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 52.15.72.229 (0.01 с.)