Через винАпи получилось развернуть на всю страницу примерно так:
(На основе решения
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 текущего сформированного отчёта. Только по имени.
В принципе находит всегда последний, так что не сильно критично, но всё равно не красиво. Буду благодарен за помощь в этом направлении.