Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Языки программирования > Prolog
Перезагрузить страницу Разработка своего элемента control из элемента editControl (Visual Prolog 7.3)
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
Винитарх Винитарх вне форума
Специалист
 
Аватар для Винитарх
 
Сообщений: 7,958
Сказал(а) спасибо: 2
Поблагодарили 303 раз(а) в 303 сообщениях
Регистрация: 01.03.2003
Адрес: Краснодар
По умолчанию Разработка своего элемента control из элемента editControl (Visual Prolog 7.3) - 23.02.2011, 00:19

Не увидел я и в версии Visual Prolog 7.303 того, чего ждал от элементов integerControl и realControl - НЕВОЗМОЖНОСТЬ набрать неправильные данные. Поэтому стал использовать editControl с обработчиком события модификации контента этого элемента. Обработчик оказался очень прост и я даже покажу здесь как в него добавить разрешённый диапазон.
Итак, переделываем editControl в собственный realControl с помощью обработчика:
Visual Prolog Код:
constants
edit_Min = -1000.0.
edit_Max = 1000.0.
class facts
edit_Tmp : string := "". % начальное значение
predicates
onEditModified : editControl::modifiedListener.
clauses
onEditModified(_Source) :-
Text = edit_ctl:getText(),
   ( Text = "",edit_Tmp:="",!;
     hasDomain(real,R), R=tryToTerm(Text), R>=edit_Min, R<=edit_Max, edit_Tmp:=Text,!;
     edit_ctl:setText(edit_Tmp) ).
Значения констант конечно можно перенести внутрь обработчика.
Может кому и потребуется. Рекомендую.
При желании можно добавить другие полезные свойства, так как принцип прост и, надеюсь, понятен без комментариев.
Ответить с цитированием
  (#2 (permalink)) Старый
Винитарх Винитарх вне форума
Специалист
 
Аватар для Винитарх
 
Сообщений: 7,958
Сказал(а) спасибо: 2
Поблагодарили 303 раз(а) в 303 сообщениях
Регистрация: 01.03.2003
Адрес: Краснодар
По умолчанию 23.02.2011, 00:24

А вот самая простая версия, которая просто подавляет неправильный набор данных:
Visual Prolog Код:
class facts
edit_Tmp : string := "". % начальное значение
predicates
onEditModified : editControl::modifiedListener.
clauses
onEditModified(_Source) :-
Text = edit_ctl:getText(),
( Text = "",edit_Tmp:="",!;
  hasDomain(real,_R), _R=tryToTerm(Text), edit_Tmp:=Text,!;
  edit_ctl:setText(edit_Tmp) ).
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как реализовать поиск элемента stasey91 Вопросы начинающих программистов 0 23.05.2011 02:06
Замена элемента в списке. Atton Prolog 17 09.05.2011 00:44
Разработка метода копирования свойств элемента меню nast9 Delphi 1 14.01.2011 22:33
Переставить два элемента в списке cska_fun Lisp 3 26.11.2009 17:09
Удаление элемента из массива alyonka89 Delphi 2 17.08.2009 21:03
Удаление элемента с заданным номером и число вхождений заданного элемента imported_Lisa_D Lisp 21 16.04.2009 15:06
выбор элемента из списка videomag Prolog 25 29.03.2009 03:48
номер элемента в списке Ashes Prolog 1 05.06.2008 19:03
Перестановка элемента в списке AlexF Prolog 2 23.10.2005 21:52
Visual C++ CListCtrl поиск элемента в List Box Timon8 Visual C++ 0 04.05.2004 02:16
Удаление элемента дерева Karp Visual C++ 1 07.04.2004 09:46
Добавление элемента в массив VolanD С/С++ 10 06.04.2004 19:06



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов