AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 06.02.2014, 08:18   #12  
Mila is offline
Mila
Участник
 
73 / 31 (2) +++
Регистрация: 21.04.2006
Мы решили проблему следующим образом (подходит только для нашего случая, т.к. форма с ActiveX компонентой не открывается, если есть хотя бы один запущенный процесс Excel): при создании Excel-документа запоминаем соответствующие процессы, а при закрытии формы именно их и убиваем. Таким образом, если после открытия нашей формы, пользователь работал с какими-то другими excel-документами, они останутся открытыми.
X++:
void createExcelDocument(Object _webBrowser)
{
    System.Collections.IEnumerable processes;
    System.Collections.IEnumerator enumerator;
    System.Diagnostics.Process process;
    int idExcel;
    if (_webBrowser)
    {
        try
        {
            comWorkbook     = null;
            excelDocument   = null;
            comWorkbook     = _webBrowser.document();
            if (comWorkbook && comWorkbook.toString() == #documentObjectStr)
            {
                excelDocument = ComExcelDocument_RU::newFromCOMDocument(comWorkbook);
                listExcelPidId = new set (types::Integer);
                processes = System.Diagnostics.Process::GetProcessesByName("EXCEL");
                enumerator = processes.GetEnumerator();
                while (enumerator.MoveNext())
                {
                    process = enumerator.get_Current();
                    idExcel = process.get_Id();
                    listExcelPidId.add(idExcel);
                }
 
                if (comWorkbook  && excelDocument.isDocumentValid())
                {
                    comWorkbook.saved(true);
                }
            }
            else
            {
                comWorkbook = null;
            }
        }
        catch (Exception::Internal)
        {
            if (comWorkbook == null)
            {
                documentTabPage.visible(false);
                throw error("@SYS98748");
            }
        }
    }
}
При закрытии формы:
X++:
public void close()
{
    System.Diagnostics.Process process;
    SetIterator si;
    int idPid;
    ;
    SysHelp::initWebBrowser(excelBrowser);
    si = new SetIterator(listExcelPidId) ;
    while (si.more () )
    {
        idPid = si.value();
        process = System.Diagnostics.Process::GetProcessById(idPid);
        process.Kill();
        si.next () ;
    }
    super();
}
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
atinkerersnotebook: Using the Dynamics AX Excel Add-In Blog bot DAX Blogs 1 25.09.2013 07:11
atinkerersnotebook: Walkthrough & Tutorial Summary Blog bot DAX Blogs 1 09.09.2013 09:11
atinkerersnotebook: Using Excel to Import Products & Services in Dynamics AX Blog bot DAX Blogs 0 19.07.2013 15:11
диалоговое окно при закрытии файла Excel chanchala DAX: Программирование 8 26.08.2008 13:27
Как открыть готовый шаблон Excel в ActiveX Microsoft Office Spreadsheet 10.0? chi DAX: Программирование 0 16.11.2004 15:33

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 20:43.