|
16.02.2009, 19:14 | #1 |
Участник
|
Поймать resize() метод или ...
Всем доброго дня.
Задача:Надо реализовать следующий интерфейс. Есть grid на форме из 7 колонок (дни недели).Сотрудники добавляют строки-задачи, которыми они были заняты в течение недели, и проставляют время в соответствующих колонках. Необходимо добавить снизу (под гридом) строку Total, которая будет суммировать время по дням. Желательно, чтобы при изменении ширины колонок грида соответственно менялась нижняя строка total. Метод resize() формы не всегда вызывается при изменении грида, т.к. сам грид может быть меньше, чем форма. Правильный способ, кмк, переопределить метод resize() grid-a, но этого нельзя сделать в нашей конфигурации. Ax3.0 SP4. Вопрос: Как поймать метод resize() у грида? Или как реализовать данную задачу другими методами / интерфейсами? |
|
16.02.2009, 19:33 | #2 |
Axapta
|
Disclaimer: я рассматриваю данную задачу только как сугубо-теоретическую, просто для развлечения, потому как не вижу смысла в реальной ситуации подгонять размеры. Абслютно бесполезная трата времени.
Интуиция мне подсказывает, что всякие "ресайзы" (я вообще только что узнал, что оказывается есть такой метод) и попытки вручную задать размеры контролов - это путь в никуда. Даже пробовать и думать в этом направлении не буду. Так что, как вариант, в неких случая (я же всей вашей задачи и ситуации не вижу) пойдет такой финт: добавить в таблицу некое поле, NoYes, например. Пусть у всех строк будет это поле равно NoYes::No, а у одной, которая будет означать суммарную строку Total, куда при любом изменении будет записываться суммарные значения, оно будет равно NoYes::Yes. Делаем, чтобы новая запись в гриде создавалась всегда над той строкой, где стоит курсор, а в любой квери по датасорсу добавляем, чтобы в выборку строка Total всегда попала, плюс упорядочиваем по этому самому фиктивному полю. Вуалля. Строка Total всегда будет последней. |
|
16.02.2009, 19:55 | #3 |
Мрачный тип
|
нереализуемо ...
__________________
Мы летаем, кружимся, нагоняем ужасы ... |
|
16.02.2009, 21:00 | #4 |
Дмитрий Ерин
|
Развивая мысль, высказанную oip, я бы предложил динамически вписывать суммарные значения непосредственно в заголовок грида (в момент сохранения записи). То есть, заголовок будет выглядеть примерно так: "ПН (7:30)", "ВТ (10:45)", "СР (-)", "ЧТ (5:20)", и т.д. Плюс в том, что заголовок не будет "уезжать" из пределов видимости при большом количестве строк.
Оговорюсь, что не уверен, реализуемо ли это в AX. Вроде бы, должно работать... |
|
|
За это сообщение автора поблагодарили: oip (1). |
16.02.2009, 21:49 | #5 |
Axapta
|
|
|
17.02.2009, 00:16 | #6 |
Участник
|
Спасибо
Спасибо всем, кто ответил.
Интересные идеи, реально о некоторых даже не подумал. Буду согласовывать с заказчиком. |
|
16.02.2009, 21:08 | #7 |
MCTS
|
1. Используйте временную таблицу, у которой одна строка будет суммирующей.
2. Посмотрите tutorial_Form_Table. В этом случае total будет удобнее делать в первой строке. Но, лучше, конечно, отказаться от всего этого и использовать для сумм фиксированные элементы на форме...
__________________
Удачи. |
|
16.02.2009, 21:24 | #8 |
Участник
|
В принципе, можно попробовать периодически вызывать метод на форме (при помощи setTimeOut(), см. например Tutorial_Form_Tetris), приводящий размеры контролов в соответствие друг к другу.
Конечно, поддерживаю мнение, что "наворачивать" подобный функционал - это бредовое занятие, но иногда приятно "побредить" |
|
17.02.2009, 00:34 | #9 |
Участник
|
Я уже несколько раз реализовывал такую "фичу" на различных проектах.
Причем работало без особых проблем, насколько я помню. Правда итоги я всегда добавлял в грид, а не под гридом |
|