26.09.2006, 12:01 | #1 |
Участник
|
Обработка события нажатие клавиши на гриде
Хочу добавить немного удобства при работе с табелем . Задачка следующая в гриде есть 3-и строки(для примера), пользователь вводит в 3-й строке значение и в двух предидущих выставляется 0. Реализовать надумал так: при нажатой клавише ctrl+цифра. Вопрос в том как отловить что нажимают кнопку и нажимают именно с ctrl ?
|
|
26.09.2006, 12:07 | #2 |
Участник
|
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 |
Участник
|
Вопрос в том как отловить что нажимают кнопку и нажимают именно с ctrl ?
|
|
26.09.2006, 12:15 | #4 |
Участник
|
Вообще, поддерживаю - подход не верен.
Но, чтоб обойтись без hook'ов- можно сделать что-то типа этого: Перекрыть метод textChange() на элементе грида, в который вводится этот ваш 0. В коде проверять что ввели, добавить всякие проверки, очистки и т.д., чтобы не ввели больше одной цифры, к примеру (в зависимости от вашей задачи). и если ввели 0, то вызывать процедуру. Код: this.text(); Код: this.text(""); Код: WinApi::isControlButtonDown |
|
26.09.2006, 12:20 | #5 |
Участник
|
Цитата:
Сообщение от kashperuk
Вообще, поддерживаю - подход не верен.
Но, чтоб обойтись без hook'ов- можно сделать что-то типа этого: Перекрыть метод textChange() на элементе грида, в который вводится этот ваш 0. В коде проверять что ввели, добавить всякие проверки, очистки и т.д., чтобы не ввели больше одной цифры, к примеру (в зависимости от вашей задачи). и если ввели 0, то вызывать процедуру. Код: this.text(); Код: this.text(""); Код: WinApi::isControlButtonDown |
|
26.09.2006, 12:23 | #6 |
Участник
|
Правильный подход - добавить кнопочку
Назвать, допустим. (утвердить строки) при нажатии вылазит диаложка небольшая - там Введите циферку. Вводим, нажимаем ОК, и у нас проставляются по всем строкам датасорса циферка эта. |
|
26.09.2006, 12:55 | #7 |
Участник
|
Да товарищи чувствую не раскрыл я полностью тему. В общем в табеле есть коды времен (больничные, сверхурочные ...) вся загвостка в том что когда табельщик вводит например часы в код больничных то часы в коде времени "факт отраб" остаются, а их надо убирать вручную. Вот я и хочу чтобы с нажатой ctrl нажать 8 - ку в больничном и автоматом проставились 0 во всех других введенных кодах времен. Так что наверно правильным подходом здесь неполучится. У кого какие есть варианты ?
|
|
26.09.2006, 14:11 | #8 |
Участник
|
можно попробовать перекрыть метод task() на форме, но нажатие ctrl там не отслеживается, зато отслеживается нажатие, например F10...
а вообще, на мой взгляд, лучше действительно добавить кнопку - если не утвердить, то например Обновить |
|
26.09.2006, 14:15 | #9 |
Участник
|
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 |
Участник
|
Цитата:
Сообщение от 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 |
Участник
|
Ну человеки причем тут 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 |
Пенсионер
|
Цитата:
Сообщение от 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. Вешаешь туда проверку того, что было и стало и разницу отнимаешь там где значение > этой разницы.... или я чего-то не понял...
__________________
Законы природы еще никто не отменял! А еще у меня растет 2 внучки!!! Кому интересно подробности тут: http://www.baby-shine.com/ |
|
27.09.2006, 08:44 | #13 |
Участник
|
могут поставить например больн = 4 факт = 4 т.е. нельзя делать так чтобы в любом случае перетирались значения в других кодах
|
|
27.09.2006, 08:46 | #14 |
Участник
|
Нужно чтобы был выбор, либо просто ввести часы дополнительно либо перетереть во всех кодах на 0, тогда нажимаем с ctrl
|
|
27.09.2006, 09:21 | #15 |
Участник
|
если наделать кнопок с текстом типа "1 час" "2 часа" и вызывать из с альтом:
Помогите с Кнопкой.... - Форум у Mazzy |
|
27.09.2006, 09:22 | #16 |
Участник
|
а можно сделать кнопку "1 - добавить" по ней вываливать диалог с запросом времени и добавлять время. а в случае обычного редактирования перемещать время.
|
|
27.09.2006, 09:47 | #17 |
Участник
|
|
|
27.09.2006, 09:48 | #18 |
Участник
|
Всем спасибо !
|
|