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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 03.02.2006, 11:46   #1  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,323 / 3547 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Изменение масштаба отчета (программное)
Господа - подскажите кто знает (или скажите авторитетно что так невозможно ).
Возможно ли программно как-то повлиять на масштаб выводимого отчета (под отчетом понимается отчеты из узла \Reports\) ? Т.е. к примеру вывести отчет в масштабе по ширине страницы или 25% - в таком плане.
Я вроде такого не находил - но может кто сталкивался.

Вопрос именно про данную возможность. Как это обойти (нарисовать в Excel, прикрутить OLAP или Crystal) - это уже другой вопрос.
__________________
Возможно сделать все. Вопрос времени

Последний раз редактировалось sukhanchik; 03.02.2006 в 11:51.
Старый 03.02.2006, 12:52   #2  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Присоединяюсь к вопросу! Мне тоже интересно.
Сколь мне помнится (имхо), его вроде и ручками-то не сильно можно подправить... Помню только инфо-лог, констатирующий, что мой отчет был отмасштабирован типа "в 49 % от нормального размера"...
Старый 03.02.2006, 13:00   #3  
KMV is offline
KMV
Участник
 
201 / 25 (1) +++
Регистрация: 11.10.2002
Адрес: Москва
Да нет, ручками то пожалуйста, правой кнопкой мыши или Alt-D, Alt-U.

Последний раз редактировалось KMV; 03.02.2006 в 13:26.
За это сообщение автора поблагодарили: sukhanchik (2).
Старый 03.02.2006, 13:18   #4  
braathe is offline
braathe
Участник
 
90 / 13 (1) ++
Регистрация: 16.02.2005
Можно попробовать докопатся до параметров "ResolutionX" "ResolutionY". Сам не пробпвал но звучит как-то похоже на истину.
Старый 03.02.2006, 15:51   #5  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
To KMV: Спасибо за подсказку, освоил ручные операции, буду знать...
To ALL: ...НО, мне кажется, это не то, что надо sukhanchik-у.
По-моему, речь идет о том, как например, если в Экселе у нас в режиме 100% на одну страницу помещается 8 колонок из 10, а 2 другие выводятся на следующий лист (справа)... И вот как раз эти "проценты" и варианты размещения на страницах (одной или двух) хочется контролировать кодом... Ну, т.е. чтобы было "как в Excel-e". Так?
Старый 03.02.2006, 16:02   #6  
KMV is offline
KMV
Участник
 
201 / 25 (1) +++
Регистрация: 11.10.2002
Адрес: Москва
to Gustav

подобное недавно обсуждалось тут

ни ручками, ни программно я не знаю, как это сделать. Похоже, что никак.
За это сообщение автора поблагодарили: Gustav (1).
Старый 03.02.2006, 21:03   #7  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,323 / 3547 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Для начала - спасибо всем ответившим.
2Gustav: не.. как в Excel - это не то. Тут я присоединяюсь к фразе George Nordic про количество шапок из одной овчины (из ветки, указанной KMV). Вопрос был именно про дублирование того контекстного меню, появляющегося при запуске отчета - или же задания из кода некого процента масштаба перед открытием отчета.

2KMV: Про клавиши Alt-D, Alt-U - я не знал - спасибо

2braathe: А что это за параметры? И где они обитают? Надеюсь не предлагается через WinAPI измерять текущее разрешение?

Как мне тут сказали коллеги - возможность изменения масштаба появилась только в 3.0 - и поэтому никакого программного интерфейса чтобы к нему достучаться - нет.

В принципе - это был больше теоретически-академический вопрос. Думал - что может кто знает .
__________________
Возможно сделать все. Вопрос времени
Старый 04.02.2006, 08:00   #8  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от sukhanchik
Как мне тут сказали коллеги - возможность изменения масштаба появилась только в 3.0 - и поэтому никакого программного интерфейса чтобы к нему достучаться - нет.
Изменение масштаба было очень давно.
Но только кнопками. Контекстное меню на правой кнопке мыши действительно появилось только в 3.0

Добавил в FAQ про кнопки.
__________________
полезное на axForum, github, vk, coub.
Старый 11.05.2011, 11:01   #9  
ZVV is offline
ZVV
MCITP
MCP
Oracle
MCBMSS
 
1,006 / 246 (11) ++++++
Регистрация: 13.02.2004
Адрес: Минск
?
По сабжу (программное изменение масштаба стандартного отчёта) ни у кого нет никакой новой информации? Может в 2009 что-то поменялось и кому-то удалось совершить сие?

Хотя бы через WinAPI...
__________________
Zhirenkov Vitaly
Старый 11.05.2011, 12:45   #10  
someOne is offline
someOne
Участник
Аватар для someOne
 
174 / 432 (15) +++++++
Регистрация: 11.12.2008
Адрес: Москва
Не сочтите этот способ за извращение, но у меня такой пример сработал.

На мысль навело использование горячих клавиш управления масштабом отчета.

