Как включить / отключить вырезание / копирование / вставку пунктов меню и панели инструментов в общем виде? - PullRequest
7 голосов
/ 18 сентября 2008

У меня есть приложение для форм Windows с такими элементами управления, как текстовое поле, поле со списком, сетка данных и т. Д. Эти элементы управления позволяют пользователю использовать клипбоад, то есть вырезать / копировать и вставлять текст. Также возможно удалить текст (который не связан с буфером обмена).

В моем приложении есть строка меню с элементом «Редактировать», содержащим элементы «Вырезать / Копировать / Вставить / Удалить», а также панель инструментов с этими элементами. Как правильно включить / отключить эти элементы в зависимости от состояния элемента управления с фокусом?

Я ищу общий способ, т. Е. Ищу реализацию, которую делаю один раз, и могу использовать в будущем независимо от элементов управления, которые будет использовать мое приложение.

Ответы [ 2 ]

3 голосов
/ 18 сентября 2008

Не существует универсального интерфейса или набора методов для получения вырезанной / скопированной / вставленной информации из элемента управления Windows формы.

Я полагаю, что вашим лучшим подходом было бы создание класса-оболочки для каждого типа элемента управления. Затем, когда вы захотите обновить состояние меню, вы получите текущий элемент управления с фокусом и создадите для него соответствующую обертку. Затем вы запрашиваете у этой оболочки необходимую вам информацию о состоянии. Таким образом, вам нужно только создать реализацию оболочки для каждого типа используемого вами элемента управления. Начать с боли, но в другое время вам нужно только добавить новые элементы управления, с которыми вы сталкиваетесь.

Информация о буфере обмена намного проще, так как вы можете спросить синглтон буфера обмена, есть ли у него данные внутри и какого типа это. Опять же, вам все равно нужно спросить целевой элемент управления, может ли он принять этот тип информации, так что все еще требуется дополнительная работа.

0 голосов
/ 18 сентября 2008

Создать массив для каждой группы включения / выключения. Добавьте элементы управления в массив (конечно, это должен быть правильный тип, такой как Object или Any, и т. Д. Зависит от языка программирования, который вы используете). Затем, чтобы включить, отключите просто цикл по массиву и вызовите метод или функцию включения / отключения для каждого элемента управления. Опять же, в зависимости от языка, который вам может потребоваться отбросить.

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