02.02.2007, 12:29 | #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 } } |
|
02.02.2007, 12:33 | #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); |
|
02.02.2007, 12:38 | #23 |
Программатор
|
А где у Вас hwndChild инициализируется?
Ой опередели |
|
02.02.2007, 12:40 | #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 } } |
|
02.02.2007, 12:42 | #25 |
Программатор
|
Мож хэндл не тот?
|
|
02.02.2007, 12:45 | #26 |
Участник
|
Не очень устойчивый способ.
Если создать или открыть еще одну книгу, то заголовок сбросится. Кроме того, в SaveAs так и остается старое имя PS Достаточно нажать на название листа, что бы сбросилось
__________________
Axapta v.3.0 sp5 kr2 Последний раз редактировалось AndyD; 02.02.2007 в 12:50. |
|
02.02.2007, 12:47 | #27 |
SAP
|
Цитата:
Не очень устойчивый способ.
Если создать или открыть еще одну книгу, то заголовок сбросится. Кроме того, в SaveAs так и остается старое имя |
|
02.02.2007, 12:49 | #28 |
Участник
|
Хм. У меня все нормально. Меняется без проблем.
Правда при сохранении название файла он все равно предлагает схожее с именем шаблона, как и ожидалось. |
|
02.02.2007, 12:55 | #29 |
Участник
|
Могу предложить такой вариант - менять не название Template1 и т.д., а текст перед ним (Microsoft Excel). Т.е. не "Microsoft Excel - Template1", а "НАЗВАНИЕ - Template1". Меняется через Application.Caption()
__________________
Axapta v.3.0 sp5 kr2 |
|
02.02.2007, 16:09 | #30 |
SAP
|
Цитата:
Хм. У меня все нормально. Меняется без проблем.
Цитата:
Правда при сохранении название файла он все равно предлагает схожее с именем шаблона, как и ожидалось.
|
|
02.02.2007, 16:18 | #31 |
Участник
|
Так сделайте через Caption - вставляйте название отчета и будет нормально видно
__________________
Axapta v.3.0 sp5 kr2 |
|
|
За это сообщение автора поблагодарили: konopello (1). |
02.02.2007, 16:46 | #32 |
SAP
|
Цитата:
Так сделайте через Caption - вставляйте название отчета и будет нормально видно
|
|
11.03.2010, 15:18 | #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. |
|