ПриНажатииКнопкиКлавиатуры() флаг стандартной обработки в форме

Автор GRUNGO, 18 марта 2024, 16:40

« назад - далее »

Forum123

Цитата: АЛьФ от 21 марта 2024, 20:10СостояниеКлавиатуры(<?>,)
Это как-бы простое СостояниеКлавиатуры, а ещё неплохо было иметь функцию типа РасширенноеСостояниеКлавиатуры()

Что-то типа https://learn.microsoft.com/ru-ru/dotnet/api/system.windows.forms.sendkeys?view=windowsdesktop-7.0 SendKeys Класс
И конечно, чтобы можно было получить сочетание одновременно нажатых/отжатых клавиш.

А если ещё сразу будет возвращаться данные в каком месте диалогового окна было произведено нажатие, то наверное такой функционал на 99% закроет все "хотелки".

АЛьФ

Цитата: Forum123 от 21 марта 2024, 20:45
Цитата: АЛьФ от 21 марта 2024, 20:10СостояниеКлавиатуры(<?>,)
Это как-бы простое СостояниеКлавиатуры, а ещё неплохо было иметь функцию типа РасширенноеСостояниеКлавиатуры()

Что-то типа https://learn.microsoft.com/ru-ru/dotnet/api/system.windows.forms.sendkeys?view=windowsdesktop-7.0 SendKeys Класс
И конечно, чтобы можно было получить сочетание одновременно нажатых/отжатых клавиш.


Опять не понял. Аналог SendKeys это:

ЭмулироватьКлавиатуру(<?>,,)
Синтаксис:
ЭмулироватьКлавиатуру(<Строка>,<Ждать>,<Раскладка>)
Назначение:
Метод предназначен для программной эмуляции нажатий кнопок на клавиатуре.
Параметры:
<Строка> - строка для отсылки в буфер клавиатуры (подробнее см. документацию по методу SendKeys из WSH);
<Ждать> - необязательный флаг: 1 - продолжать программу только после обработки сообщения клавиатуры Windows; 0 - продолжить выполнение, не дожидаясь обработки сообщения (по умолчанию).
<Раскладка> - Необязательный параметр.  Строка с наименованием раскладки или число, соответствующее следующим раскладкам:
	1 - "English (United States)" (по умолчанию);
	2 - "Russian";
	3 - "Ukrainian";
	4 - "Belarusian";
	5 - "German (Germany)";
	6 - "French (France)".
ПРИМЕР: 
Процедура МаксимизироватьОкно()
   Сервис = СоздатьОбъект("Сервис");
   Сервис.SendKeys("%");
   Сервис.SendKeys("{LEFT}{DOWN}{DOWN}{DOWN}{DOWN}{DOWN}{ENTER}");
КонецПроцедуры

Forum123

Цитата: АЛьФ от 21 марта 2024, 20:54ЭмулироватьКлавиатуру(<?>,,)
Как по мне, то как для C++-ника, но учитывая что программа 1С 7.7, то наверное функционал для а-ля 1С.
Надеюсь форумчане в комментах уточнят какую информация им нужна.
Не исключаю, что лучше иметь несколько функций.
Типа одна коды и названия клавиш возвращает, другая тип области диалогового окна, ...

MWW_Ruza

Цитата: АЛьФ от 21 марта 2024, 20:10Это?

СостояниеКлавиатуры(<?>,)
Синтаксис:
СостояниеКлавиатуры(<ИмяКнопки>,<Состояние>)
Параметры:
<ИмяКнопки> - строка с именем кнопки (возможные значения: "CapsLock","NumLock","ScrollLock")
<Состояние> - устанавливаемое состояние кнопки 1 - включено, 0 -выключено.

Похоже... Только возможных значений маловато... Только капс, нум, и скрол? А шифт, альт, контрол -  ?
А.... Понял, это только кнопки с  " фиксацией" А те, которые "удерживать надо"  - ?

Злоп

Не, ТС хочет чтобы получать текущее состояние шифт, контрол, альт и еще может какие служебные...
https://infostart.ru/1c/tools/1787209/ - пост 10, там же и определение через 1С++ есть

Forum123

Цитата: Злоп от 22 марта 2024, 00:13https://infostart.ru/1c/tools/1787209/ - пост 10, там же и определение через 1С++ есть
19-й пост также интересен

Из документации к ВК TableDoc:

Раздел VI
Класс Клавиатура / Keyboard

Свойства
<ИмяВиртуальнойКлавиши>
Доступ: чтение

Тип: число

Описание: Значение виртуальной клавиши.

Примеры доступа к значениям виртуальных клавиш:
Клавиатура.VK_SHIFT
Клавиатура.VK_CONTROL
Клавиатура.VK_ESCAPE
Клавиатура.VK_UP
Клавиатура.VK_DOWN
С полным списком имен виртуальных клавиш можно ознакомится в MSDN.
Например тут http://msdn.microsoft.com/en-us/library/ms645540.aspx
или тут http://msdn.microsoft.com/en-us/library/ms927178.aspx

Методы
ПолучитьСостояниеКлавиши / GetKeyState
Синтаксис: ПолучитьСостояниеКлавиши(<ВиртКод>, <ВклРежим>)

Параметры: <ВиртКод> - Код виртуальной клавиши.
<ВклРежим> - Возвращаемый. Необязательный. Имеет смысл для переключаемых клавиш таких как CAPS LOCK.
1 - клавиша включена (toggled), 0 - клавиша выключена (untoggled).

