|
![]() |
#1 |
Участник
|
Цитата:
Сообщение от sukhanchik
Как мне тут сказали коллеги - возможность изменения масштаба появилась только в 3.0 - и поэтому никакого программного интерфейса чтобы к нему достучаться - нет.
Но только кнопками. Контекстное меню на правой кнопке мыши действительно появилось только в 3.0 Добавил в FAQ про кнопки. |
|
![]() |
#2 |
MCITP
|
![]()
По сабжу (программное изменение масштаба стандартного отчёта) ни у кого нет никакой новой информации? Может в 2009 что-то поменялось и кому-то удалось совершить сие?
Хотя бы через WinAPI... ![]()
__________________
Zhirenkov Vitaly |
|
![]() |
#3 |
Участник
|
Не сочтите этот способ за извращение, но у меня такой пример сработал.
На мысль навело использование горячих клавиш управления масштабом отчета. Итак, создаем класс X++: class Class1 X++: static client void test() { thread thread = new thread(); ; thread.run(classnum(Class1), identifierstr(runThread)); } 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"); } 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). |
![]() |
#4 |
MCITP
|
![]()
Если б была горячая клавиша "по ширине страницы", то это было бы круто... а так, баловство одно...
![]() Или такая клавиша всё-таки есть? Кстати, ни в одной документации не могу найти описания этих Alt-D, Alt-U. , странно... Пробую что-то наваять через винАпи.. может выйдет
__________________
Zhirenkov Vitaly |
|
![]() |
#5 |
MCITP
|
![]()
Через винАпи получилось развернуть на всю страницу примерно так:
(На основе решения 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 |
|
![]() |
#6 |
MCITP
|
![]()
Только между вызовами WinAPI рекомендую добавить небольшие sleep-ы... иначе будет падать периодически...
__________________
Zhirenkov Vitaly |
|