Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Использование элемента 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).
рис.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 с.) |