Итак, создаем класс
X++:
class Class1
и методы
X++:
static client void test()
{
    thread thread = new thread();
    ;

    thread.run(classnum(Class1), identifierstr(runThread));
}
Именно этот метод генерирует нажатия HotKeys Alt + D
X++:
static client void runThread(thread _thread)
{
    ;
    System.Windows.Forms.SendKeys::SendWait("%D");
    System.Windows.Forms.SendKeys::SendWait("%D");
    System.Windows.Forms.SendKeys::SendWait("%D");

    System.Windows.Forms.SendKeys::SendWait("%D");
    System.Windows.Forms.SendKeys::SendWait("%D");
    System.Windows.Forms.SendKeys::SendWait("%D");
}
Далее, в самом отчете, например в методе run или Print перекрываем метод

X++:
public void run()
{
    ;
    super();

    Class1::test();
}
И вуаля - масштаб отчета изменился как надо.

Данная идея применима и к любым другим функциям Аксапта, где нет управления методами из кода x++, но есть управление с помощью Hot Keys.

Естественно, работать будет лишь в Dax2009 и Ax4.0, наверное.

Описание используемого метода NET тут -
http://msdn.microsoft.com/ru-ru/libr....sendkeys.aspx
За это сообщение автора поблагодарили: S.Kuskov (2), mazzy (2), ZVV (2), Logger (5).
Старый 11.05.2011, 14:41   #11  
ZVV is offline
ZVV
MCITP
MCP
Oracle
MCBMSS
 
1,006 / 246 (11) ++++++
Регистрация: 13.02.2004
Адрес: Минск
->
Если б была горячая клавиша "по ширине страницы", то это было бы круто... а так, баловство одно...
Или такая клавиша всё-таки есть?
Кстати, ни в одной документации не могу найти описания этих Alt-D, Alt-U. , странно...

Пробую что-то наваять через винАпи.. может выйдет
__________________
Zhirenkov Vitaly
Старый 11.05.2011, 15:53   #12  
ZVV is offline
ZVV
MCITP
MCP
Oracle
MCBMSS
 
1,006 / 246 (11) ++++++
Регистрация: 13.02.2004
Адрес: Минск
->
Через винАпи получилось развернуть на всю страницу примерно так:
(На основе решения someOne через поток)

X++:
class ReportMaximizeHandler
{
}

static client void maximize(Str _reportName)
{
    thread thread = new thread();
    ;

    thread.setInputParm([_reportName]);
    thread.run(classnum(ReportMaximizeHandler), identifierstr(runThread));

}

#WinAPI
static client void runThread(thread _thread)
{
    Str _str;

    hwnd    hwnd;
    int     retVal;
    ;


    [_str] = _thread.getInputParm();

    hwnd = WinAPI::findWindow("", _str + " - Report");

    if (hwnd)
    {
        WinApi::bringWindowToTop(hwnd);

        WinApi::forceMaximizeWindow(hwnd);

        retVal = WinApi::postMessage(hwnd, 0x007B,  hwnd, 0xFFFF);

        retVal = WinApi::postMessage(hwnd, #WM_KEYDOWN,  0x26, 0);
        retVal = WinApi::postMessage(hwnd, #WM_KEYUP,  0x26, 0);

        retVal = WinApi::postMessage(hwnd, #WM_KEYDOWN,  0x26, 0);
        retVal = WinApi::postMessage(hwnd, #WM_KEYUP,  0x26, 0);

        retVal = WinApi::postMessage(hwnd, #WM_KEYDOWN,  0x0D, 0);
        retVal = WinApi::postMessage(hwnd, #WM_KEYUP,  0x0D, 0);

    }
}

// Report.Run()
public void run()
{
    ;
    super();

    ReportMaximizeHandler::maximize(this.design().caption());
}
Проблема с поиском нужного окна правда осталась до конца не решённая.
Не удалось красиво найти hwnd текущего сформированного отчёта. Только по имени.
В принципе находит всегда последний, так что не сильно критично, но всё равно не красиво. Буду благодарен за помощь в этом направлении.
__________________
Zhirenkov Vitaly
Старый 11.05.2011, 16:23   #13  
ZVV is offline
ZVV
MCITP
MCP
Oracle
MCBMSS
 
1,006 / 246 (11) ++++++
Регистрация: 13.02.2004
Адрес: Минск
->
Только между вызовами WinAPI рекомендую добавить небольшие sleep-ы... иначе будет падать периодически...
__________________
Zhirenkov Vitaly
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Программное изменение "Счет на" в заказе Antant DAX: Программирование 12 02.02.2009 10:49
Динамическое изменение query для отчета Peppi DAX: Программирование 1 25.11.2008 06:59
изменение стандартного диалогового окна отчета алька DAX: Программирование 8 15.04.2007 00:55
Изменение размера отчёта больше А4 Whity DAX: Программирование 8 12.12.2006 14:42
Изменение отчета счет-фактура. Подскажите плз .... vasiliy DAX: Программирование 3 28.12.2004 10:57
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

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

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