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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 16.02.2009, 19:14   #1  
Vitali_i is offline
Vitali_i
Участник
 
13 / 10 (1) +
Регистрация: 15.07.2004
Адрес: Москва
Поймать resize() метод или ...
Всем доброго дня.
Задача:Надо реализовать следующий интерфейс.

Есть grid на форме из 7 колонок (дни недели).Сотрудники добавляют строки-задачи, которыми они были заняты в течение недели, и проставляют время в соответствующих колонках.

Необходимо добавить снизу (под гридом) строку Total, которая будет суммировать время по дням. Желательно, чтобы при изменении ширины колонок грида соответственно менялась нижняя строка total.

Метод resize() формы не всегда вызывается при изменении грида, т.к. сам грид может быть меньше, чем форма.
Правильный способ, кмк, переопределить метод resize() grid-a, но этого нельзя сделать в нашей конфигурации. Ax3.0 SP4.

Вопрос: Как поймать метод resize() у грида? Или как реализовать данную задачу другими методами / интерфейсами?
Старый 16.02.2009, 19:33   #2  
oip is offline
oip
Axapta
Лучший по профессии 2014
 
2,564 / 1416 (53) ++++++++
Регистрация: 28.11.2005
Записей в блоге: 1
Disclaimer: я рассматриваю данную задачу только как сугубо-теоретическую, просто для развлечения, потому как не вижу смысла в реальной ситуации подгонять размеры. Абслютно бесполезная трата времени.

Интуиция мне подсказывает, что всякие "ресайзы" (я вообще только что узнал, что оказывается есть такой метод) и попытки вручную задать размеры контролов - это путь в никуда. Даже пробовать и думать в этом направлении не буду. Так что, как вариант, в неких случая (я же всей вашей задачи и ситуации не вижу) пойдет такой финт: добавить в таблицу некое поле, NoYes, например. Пусть у всех строк будет это поле равно NoYes::No, а у одной, которая будет означать суммарную строку Total, куда при любом изменении будет записываться суммарные значения, оно будет равно NoYes::Yes. Делаем, чтобы новая запись в гриде создавалась всегда над той строкой, где стоит курсор, а в любой квери по датасорсу добавляем, чтобы в выборку строка Total всегда попала, плюс упорядочиваем по этому самому фиктивному полю. Вуалля. Строка Total всегда будет последней.
Старый 16.02.2009, 19:55   #3  
TasmanianDevil is offline
TasmanianDevil
Мрачный тип
Аватар для TasmanianDevil
Злыдни
 
886 / 389 (14) ++++++
Регистрация: 24.01.2005
Адрес: Томск
нереализуемо ...
__________________
Мы летаем, кружимся, нагоняем ужасы ...
Старый 16.02.2009, 21:00   #4  
Ruff is offline
Ruff
Дмитрий Ерин
Аватар для Ruff
1C
 
475 / 396 (14) ++++++
Регистрация: 18.09.2003
Адрес: Тула
Развивая мысль, высказанную oip, я бы предложил динамически вписывать суммарные значения непосредственно в заголовок грида (в момент сохранения записи). То есть, заголовок будет выглядеть примерно так: "ПН (7:30)", "ВТ (10:45)", "СР (-)", "ЧТ (5:20)", и т.д. Плюс в том, что заголовок не будет "уезжать" из пределов видимости при большом количестве строк.

Оговорюсь, что не уверен, реализуемо ли это в AX. Вроде бы, должно работать...
За это сообщение автора поблагодарили: oip (1).
Старый 16.02.2009, 21:08   #5  
SimPai is offline
SimPai
MCTS
MCBMSS
 
105 / 10 (1) +
Регистрация: 22.05.2002
Адрес: Москва
1. Используйте временную таблицу, у которой одна строка будет суммирующей.
2. Посмотрите tutorial_Form_Table. В этом случае total будет удобнее делать в первой строке.

Но, лучше, конечно, отказаться от всего этого и использовать для сумм фиксированные элементы на форме...
__________________
Удачи.
Старый 16.02.2009, 21:24   #6  
Bishop is offline
Bishop
Участник
 
89 / 60 (3) ++++
Регистрация: 12.08.2004
Адрес: Москва
В принципе, можно попробовать периодически вызывать метод на форме (при помощи setTimeOut(), см. например Tutorial_Form_Tetris), приводящий размеры контролов в соответствие друг к другу.

Конечно, поддерживаю мнение, что "наворачивать" подобный функционал - это бредовое занятие, но иногда приятно "побредить"
Старый 16.02.2009, 21:49   #7  
oip is offline
oip
Axapta
Лучший по профессии 2014
 
2,564 / 1416 (53) ++++++++
Регистрация: 28.11.2005
Записей в блоге: 1
Цитата:
Сообщение от Ruff Посмотреть сообщение
Оговорюсь, что не уверен, реализуемо ли это в AX. Вроде бы, должно работать...
Реализуемо, вроде.
Старый 17.02.2009, 00:16   #8  
Vitali_i is offline
Vitali_i
Участник
 
13 / 10 (1) +
Регистрация: 15.07.2004
Адрес: Москва
Спасибо
Спасибо всем, кто ответил.
Интересные идеи, реально о некоторых даже не подумал.

Буду согласовывать с заказчиком.
Старый 17.02.2009, 00:34   #9  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Я уже несколько раз реализовывал такую "фичу" на различных проектах.
Причем работало без особых проблем, насколько я помню.
Правда итоги я всегда добавлял в грид, а не под гридом
Теги
грид, день недели, интерфейс

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Как вызвать метод для поля в FormDataSource? Maxim Gorbunov DAX: Программирование 3 08.05.2007 11:28
Дисплей метод таблицы который вызывается из ГРИДА 3oppo DAX: Программирование 10 23.05.2006 06:47
display метод с параметром Андре DAX: Программирование 5 11.01.2006 19:04
Как вызвать метод на COMVariant? Andronov DAX: Программирование 2 06.08.2003 08:29
Передача массива VARIANTов в Automation метод Maximin DAX: Программирование 0 09.10.2002 19:31

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 08:28.