23.11.2010, 09:50 | #1 |
Участник
|
Убрать полосы прокрутки на FormTableControl
Здравствуйте!
Появился следующий вопрос - есть ли возможность скрыть полосы прокрутки на таблице (FormTableControl)? Есть впечатление, что это невозможно реализовать стандартными средствами Axapta, но все же может имеется какое-нибудь решение?
__________________
С уважением, Александр. |
|
23.11.2010, 10:32 | #2 |
Ищущий знания...
|
а зачем скрывать полосу прокрутки? вы хотите показать фиксированное кол-во строк \ столбцов?
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
23.11.2010, 10:46 | #3 |
Участник
|
Цитата:
В таблице отображаются данные двумерного массива, выбрал этот контрол из-за возможности указания подписей (label'ов) как строк, так и столбцов. Конечно, если бы у ListControl'a была бы такая же возможность (label'ы строк), то предпочел бы его.
__________________
С уважением, Александр. |
|
23.11.2010, 10:54 | #4 |
Ищущий знания...
|
а контрол Table пробовали?
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
23.11.2010, 10:59 | #5 |
Участник
|
Так ведь FormTableControl это и есть Table, я про него и спрашивал.
__________________
С уважением, Александр. |
|
23.11.2010, 11:07 | #6 |
Ищущий знания...
|
точно, приношу свои извинения, почему то подумал что вы про грид.
такой вопрос, там же можно указать фиксировано сколько надо отображать строк а сколько колонок. если они не влезают все на форму, то полосы прокрутки становятся активными. что в этом плохого? возможно задача стоит в указании "правильных" размеров в отображаемой форме?
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
23.11.2010, 11:19 | #7 |
Участник
|
Я в этом плохого ничего не вижу. Дело в том, что пользователи хотят, чтобы полос не было видно вовсе (как активных, так и неактивных), пока таблица вмещается в дизайн формы, и появлялись в том случае, когда размеры таблицы превышают размеры формы. Для примера tutorial_Form_ListControl_CheckBox в Axapta 3 - если установить RadioButton в Report и уменьшить размеры формы, там как раз появляются скроллы. Но на этой форме используется ListView, в котором, как я понимаю, нельзя поставить подписи строк.
__________________
С уважением, Александр. |
|
23.11.2010, 11:37 | #8 |
Участник
|
Сорри, не удержался. А пользователи не хотят, случайно, окошки не "крестиком" закрывать, а, например "плюсиком"?
Чем аргументируют пользователи свою хотелку? Спонсор проекта знает, во сколько ему обходится ваше время на решение данной конкретной задачи?
__________________
Ivanhoe as is.. |
|
23.11.2010, 11:42 | #9 |
Moderator
|
Цитата:
Сообщение от samolalex
Это просьба пользователей. Да, число столбцов и строк будет постоянным.
В таблице отображаются данные двумерного массива, выбрал этот контрол из-за возможности указания подписей (label'ов) как строк, так и столбцов. Конечно, если бы у ListControl'a была бы такая же возможность (label'ы строк), то предпочел бы его. 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 |
Ищущий знания...
|
в общем в FormTableControl похоже такой возможности нет (по крайней мере я такого не знаю).
да и не надо это. ИМХО. скорее всего пользователи хотят сделать из аксапты какую то другую программу, потому что им так привычно Цитата:
Сообщение от Ivanhoe
Сорри, не удержался. А пользователи не хотят, случайно, окошки не "крестиком" закрывать, а, например "плюсиком"?
Чем аргументируют пользователи свою хотелку? Спонсор проекта знает, во сколько ему обходится ваше время на решение данной конкретной задачи?
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
|
За это сообщение автора поблагодарили: samolalex (1). |
23.11.2010, 11:48 | #11 |
Участник
|
Спасибо всем за мнения и советы по поводу реализации моей задачи, буду использовать их для дальнейшего принятия решения. Главное, что я убедился в нетривиальности задачи, что изначально и предполагал.
__________________
С уважением, Александр. |
|
23.11.2010, 11:50 | #12 |
Участник
|
Можно так
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 ); } Только при изменении размера контрола это будет не очень красиво отрисовываться - скроллбары появляются с задержкой.
__________________
Axapta v.3.0 sp5 kr2 |
|
|
За это сообщение автора поблагодарили: kornix (1), samolalex (1). |
23.11.2010, 12:05 | #13 |
Moderator
|
Главное, помните о том, что пользователи, осознанно или нет, в 95 % процентов случаев имеют в виду "как в Excel". Вот увидите, следующим их желанием будет копирование вашей таблички по Ctrl+C
|
|
23.11.2010, 12:23 | #14 |
Участник
|
Да уж, это было бы ужасно
__________________
С уважением, Александр. |
|
|
Похожие темы | ||||
Тема | Ответов | |||
Как убрать role center с клиента аксапты | 6 | |||
Заморочка с FormTableControl | 4 | |||
Как убрать из ОС капвложение | 7 | |||
Основы работы с FormTableControl | 12 | |||
Гибрид FormTableControl и FormDataSource | 27 |
|