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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 23.11.2010, 09:50   #1  
samolalex is offline
samolalex
Участник
Аватар для samolalex
Самостоятельные клиенты AX
 
259 / 107 (4) +++++
Регистрация: 18.06.2010
Адрес: Москва
Убрать полосы прокрутки на FormTableControl
Здравствуйте!
Появился следующий вопрос - есть ли возможность скрыть полосы прокрутки на таблице (FormTableControl)? Есть впечатление, что это невозможно реализовать стандартными средствами Axapta, но все же может имеется какое-нибудь решение?
__________________
С уважением, Александр.
Старый 23.11.2010, 10:32   #2  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
Цитата:
Сообщение от samolalex Посмотреть сообщение
Здравствуйте!
Появился следующий вопрос - есть ли возможность скрыть полосы прокрутки на таблице (FormTableControl)? Есть впечатление, что это невозможно реализовать стандартными средствами Axapta, но все же может имеется какое-нибудь решение?
а зачем скрывать полосу прокрутки? вы хотите показать фиксированное кол-во строк \ столбцов?
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
Старый 23.11.2010, 10:46   #3  
samolalex is offline
samolalex
Участник
Аватар для samolalex
Самостоятельные клиенты AX
 
259 / 107 (4) +++++
Регистрация: 18.06.2010
Адрес: Москва
Цитата:
Сообщение от lev Посмотреть сообщение
а зачем скрывать полосу прокрутки? вы хотите показать фиксированное кол-во строк \ столбцов?
Это просьба пользователей. Да, число столбцов и строк будет постоянным.

