|
|
#21 |
|
SAP
|
Цитата:
hwndChild = winapi::getWindow(hWnd, #GW_CHILD);
сделал вот так но результата нет Код: void setApplicationName(Name _name)
{
#WinApi
HWND hwnd;
HWND hwndChild;
;
if (m_comApplication)
{
hwnd = m_comApplication.Hwnd();
info(winapi::getWindowText(hWnd)); // = MS - template1
winapi::setWindowText(hwndChild, _name);
info(winapi::getWindowText(hWnd)); // = MS -template1, а далжно MS - name
}
} |
|
|
|
|
#22 |
|
Участник
|
Цитата:
Сообщение от konopello
да я уже понял.
сделал вот так но результата нет Код: void setApplicationName(Name _name)
{
#WinApi
HWND hwnd;
HWND hwndChild;
;
if (m_comApplication)
{
hwnd = m_comApplication.Hwnd();
info(winapi::getWindowText(hWnd)); // = MS - template1
winapi::setWindowText(hwndChild, _name);
info(winapi::getWindowText(hWnd)); // = MS -template1, а далжно MS - name
}
}X++: winapi::setWindowText(hwnd, _name);
|
|
|
|
|
#23 |
|
Программатор
|
А где у Вас hwndChild инициализируется?
![]() Ой опередели
|
|
|
|
|
#24 |
|
SAP
|
да спасибо
Код: void setApplicationName(Name _name)
{
#WinApi
HWND hwnd;
;
if (m_comApplication)
{
hwnd = m_comApplication.Hwnd();
info(winapi::getWindowText(hWnd));
winapi::setWindowText(hwnd, _name);
info(winapi::getWindowText(hWnd)); //показывает правельно а в физическом окошке MS - template1
}
} |
|
|
|
|
#25 |
|
Программатор
|
Мож хэндл не тот?
|
|
|
|
|
#26 |
|
Участник
|
Не очень устойчивый способ.
Если создать или открыть еще одну книгу, то заголовок сбросится. Кроме того, в SaveAs так и остается старое имя PS Достаточно нажать на название листа, что бы сбросилось
__________________
Axapta v.3.0 sp5 kr2 Последний раз редактировалось AndyD; 02.02.2007 в 12:50. |
|
|
|
|
#27 |
|
SAP
|
Цитата:
Не очень устойчивый способ.
Если создать или открыть еще одну книгу, то заголовок сбросится. Кроме того, в SaveAs так и остается старое имя |
|
|
|
|
#28 |
|
Участник
|
Хм. У меня все нормально. Меняется без проблем.
Правда при сохранении название файла он все равно предлагает схожее с именем шаблона, как и ожидалось. |
|
|
|
|
#29 |
|
Участник
|
Могу предложить такой вариант - менять не название Template1 и т.д., а текст перед ним (Microsoft Excel). Т.е. не "Microsoft Excel - Template1", а "НАЗВАНИЕ - Template1". Меняется через Application.Caption()
__________________
Axapta v.3.0 sp5 kr2 |
|
|
|
|
#30 |
|
SAP
|
Цитата:
Хм. У меня все нормально. Меняется без проблем.
Цитата:
Правда при сохранении название файла он все равно предлагает схожее с именем шаблона, как и ожидалось.
|
|
|
|
|
#31 |
|
Участник
|
Так сделайте через Caption - вставляйте название отчета и будет нормально видно
__________________
Axapta v.3.0 sp5 kr2 |
|
|
|
| За это сообщение автора поблагодарили: konopello (1). | |
|
|
#32 |
|
SAP
|
Цитата:
Так сделайте через Caption - вставляйте название отчета и будет нормально видно
|
|
|
|
|
#33 |
|
Боец
|
Несколько по-другому решил такую же проблему. Идея в следующем:
1) Копируем шаблон отчета (*.xlt) во временную папку (WinApi::getTempPath()), одновременно присвоив ему нужное имя 2) Печатаем отчет на основе скопированного и переименованного шаблона из временной папки 3) Удаляем скопированный шабон. Способ чуть более тяжелее, но и "чуть" более надежнее, при этом позволяет делать SaveAs с управляемым именем. Недостатоки 1. Копирование файла 2. Excel, собако, таки приписывает в конце единичку X++: FileNameOpen copyAndRenameTemplate(FileNameOpen _templateFilePath, FileName _newFileName)
{
FilePath filePath;
FileName fileName;
FileExtension fileExt;
Counter fileIdx;
;
[filePath, fileName, fileExt] = fileNameSplit(_templateFilePath);
tmpTempaleFilePath = WinApi::getTempPath() + _newFilename + fileExt;
if ( WinApi::fileExists(_templateFilePath) && WinApi::fileExists2(WinApi::getTempPath()) )
{
tmpTempaleFilePath = WinApi::getTempPath() + _newFilename + fileExt;
WinApi::copyFile(_templateFilePath, tmpTempaleFilePath, true);
}
return tmpTempaleFilePath;
}X++: void deleteTmpTempaleFile() { ; if (WinApi::fileExists(tmpTempaleFilePath)) WinApi::deleteFile(tmpTempaleFilePath); } X++: try
{
reportTemplateFile = this.copyAndRenameTemplate(reportTemplateFile, newFileName);
excel = new ComExcelDocument_RU();
excel.open(reportTemplateFile, false);
this.deleteTmpTempaleFile();
this.printReport();
excel.visible(true);
}Последний раз редактировалось DSPIC; 11.03.2010 в 15:23. |
|
|