Возврашает: Текущее состояние клавиши: 1-нажата, 0-не нажата.

Описание: Позволяет определить состояние любой клавиши. Например в момент обработки события нажатия одной из клавиш.


ПолучитьИмяКлавиши / GetKeyNameText
Синтаксис: ПолучитьИмяКлавиши(<Данные>, <Режим>)

Параметры: <Данные> - Число, в двоичном коде которого: биты 16-23 - сканкод, 24-флаг расширенной клавиатуры.
В качестве значения можно передавать параметр <Данные> клавиатурных событий таких как ПриНажатииКлавиши().

<Режим> - включает режим безразличия к расположению клавиши на клавиатуре.
Например левый или правый CTRL и SHIFT.

Возврашает: Строку-представление имени клавиши.

Описание: Строка может зависеть от текущей локали.

Forum123

Цитата: Злоп от 22 марта 2024, 00:13Не, ТС хочет чтобы получать текущее состояние шифт, контрол, альт и еще может какие служебные.
Ещё добавить события типа: "ДетальнаяСтрока", "Заголовок", ...
Тогда код модуля будет проще.

Forum123

Ещё бы в 1С 7.7 добавить (если это возможно) функционал для работы с диалоговыми формами наподобие как в восьмёрке (настройки пользователем, ...).

АЛьФ

Цитата: Forum123 от 22 марта 2024, 08:34
Цитата: Злоп от 22 марта 2024, 00:13Не, ТС хочет чтобы получать текущее состояние шифт, контрол, альт и еще может какие служебные.
Ещё добавить события типа: "ДетальнаяСтрока", "Заголовок", ...
Тогда код модуля будет проще.

Цитата: Forum123 от 22 марта 2024, 08:57Ещё бы в 1С 7.7 добавить (если это возможно) функционал для работы с диалоговыми формами наподобие как в восьмёрке (настройки пользователем, ...).


Я вот уже вообще потерялся о чем это и как должно выглядеть.

Forum123

Цитата: АЛьФ от 22 марта 2024, 09:06Я вот уже вообще потерялся о чем это и как должно выглядеть.
Чтобы пользователь мог сделать меньше/больше ширину поля, переместить поле в другое место формы, поменять шрифт.  форматирование, ...
Конечно эту информацию нужно как-то сохранять и при открытии формы применять.

Посмотреть какие новые свойства полей в восьмёрку добавили и для для начала реализовать их в 1С 7.7.

Forum123

Цитата: Forum123 от 22 марта 2024, 09:12Чтобы пользователь мог сделать меньше/больше ширину поля,
Честно говоря у меня всё предложенное реализовано (и его совершенно не сложно реализовать).
Сохраняются свойства полей диалоговой формы в xml файлах и при открытии диалоговой формы применяются.
В глобальном модуле имеются две процедуры: "Сохранить свойства диалоговой формы" и восстановить.
Если в formex добавить аналогичный функционал, то было бы просто удобнее.

АЛьФ

Цитата: Forum123 от 22 марта 2024, 09:12
Цитата: АЛьФ от 22 марта 2024, 09:06Я вот уже вообще потерялся о чем это и как должно выглядеть.
Чтобы пользователь мог сделать меньше/больше ширину поля, переместить поле в другое место формы, поменять шрифт.  форматирование, ...
Конечно эту информацию нужно как-то сохранять и при открытии формы применять.

Посмотреть какие новые свойства полей в восьмёрку добавили и для для начала реализовать их в 1С 7.7.

если я правильно понял, все это реализуемо существующими средствами компоненты.

АЛьФ

Цитата: Forum123 от 22 марта 2024, 09:35
Цитата: Forum123 от 22 марта 2024, 09:12Чтобы пользователь мог сделать меньше/больше ширину поля,
Честно говоря у меня всё предложенное реализовано (и его совершенно не сложно реализовать).
Сохраняются свойства полей диалоговой формы в xml файлах и при открытии диалоговой формы применяются.
В глобальном модуле имеются две процедуры: "Сохранить свойства диалоговой формы" и восстановить.
Если в formex добавить аналогичный функционал, то было бы просто удобнее.


Боюсь, что нет.

Forum123

Цитата: АЛьФ от 22 марта 2024, 10:07Боюсь, что нет.
У меня этот функционал реализован и для восьмёрки.
Так что он как бы расширяет возможности для восьмёрки.
Диалоговые формы 1С 7.7 без всяких доработок с использованием xml можно перенести в восьмёрку.
Через какое-то время поделюсь ActiveX, который корректно функционирует с диалоговыми формами в 1С 7.7 и восьмёрке.
Ныне пока публиковать не буду потому, что планирую добавить разную новую функциональность.
Посты были не для хвастовства, а для обмена опытом.

Для каждого пользователя имеется свой набор xml.
Также в xml имеется node для установки прав на использование полей и формы.
Весьма удобно!

Злоп

Цитата: Arbuz от 21 марта 2024, 17:52Ага, ещё и рекурсивно ;D
Всё равно не вижу смысл проверки ФСО=0 первой строкой. 
ну, может действительно там от отладки какой-нибудь осталось.
Код подробно там не смотрел, одну ошибку нашел, поправили, у себя проверил - вроде работает - ну и положил в запасники.