В таблице отображаются данные двумерного массива, выбрал этот контрол из-за возможности указания подписей (label'ов) как строк, так и столбцов. Конечно, если бы у ListControl'a была бы такая же возможность (label'ы строк), то предпочел бы его.
__________________
С уважением, Александр.
Старый 23.11.2010, 10:54   #4  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
а контрол Table пробовали?
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
Старый 23.11.2010, 10:59   #5  
samolalex is offline
samolalex
Участник
Аватар для samolalex
Самостоятельные клиенты AX
 
259 / 107 (4) +++++
Регистрация: 18.06.2010
Адрес: Москва
Цитата:
Сообщение от lev Посмотреть сообщение
а контрол Table пробовали?
Так ведь FormTableControl это и есть Table, я про него и спрашивал.
__________________
С уважением, Александр.
Старый 23.11.2010, 11:07   #6  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
Цитата:
Сообщение от samolalex Посмотреть сообщение
Так ведь FormTableControl это и есть Table, я про него и спрашивал.
точно, приношу свои извинения, почему то подумал что вы про грид.
такой вопрос, там же можно указать фиксировано сколько надо отображать строк а сколько колонок. если они не влезают все на форму, то полосы прокрутки становятся активными. что в этом плохого?
возможно задача стоит в указании "правильных" размеров в отображаемой форме?
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
Старый 23.11.2010, 11:19   #7  
samolalex is offline
samolalex
Участник
Аватар для samolalex
Самостоятельные клиенты AX
 
259 / 107 (4) +++++
Регистрация: 18.06.2010
Адрес: Москва
Цитата:
Сообщение от lev Посмотреть сообщение
такой вопрос, там же можно указать фиксировано сколько надо отображать строк а сколько колонок. если они не влезают все на форму, то полосы прокрутки становятся активными. что в этом плохого?
возможно задача стоит в указании "правильных" размеров в отображаемой форме?
Я в этом плохого ничего не вижу. Дело в том, что пользователи хотят, чтобы полос не было видно вовсе (как активных, так и неактивных), пока таблица вмещается в дизайн формы, и появлялись в том случае, когда размеры таблицы превышают размеры формы. Для примера tutorial_Form_ListControl_CheckBox в Axapta 3 - если установить RadioButton в Report и уменьшить размеры формы, там как раз появляются скроллы. Но на этой форме используется ListView, в котором, как я понимаю, нельзя поставить подписи строк.
__________________
С уважением, Александр.
Старый 23.11.2010, 11:37   #8  
Ivanhoe is offline
Ivanhoe
Участник
Аватар для Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2156 (80) +++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
Сорри, не удержался. А пользователи не хотят, случайно, окошки не "крестиком" закрывать, а, например "плюсиком"?

Чем аргументируют пользователи свою хотелку? Спонсор проекта знает, во сколько ему обходится ваше время на решение данной конкретной задачи?
__________________
Ivanhoe as is..
Старый 23.11.2010, 11:42   #9  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Цитата:
Сообщение от samolalex Посмотреть сообщение
Это просьба пользователей. Да, число столбцов и строк будет постоянным.

В таблице отображаются данные двумерного массива, выбрал этот контрол из-за возможности указания подписей (label'ов) как строк, так и столбцов. Конечно, если бы у ListControl'a была бы такая же возможность (label'ы строк), то предпочел бы его.
Возьмите ActiveX OWC Spreadsheet. Там и полосы прокрутки можно скрывать, и диапазон ячеек фиксировать, чтобы пользователь не "уехал" за пределы зоны отображения, и свои заголовки (в отличие от обычного Excel) задавать для строк и колонок.

P.S. Для ознакомления с возможностями этого подхода нарисуйте Spreadsheet на листе Excel (http://www.axforum.info/forums/blog.php?b=48), а потом выполните такой код VBA (взят из оригинального хелпа с небольшой добавкой от меня):
Код:
Sub Create_Datasheet()

    Dim hdrColHeadings
    Dim hdrRowHeadings
    Dim wndActive
    Dim Spreadsheet1 As OWC10.Spreadsheet
    
    Set Spreadsheet1 = ActiveSheet.OLEObjects(1).Object

    Set wndActive = Spreadsheet1.ActiveWindow

    ' Hide various UI elements.
    wndActive.DisplayWorkbookTabs = False
    Spreadsheet1.DisplayToolbar = False

    ' Display the title bar and set it's caption.
    Spreadsheet1.DisplayTitleBar = True
    Spreadsheet1.TitleBar.Caption = "Revenue Worksheet"

    ' Resize the spreadsheet component.
    Spreadsheet1.AutoFit = True

    ' Limit the viewable range of the active sheet.
    wndActive.ViewableRange = "A1:D5"

    ' Set a variable to the column headings in the active window.
    Set hdrColHeadings = wndActive.ColumnHeadings

    ' Set a variable to the row headings in the active window.
    Set hdrRowHeadings = wndActive.RowHeadings

    ' Set the headings of columns A through D.
    hdrColHeadings(1).Caption = "Qtr 1"
    hdrColHeadings(2).Caption = "Qtr 2"
    hdrColHeadings(3).Caption = "Qtr 3"
    hdrColHeadings(4).Caption = "Qtr 4"

    ' Set the headings of rows 1 though 5.
    hdrRowHeadings(1).Caption = "1996"
    hdrRowHeadings(2).Caption = "1997"
    hdrRowHeadings(3).Caption = "1998"
    hdrRowHeadings(4).Caption = "1999"
    hdrRowHeadings(5).Caption = "2000"
End Sub

Последний раз редактировалось Gustav; 23.11.2010 в 11:50.
За это сообщение автора поблагодарили: samolalex (1), sashanka (1).
Старый 23.11.2010, 11:46   #10  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
в общем в FormTableControl похоже такой возможности нет (по крайней мере я такого не знаю).
да и не надо это. ИМХО. скорее всего пользователи хотят сделать из аксапты какую то другую программу, потому что им так привычно
Цитата:
Сообщение от Ivanhoe
Сорри, не удержался. А пользователи не хотят, случайно, окошки не "крестиком" закрывать, а, например "плюсиком"?

Чем аргументируют пользователи свою хотелку? Спонсор проекта знает, во сколько ему обходится ваше время на решение данной конкретной задачи?
полностью согласен!
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
За это сообщение автора поблагодарили: samolalex (1).
Старый 23.11.2010, 11:48   #11  
samolalex is offline
samolalex
Участник
Аватар для samolalex
Самостоятельные клиенты AX
 
259 / 107 (4) +++++
Регистрация: 18.06.2010
Адрес: Москва
Спасибо всем за мнения и советы по поводу реализации моей задачи, буду использовать их для дальнейшего принятия решения. Главное, что я убедился в нетривиальности задачи, что изначально и предполагал.
__________________
С уважением, Александр.
Старый 23.11.2010, 11:50   #12  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Можно так
X++:
public void run()
{
    #winapi
    #define.GWL_STYLE           (-16)
    #define.SWP_FRAMECHANGED    (0x0020)
    int                         long;
    int setWindowLong(HWND _HWND, int _nIndex, int _dwNewLong)
    {
        DLL         DLL;
        DLLFunction DLLFunction;
        ;
        DLL = new DLL("user32");
        DLLFunction = new DLLFunction(DLL,'SetWindowLongA');
        DLLFunction.arg(ExtTypes::DWord, ExtTypes::DWord, ExtTypes::DWord);
        DLLFunction.returns(ExtTypes::DWord);

        return DLLFunction.call(_HWND, _nIndex, _dwNewLong);
    }
    ;
    super();

    long  = WinApi::getWindowLong(TableControl.hWnd(), #GWL_STYLE);
    long = long & ~(#WS_VSCROLL + #WS_HSCROLL);
    setWindowLong(TableControl.hWnd(), #GWL_STYLE, long);

    winapi::setWindowPos(TableControl.hWnd(), 0, 0, 0, 0, true, true, #SWP_NOMOVE | #SWP_NOSIZE | #SWP_FRAMECHANGED );
}
Замечу, что это код метода run() формы - в super() происходит аналогичная установка в коде ядра.

Только при изменении размера контрола это будет не очень красиво отрисовываться - скроллбары появляются с задержкой.
__________________
Axapta v.3.0 sp5 kr2
За это сообщение автора поблагодарили: kornix (1), samolalex (1).
Старый 23.11.2010, 12:05   #13  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Цитата:
Сообщение от samolalex Посмотреть сообщение
Спасибо всем за мнения и советы по поводу реализации моей задачи, буду использовать их для дальнейшего принятия решения. Главное, что я убедился в нетривиальности задачи, что изначально и предполагал.
Главное, помните о том, что пользователи, осознанно или нет, в 95 % процентов случаев имеют в виду "как в Excel". Вот увидите, следующим их желанием будет копирование вашей таблички по Ctrl+C
Старый 23.11.2010, 12:23   #14  
samolalex is offline
samolalex
Участник
Аватар для samolalex
Самостоятельные клиенты AX
 
259 / 107 (4) +++++
Регистрация: 18.06.2010
Адрес: Москва
Цитата:
Сообщение от Gustav Посмотреть сообщение
Вот увидите, следующим их желанием будет копирование вашей таблички по Ctrl+C
Да уж, это было бы ужасно
__________________
С уважением, Александр.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Как убрать role center с клиента аксапты IKA DAX: Администрирование 6 06.11.2009 12:12
Заморочка с FormTableControl egorych DAX: Программирование 4 21.09.2009 17:49
Как убрать из ОС капвложение Nazka DAX: Функционал 7 26.06.2009 09:34
Основы работы с FormTableControl PavelSR DAX: Программирование 12 21.09.2006 10:31
Гибрид FormTableControl и FormDataSource Андре DAX: Программирование 27 01.10.2003 09:58

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

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

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