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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 02.08.2007, 07:55   #1  
AxDude is offline
AxDude
Участник
 
18 / 10 (1) +
Регистрация: 04.03.2005
Адрес: USA, Cincinnati, Ohio.
FormTableControl и сортировка
Нужно добавить в FormTableControl возможность сортировки. Похоже, что заголовки столбцов не обрабатывают мышиные клики. Через InstallMessageProc сделать пока не удалось. Есть, конечно, вариант - использовать Grid на временной таблице, но хотелось бы сохранить Table control.
Кто-нибудь возился с этим левым (во всех отношениях) контролом?
Старый 21.08.2007, 07:04   #2  
AxDude is offline
AxDude
Участник
 
18 / 10 (1) +
Регистрация: 04.03.2005
Адрес: USA, Cincinnati, Ohio.
Всем спасибо за участие, вопрос закрыт.
Старый 21.08.2007, 09:41   #3  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
А как закрыт, расскажите.
Умудрились через Table или пошли через Grid?
Старый 22.08.2007, 08:12   #4  
AxDude is offline
AxDude
Участник
 
18 / 10 (1) +
Регистрация: 04.03.2005
Адрес: USA, Cincinnati, Ohio.
Сейчас FormTableControl сортируется по клику на любом заголовке столбца.
Правда, с некоторыми ограничениями: порядок сортировки только ascending, и растягивание столбцов не поддерживается. Но поскольку юзера полностью этим удовлетворились, то время тратить не стал.

Речь шла о форме Active Directory Import Wizard (SysUserADUserImportWizard) в 4.0, англ. версия.
Идея примерно такая:
1. Устанавливаем MessageProc для каждого заголовка столбцов. Здесь UserDetailsTable - это имя FormTableControl'а.

X++:
#define.WM_LBUTTONDOWN                  (0x0201)
    HWnd    tempHwnd;
    int         hdl;
     . . .
    headerHwnd =  winapi::getWindow(UserDetailsTable.hWnd(), #GW_CHILD);
    if (headerHwnd)
    {
       tempHwnd = headerHwnd;
       while (tempHwnd)
       {
          tempHwnd = winapi::getWindow(tempHwnd, #GW_HWNDNEXT);
          hdl = element.installMessageProc(#WM_LBUTTONDOWN,  tempHwnd, 'tableControlMessageProc');
       }
    }
2. Метод tableControlMessageProc - некая заглушка в нужном формате. Все попытки объявить здесь переменные приводили к рестарту Аксапты.

X++:
static int tableControlMessageProc() 
{
    element.sortTableControl();
    return 0;
}
3.В методе sortTableControl отслеживаем мышиные клики (координаты заголовков столбцов можно получить с помощью winapi::GetWindowRect() ) и смотрим, попадают ли они в заголовок столбца. Собственно сортировка сделана с помощью RecordSortedList.
Теги
table control

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Сортировка в гриде с двумя DataSource ViV DAX: Программирование 15 05.06.2014 15:55
FormListControl сортировка maximka DAX: Программирование 2 26.12.2008 13:44
Основы работы с FormTableControl PavelSR DAX: Программирование 12 21.09.2006 10:31
Глючит сортировка записей dd DAX: Функционал 5 17.08.2004 20:34
Гибрид FormTableControl и FormDataSource Андре DAX: Программирование 27 01.10.2003 09:58

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

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

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