AXForum  
Zurück   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Kennwort vergessen?
Registrieren Forum Rules Hilfe Benutzerliste Heutige Beiträge Suchen

 
 
Themen-Optionen Thema durchsuchen Ansicht
Alt 07.01.2010, 12:02   #1  
Antant ist offline
Antant
Участник
 
82 / 17 (1) ++
Registriert seit: 03.12.2005
? Закрепление полей grid при прокрутке
В excel есть замечательная возможность закрепление областей, т. е. при горизонтальной прокрутке данных в grid первые несколько полей остаются на месте.

Возможно ли такое реализовать в аксапте? Есть вариант сделать 2 гриды рядом, но в этом случае, если прокрутить одну из грид по вертикали, и спозицинировать на любой записи, выделенная запись в 2 гридах будет на разной высоте.
__________________
И почему никто меня не любит?
Да, я надоедливый
Alt 07.01.2010, 12:20   #2  
kashperuk ist offline
kashperuk
Участник
Benutzerbild von kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4.361 / 2084 (78) +++++++++
Registriert seit: 30.05.2004
Ort: Atlanta, GA, USA
Можно добавить на форму ActiveX компонент рабочего листа Excel - вуаля, поддержка закрепления области появляется автоматом.

Сделать это на гриде АХ врядли можно.
Alt 07.01.2010, 13:53   #3  
Zabr ist offline
Zabr
Участник
Axapta Retail User
 
1.202 / 345 (14) ++++++
Registriert seit: 26.06.2002
Ort: Москва
Zitat:
Zitat von Antant Beitrag anzeigen
если прокрутить одну из грид по вертикали, и спозицинировать на любой записи, выделенная запись в 2 гридах будет на разной высоте.
Если у обоих гридов одинаковый датасорс, то они должны прокручиваться синхронно. Нет сейчас под рукой Аксапты чтоб посмотреть, но вроде должно быть так. Проверьте сами, это ж на пару минут работы.
Alt 07.01.2010, 16:20   #4  
Gustav ist offline
Gustav
Moderator
Benutzerbild von Gustav
SAP
Лучший по профессии 2009
 
1.858 / 1152 (42) ++++++++
Registriert seit: 24.01.2006
Ort: Санкт-Петербург
Blog-Einträge: 19
Как раз недавно при поиске попадалась похожая тема.
Прикреплю ссылку до кучи: Grid с фиксацией части колонок при скроллинге.
Alt 11.01.2010, 07:07   #5  
Antant ist offline
Antant
Участник
 
