AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 26.09.2006, 12:01   #1  
berlioz is offline
berlioz
Участник
 
29 / 10 (1) +
Регистрация: 29.08.2006
:( Обработка события нажатие клавиши на гриде
Хочу добавить немного удобства при работе с табелем . Задачка следующая в гриде есть 3-и строки(для примера), пользователь вводит в 3-й строке значение и в двух предидущих выставляется 0. Реализовать надумал так: при нажатой клавише ctrl+цифра. Вопрос в том как отловить что нажимают кнопку и нажимают именно с ctrl ?
Старый 26.09.2006, 12:07   #2  
Delfins is offline
Delfins
Участник
 
320 / 39 (2) +++
Регистрация: 20.09.2005
Адрес: Riga, Latvia
V principe podhod ne pravlinij, imho.

Код:
if (poslednaja_stroka)
{
   while PrevRecotrds
    where ...
   {
      PrevRecords.Num = 0;
      PrevRecords.update();
   }
}

PS: nazhatie klavish navernoje mozhno poluchit tolko ispolzuja winapi, naveshiv Hook
Старый 26.09.2006, 12:10   #3  
berlioz is offline
berlioz
Участник
 
29 / 10 (1) +
Регистрация: 29.08.2006
Цитата:
Сообщение от Delfins Посмотреть сообщение
V principe podhod ne pravlinij, imho.

Код:
if (poslednaja_stroka)
{
   while PrevRecotrds
    where ...
   {
      PrevRecords.Num = 0;
      PrevRecords.update();
   }
}

PS: nazhatie klavish navernoje mozhno poluchit tolko ispolzuja winapi, naveshiv Hook
Вопрос в том как отловить что нажимают кнопку и нажимают именно с ctrl ?
Старый 26.09.2006, 12:15   #4  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Вообще, поддерживаю - подход не верен.
Но, чтоб обойтись без hook'ов- можно сделать что-то типа этого:

Перекрыть метод textChange() на элементе грида, в который вводится этот ваш 0.
В коде проверять что ввели, добавить всякие проверки, очистки и т.д., чтобы не ввели больше одной цифры, к примеру (в зависимости от вашей задачи).
и если ввели 0, то вызывать процедуру.
Код:
this.text();
очищать контрол тоже -
Код:
this.text("");
Проверить, что нажат Ctrl:
Код:
WinApi::isControlButtonDown
Старый 26.09.2006, 12:20   #5  
berlioz is offline
berlioz
Участник
 
29 / 10 (1) +
Регистрация: 29.08.2006
Цитата:
Сообщение от kashperuk Посмотреть сообщение
Вообще, поддерживаю - подход не верен.
Но, чтоб обойтись без hook'ов- можно сделать что-то типа этого:

Перекрыть метод textChange() на элементе грида, в который вводится этот ваш 0.
В коде проверять что ввели, добавить всякие проверки, очистки и т.д., чтобы не ввели больше одной цифры, к примеру (в зависимости от вашей задачи).
и если ввели 0, то вызывать процедуру.
Код:
this.text();
очищать контрол тоже -
Код:
this.text("");
Проверить, что нажат Ctrl:
Код:
WinApi::isControlButtonDown
Не WinApi::isControlButtonDown не катит, с нажатым ctrl цифирки не вводятся, какой-то метод перекрыть наверно надо. Может предложите правильный подход ?
Старый 26.09.2006, 12:23   #6  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Правильный подход - добавить кнопочку
Назвать, допустим. (утвердить строки)
при нажатии вылазит диаложка небольшая - там Введите циферку.
Вводим, нажимаем ОК, и у нас проставляются по всем строкам датасорса циферка эта.
Старый 26.09.2006, 12:55   #7  
berlioz is offline
berlioz
Участник
 
29 / 10 (1) +
Регистрация: 29.08.2006
Цитата:
Сообщение от kashperuk Посмотреть сообщение
Правильный подход - добавить кнопочку
Назвать, допустим. (утвердить строки)
при нажатии вылазит диаложка небольшая - там Введите циферку.
Вводим, нажимаем ОК, и у нас проставляются по всем строкам датасорса циферка эта.
Да товарищи чувствую не раскрыл я полностью тему. В общем в табеле есть коды времен (больничные, сверхурочные ...) вся загвостка в том что когда табельщик вводит например часы в код больничных то часы в коде времени "факт отраб" остаются, а их надо убирать вручную. Вот я и хочу чтобы с нажатой ctrl нажать 8 - ку в больничном и автоматом проставились 0 во всех других введенных кодах времен. Так что наверно правильным подходом здесь неполучится. У кого какие есть варианты ?
Старый 26.09.2006, 14:11   #8  
AxPr-r is offline
AxPr-r
Участник
Axapta Retail User
 
44 / 11 (1) +
Регистрация: 13.03.2006
можно попробовать перекрыть метод task() на форме, но нажатие ctrl там не отслеживается, зато отслеживается нажатие, например F10...
а вообще, на мой взгляд, лучше действительно добавить кнопку - если не утвердить, то например Обновить
Старый 26.09.2006, 14:15   #9  
Delfins is offline
Delfins
Участник
 
320 / 39 (2) +++
Регистрация: 20.09.2005
Адрес: Riga, Latvia
Vsje ravno ne-vizhu prichinu, pochemu nado vse delat ne-po-Axaptovski...
V Axapte est' metod-y: modified(), modifiedField(), update()/insert()...

sootvetsvenno, znaja vse dannie i novie znachenija, mozno najti nuzhnie dannie, proverit i izmenit' vse chto-nuzhno... V Axapte skvoz'-i-splosh tak vse rabotaet...
Старый 26.09.2006, 15:08   #10  
AxPr-r is offline
AxPr-r
Участник
Axapta Retail User
 
44 / 11 (1) +
Регистрация: 13.03.2006
Цитата:
Сообщение от Delfins Посмотреть сообщение
Vsje ravno ne-vizhu prichinu, pochemu nado vse delat ne-po-Axaptovski...
V Axapte est' metod-y: modified(), modifiedField(), update()/insert()...

sootvetsvenno, znaja vse dannie i novie znachenija, mozno najti nuzhnie dannie, proverit i izmenit' vse chto-nuzhno... V Axapte skvoz'-i-splosh tak vse rabotaet...
полностью согласен
Старый 27.09.2006, 06:02   #11  
berlioz is offline
berlioz
Участник
 
29 / 10 (1) +
Регистрация: 29.08.2006
Ну человеки причем тут modified(), modifiedField(), update()/insert()... ?
Есть таблица с кодами времен
факт: 8 8 8 0 0 8 8 8 8 8
болн: 0 0 0 0 0 8 8 8 0 0
гособ:0 0 0 0 0 8 0 0 0 0
Табельщик вводит скажем гособяз 8 и ему нужно в других кодах в этот же день поставить 0 ... гемор ! Но могут поставить например больн = 4 факт = 4 т.е. нельзя делать так чтобы в любом случае перетирались значения в других кодах. Вот я и придумал перетирать с нажатой ctrl, а modified(), modifiedField(), update()/insert() это уже будет когда я найду как обработать нажатую циферку с ctrl.

Последний раз редактировалось berlioz; 27.09.2006 в 06:09.
Старый 27.09.2006, 08:20   #12  
blokva is offline
blokva
Пенсионер
Аватар для blokva
SAP
NavAx Club
 
743 / 167 (7) ++++++
Регистрация: 04.06.2003
Адрес: Беларусь
Цитата:
Сообщение от berlioz Посмотреть сообщение
Ну человеки причем тут modified(), modifiedField(), update()/insert()... ?
Есть таблица с кодами времен
факт: 8 8 8 0 0 8 8 8 8 8
болн: 0 0 0 0 0 8 8 8 0 0
гособ:0 0 0 0 0 8 0 0 0 0
Табельщик вводит скажем гособяз 8 и ему нужно в других кодах в этот же день поставить 0 ... гемор ! Но могут поставить например больн = 4 факт = 4 т.е. нельзя делать так чтобы в любом случае перетирались значения в других кодах. Вот я и придумал перетирать с нажатой ctrl, а modified(), modifiedField(), update()/insert() это уже будет когда я найду как обработать нажатую циферку с ctrl.
Я тоже не пойму, почему нельзя использовать modified()?!
Вешаешь туда проверку того, что было и стало и разницу отнимаешь там где значение > этой разницы....
или я чего-то не понял...
__________________
Законы природы еще никто не отменял!
А еще у меня растет 2 внучки!!! Кому интересно подробности тут:
http://www.baby-shine.com/
Старый 27.09.2006, 08:44   #13  
berlioz is offline
berlioz
Участник
 
29 / 10 (1) +
Регистрация: 29.08.2006
Цитата:
Сообщение от blokva Посмотреть сообщение
Я тоже не пойму, почему нельзя использовать modified()?!
Вешаешь туда проверку того, что было и стало и разницу отнимаешь там где значение > этой разницы....
или я чего-то не понял...
могут поставить например больн = 4 факт = 4 т.е. нельзя делать так чтобы в любом случае перетирались значения в других кодах
Старый 27.09.2006, 08:46   #14  
berlioz is offline
berlioz
Участник
 
29 / 10 (1) +
Регистрация: 29.08.2006
Нужно чтобы был выбор, либо просто ввести часы дополнительно либо перетереть во всех кодах на 0, тогда нажимаем с ctrl
Старый 27.09.2006, 09:21   #15  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
если наделать кнопок с текстом типа "1 час" "2 часа" и вызывать из с альтом:
Помогите с Кнопкой.... - Форум у Mazzy
Старый 27.09.2006, 09:22   #16  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
а можно сделать кнопку "1 - добавить" по ней вываливать диалог с запросом времени и добавлять время. а в случае обычного редактирования перемещать время.
Старый 27.09.2006, 09:47   #17  
berlioz is offline
berlioz
Участник
 
29 / 10 (1) +
Регистрация: 29.08.2006
Цитата:
Сообщение от belugin Посмотреть сообщение
а можно сделать кнопку "1 - добавить" по ней вываливать диалог с запросом времени и добавлять время. а в случае обычного редактирования перемещать время.
О точно, вот так и сделаю, это будет по аксаптовски , СПАСИБО.
Старый 27.09.2006, 09:48   #18  
berlioz is offline
berlioz
Участник
 
29 / 10 (1) +
Регистрация: 29.08.2006
Всем спасибо !
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Открытие формы с деталями активной записи в гриде sweeper DAX: Программирование 4 19.09.2008 15:55
Обработка кнопки из класса Vitaly_K DAX: Программирование 6 14.08.2006 11:08
обработка события на контроле Nikolaich DAX: Программирование 3 25.10.2005 14:41
Суммарная обработка накладной AlexUnik DAX: Функционал 1 19.08.2004 15:51
Грид. Переопределение реакции на нажатие "Enter" ATimTim DAX: Программирование 4 08.07.2004 17:31

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 15:17.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.