C # визуальный контроль для редактирования утверждений / уравнений / условий? - PullRequest
1 голос
/ 02 апреля 2012

В основном мне нужен редактор для логического утверждения, уравнения или условия. Я пытаюсь сделать что-то похожее на то, что показано в http://www.youtube.com/watch?v=xFUWtztPibs через 1 мин 20 с и далее, и я подумал, что, может быть, я заново изобрету колесо, и оно уже там в качестве элемента управления, который вы можете просто использовать.

Пример: есть класс со следующими свойствами:

  • имя_переменной (строка)
  • компаратор (перечисление)
  • значение (объект)

Этот класс представляет условие вида:

If <variable_name> <comparator> <value>

, который может содержать такие условия, как:

If x != 0
If temp <= 100
If currentChapter > 3

и т.д.

Это может быть более сложным - например, If 3dpoint(x,y,z) is outside a sphere(x,y,z,r) или даже что-то вроде if (a>b) and ((3d point is inside a rectangle) or (not(b<c))) и т. Д.

Пользователь должен иметь возможность редактировать эти условия (в частности, свойства класса) таким образом, как показано в видео - условие отображается в виде простого текста (например, элемента управления Label), с выделением изменяемых «частей» и clickable (ярлык, который является гиперссылкой), при щелчке по ним открывается модальное окно, в котором можно изменить их.

Например, когда вы выбираете новое условие из моего примера, оно показывает:

If <variable_name> <comparator> <value>

Если вы нажмете <comparator>, вам будет разрешено выбрать из =, !=, >, < и т. Д., А если вы нажмете <variable_name>, вы сможете выбрать из списка уже используемых переменных или ввести новую. После того, как вы укажете его, метки изменятся на:

If variable_1 != <value>

Конечно, я могу сам создать такой интерфейс, динамически добавляя и удаляя метки внутри некоторого элемента управления TabLayout, подключая события OnClick к тем меткам, которые представляют изменяемые части, но, может быть, просто может быть что-то подобное уже сделано и доступны

Заранее спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...