82 / 17 (1) ++
Registriert seit: 03.12.2005
Zitat:
Zitat von Zabr Beitrag anzeigen
Если у обоих гридов одинаковый датасорс, то они должны прокручиваться синхронно. Нет сейчас под рукой Аксапты чтоб посмотреть, но вроде должно быть так. Проверьте сами, это ж на пару минут работы.
Я проверял, поэтому и пишу...
Был вариант выводить в label строки, но это будет не совсем удобно
__________________
И почему никто меня не любит?
Да, я надоедливый
Alt 27.12.2010, 10:27   #6  
S.Kuskov ist offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3.450 / 1792 (66) ++++++++
Registriert seit: 28.04.2007
Ort: Калуга
Синхронизация двух гридов
Подниму ка я в очередной раз давнюю тему синхронизации двух гридов.
Итак, имеем два грида связанных с одним источником данных. Общий источник данных обеспечивает синхронность выделения соответствующих строк, но не гарантирует сохранение взаимного расположения выделенных строк друг на против друга. Т.е. синхронизация данных есть (а это на мой взгляд самое главное), не хватает всего лишь синхронизации их отображения. Для этого достаточно отловить событие прокрутки одного грида и в нём прокрутить второй грид. что может быть проще . Тут у меня возникли непонятные трудности с перехватом события #WM_VSCROLL при помощи formRun.installMessageProc(). Пока сделал синхронизацию через таймер.
X++:
void timer()
{
    #WinAPI
    int NewPos = WinAPI::getScrollPos(Grid1.hWnd(), #SB_VERT);
    ;

    if (NewPos != pos)
    {
        pos = NewPos;

        WinAPI::setScrollPos(Grid2.hWnd(), #SB_VERT, pos, true);
        WinAPI::sendMessageEx(Grid2.hWnd(), #WM_VSCROLL, (pos << 16) | #SB_THUMBTRACK, 0);
        WinAPI::sendMessageEx(Grid2.hWnd(), #WM_VSCROLL, (pos << 16) | #SB_THUMBPOSITION, 0);
    }

    this.setTimeOut(identifierstr(timer), #delay, false);
}
Если кто подскажет как можно поймать #WM_VSCROLL, буду очень признателен.

P.S.: Делал на AX2009
This post has been rated by: Ace of Database (3).
Alt 27.12.2010, 16:40   #7  
Zabr ist offline
Zabr
Участник
Axapta Retail User
 
1.202 / 345 (14) ++++++
Registriert seit: 26.06.2002
Ort: Москва
Вспомнил я тут кое-что. Давным-давно участвовал в разработке одной системы, тогда еще с текстовым (в смысле не графическим) интерфейсом. Штатного средства закрепления области в гридах тоже не было. Выкручивались так:
1) делалось, чтобы прокрутка вбок была возможна только целыми колонками, где-то по одной колонке, а где-то по нескольку сразу, например по N
2) "закрепляемая" область тупо дублировалась в этом гриде через каждые N колонок. При прокрутке у пользователя создавался полный эффект, что область из нескольких колонок слева закреплена.
Alt 27.12.2010, 16:56   #8  
S.Kuskov ist offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3.450 / 1792 (66) ++++++++
Registriert seit: 28.04.2007
Ort: Калуга
Zabr, это уже совсем что-то жестокое. Славо богу в аксапте два рядом стоящих грида полностью решают этот вопрос.
Alt 14.04.2011, 17:14   #9  
uchenik ist offline
uchenik
Участник
 
119 / 20 (1) +++
Registriert seit: 15.12.2008
Zitat:
Zitat von S.Kuskov Beitrag anzeigen
Подниму ка я в очередной раз давнюю тему синхронизации двух гридов.
Итак, имеем два грида связанных с одним источником данных. Общий источник данных обеспечивает синхронность выделения соответствующих строк, но не гарантирует сохранение взаимного расположения выделенных строк друг на против друга. Т.е. синхронизация данных есть (а это на мой взгляд самое главное), не хватает всего лишь синхронизации их отображения. Для этого достаточно отловить событие прокрутки одного грида и в нём прокрутить второй грид. что может быть проще . Тут у меня возникли непонятные трудности с перехватом события #WM_VSCROLL при помощи formRun.installMessageProc(). Пока сделал синхронизацию через таймер.
X++:
void timer()
{
    #WinAPI
    int NewPos = WinAPI::getScrollPos(Grid1.hWnd(), #SB_VERT);
    ;

    if (NewPos != pos)
    {
        pos = NewPos;

        WinAPI::setScrollPos(Grid2.hWnd(), #SB_VERT, pos, true);
        WinAPI::sendMessageEx(Grid2.hWnd(), #WM_VSCROLL, (pos << 16) | #SB_THUMBTRACK, 0);
        WinAPI::sendMessageEx(Grid2.hWnd(), #WM_VSCROLL, (pos << 16) | #SB_THUMBPOSITION, 0);
    }

    this.setTimeOut(identifierstr(timer), #delay, false);
}
Если кто подскажет как можно поймать #WM_VSCROLL, буду очень признателен.

P.S.: Делал на AX2009

А удалось ли победить отказ прокрутки, при достижении неконтролируемым гридом конца?
Alt 14.04.2011, 19:01   #10  
S.Kuskov ist offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3.450 / 1792 (66) ++++++++
Registriert seit: 28.04.2007
Ort: Калуга
Zitat:
Zitat von uchenik Beitrag anzeigen
А удалось ли победить отказ прокрутки, при достижении неконтролируемым гридом конца?
Не понял вопроса. У себя я вродебы никаких проблем не замечал. Может плохо искал? Опишите подробнее, что и в какой момент происходит не так.
Alt 24.04.2011, 22:00   #11  
uchenik ist offline
uchenik
Участник
 
119 / 20 (1) +++
Registriert seit: 15.12.2008
Два грида, один источник данных, на втором стрелку скрола листаем вниз, при подходе к краю сетка продолжает листаться, но в этот момент перестает листаться первый грид (который двигается кодом). Перестают листать то ли после того как показали свободное пространство в гриде на одну строку, то ли на две.
Alt 17.08.2012, 10:14   #12  
Pustik ist offline
Pustik
Участник
 
807 / 372 (14) ++++++
Registriert seit: 04.06.2004
Коллеги, ни у кого каких-нибудь новых идей не возникло?
__________________
-Ты в гномиков веришь?
-Нет.
-А они в тебя верят, смотри, не подведи их.
Alt 18.02.2013, 13:11   #13  
user_ax ist offline
user_ax
Участник
Benutzerbild von user_ax
 
599 / 39 (3) +++
Registriert seit: 07.10.2012
Ort: ZP
Та же задача...
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
axaptapedia: Filter-by-Grid Blog bot DAX Blogs 2 30.05.2012 13:39
Dynamics AX: DAX 4.0 Filter by Grid [Update] Blog bot DAX Blogs 0 27.04.2007 17:10
Advanced programming: Grid data and view manipulations batiskaf_new DAX: Программирование 15 21.06.2006 11:44
Динамическая привязка полей в Grid Bars DAX: Программирование 1 22.11.2005 14:16
Объединить несколько полей таблицы в одном поле Grid-а на форме? storer DAX: Программирование 2 12.11.2003 14:08

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Gehe zu

Рейтинг@Mail.ru
Alle Zeitangaben in WEZ +3. Es ist jetzt 12:20 Uhr.
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.