В 3.0, значит, поменяли.
Такое предложение - при вызове Caption() возвращать из него уникальное значение, которое сохранять так же в поле. В Run() после Super() искать окно по этому заголовку и менять его (заголовок)
Что-то типа этого
X++:
ClassDeclaration
str Cap;
public str caption(str _reportSpelling, str _reportName, str _designCaption, str _designName)
{
;
cap = "Уникальное значение"
return cap;
}
public void run()
{
int hWnd;
#WinApi
;
super();
if (infolog.hWnd())
{
hWnd = winapi::getWindow(infolog.hWnd(), #GW_CHILD);
if (hWnd)
hWnd = winapi::getWindow(hWnd, #GW_CHILD);
while (hWnd)
{
if (winapi::getWindowText(hWnd) == cap)
{
winapi::setWindowText(hWnd, "Новое название отчета");
break;
}
hWnd = winapi::getWindow(hWnd, #GW_HWNDNEXT);
}
}
}