|
|
#1 |
|
Участник
|
Убрать полосы прокрутки на FormTableControl
Здравствуйте!
Появился следующий вопрос - есть ли возможность скрыть полосы прокрутки на таблице (FormTableControl)? Есть впечатление, что это невозможно реализовать стандартными средствами Axapta, но все же может имеется какое-нибудь решение?
__________________
С уважением, Александр. |
|
|
|
|
#2 |
|
Ищущий знания...
|
а зачем скрывать полосу прокрутки? вы хотите показать фиксированное кол-во строк \ столбцов?
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
|
|
|
#3 |
|
Участник
|
Цитата:
В таблице отображаются данные двумерного массива, выбрал этот контрол из-за возможности указания подписей (label'ов) как строк, так и столбцов. Конечно, если бы у ListControl'a была бы такая же возможность (label'ы строк), то предпочел бы его.
__________________
С уважением, Александр. |
|
|
|
|
#4 |
|
Ищущий знания...
|
а контрол Table пробовали?
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
|
|
|
#5 |
|
Участник
|
Так ведь FormTableControl это и есть Table, я про него и спрашивал.
__________________
С уважением, Александр. |
|
|
|
|
#6 |
|
Ищущий знания...
|
точно, приношу свои извинения, почему то подумал что вы про грид.
такой вопрос, там же можно указать фиксировано сколько надо отображать строк а сколько колонок. если они не влезают все на форму, то полосы прокрутки становятся активными. что в этом плохого? возможно задача стоит в указании "правильных" размеров в отображаемой форме?
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
|
|
|
#7 |
|
Участник
|
Я в этом плохого ничего не вижу. Дело в том, что пользователи хотят, чтобы полос не было видно вовсе (как активных, так и неактивных), пока таблица вмещается в дизайн формы, и появлялись в том случае, когда размеры таблицы превышают размеры формы. Для примера tutorial_Form_ListControl_CheckBox в Axapta 3 - если установить RadioButton в Report и уменьшить размеры формы, там как раз появляются скроллы. Но на этой форме используется ListView, в котором, как я понимаю, нельзя поставить подписи строк.
__________________
С уважением, Александр. |
|
|
|
|
#8 |
|
Участник
|
Сорри, не удержался. А пользователи не хотят, случайно, окошки не "крестиком" закрывать, а, например "плюсиком"?
Чем аргументируют пользователи свою хотелку? Спонсор проекта знает, во сколько ему обходится ваше время на решение данной конкретной задачи?
__________________
Ivanhoe as is.. |
|
|
|
|
#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). | |
|
|
#10 |
|
Ищущий знания...
|
в общем в FormTableControl похоже такой возможности нет (по крайней мере я такого не знаю).
да и не надо это. ИМХО. скорее всего пользователи хотят сделать из аксапты какую то другую программу, потому что им так привычно ![]() Цитата:
Сообщение от Ivanhoe
Сорри, не удержался. А пользователи не хотят, случайно, окошки не "крестиком" закрывать, а, например "плюсиком"?
Чем аргументируют пользователи свою хотелку? Спонсор проекта знает, во сколько ему обходится ваше время на решение данной конкретной задачи?
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
|
|
| За это сообщение автора поблагодарили: samolalex (1). | |
|
|
#11 |
|
Участник
|
Спасибо всем за мнения и советы по поводу реализации моей задачи, буду использовать их для дальнейшего принятия решения. Главное, что я убедился в нетривиальности задачи, что изначально и предполагал.
__________________
С уважением, Александр. |
|
|
|
|
#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). | |
|
|
#13 |
|
Moderator
|
Цитата:
|
|
|
|
|
#14 |
|
Участник
|
Цитата:
__________________
С уважением, Александр. |
|
|
|
|
Похожие темы
|
||||
| Тема | Ответов | |||
| Как убрать role center с клиента аксапты | 6 | |||
| Заморочка с FormTableControl | 4 | |||
| Как убрать из ОС капвложение | 7 | |||
| Основы работы с FormTableControl | 12 | |||
| Гибрид FormTableControl и FormDataSource | 27 | |||
|