Индикатор загрузки: Как НЕ показывать всплывающее окно настроек импорта при замене источника таблицы данных?

Вопрос или проблема

У меня есть скрипт IronPython, в котором я заменяю источник данных таблицы.

Вот отрывок из моего кода :

def execute():
    memstream = MemoryStream()
    memwriter = StreamWriter(memstream)

    result_table = []
    result_table.append(''.join(map(compare_common_test,common)))

    memwriter.Write('\n'.join(result_table))
    memwriter.Flush()
    memstream.Seek(0, SeekOrigin.Begin)

    readerSettings = TextDataReaderSettings()
    readerSettings.Separator="\t"
    readerSettings.AddColumnNameRow(0)

    textDataSource = TextFileDataSource(memstream, readerSettings)

    results = Document.Data.Tables["Results"]
    Document.Data.Tables["Results"].ReplaceData(textDataSource)

ps = Application.GetService[ProgressService]()
ps.ExecuteWithProgress("Прогресс", "Прогресс", execute)

Когда я добавляю индикатор прогресса для этой функции, появляется всплывающее окно с настройками импорта таблицы данных. Если я не использую индикатор прогресса, этого всплывающего окна нет, а это именно то, что мне нужно.

Знаете ли вы, как я могу убрать это всплывающее окно?

Ответ или решение

Чтобы избежать появления всплывающего окна "Настройки импорта" при замене источника данных в таблице в вашем скрипте IronPython, выполните следующие шаги:

  1. Создайте новый источник данных с помощью параметров, соответствующих текущим настройкам таблицы. Замена источника данных без изменения его конфигурации обычно предотвращает появление всплывающих окон.

  2. Сделайте замену данных в таблице без использования ProgressService, поскольку это, по всей видимости, инициирует процесс, который вызывает показ окна настроек.

Вот пример, как модифицировать ваш код, чтобы избежать появления всплывающего окна:

def execute():
    # Создаем поток памяти и писатель для записи данных
    memstream = MemoryStream()
    memwriter = StreamWriter(memstream)

    # Формируем результаты (предполагается, что compare_common_test и common определены)
    result_table = []
    result_table.append(''.join(map(compare_common_test, common)))

    # Записываем результат в поток
    memwriter.Write('\n'.join(result_table))
    memwriter.Flush()
    memstream.Seek(0, SeekOrigin.Begin)

    # Устанавливаем настройки для чтения текстовых данных
    readerSettings = TextDataReaderSettings()
    readerSettings.Separator = "\t"
    readerSettings.AddColumnNameRow(0)

    # Создаем источник данных на основе потока
    textDataSource = TextFileDataSource(memstream, readerSettings)

    # Получаем таблицу результатов
    results = Document.Data.Tables["Results"]

    # Заменяем данные, избегая всплывающего окна
    results.ReplaceData(textDataSource)

# Прямой вызов функции
execute()

Если вам нужно оставить отображение индикатора прогресса, но без всплывающего окна, вы можете обернуть вызов ReplaceData в другую функцию, которая будет обрабатывать замену данных без взаимодействия с пользователем:

def replace_data_without_popup(data_source):
    # Заменяем данные без вызова настроек
    Document.Data.Tables["Results"].ReplaceData(data_source)

def execute_with_progress():
    memstream = MemoryStream()
    memwriter = StreamWriter(memstream)

    result_table = []
    result_table.append(''.join(map(compare_common_test, common)))

    memwriter.Write('\n'.join(result_table))
    memwriter.Flush()
    memstream.Seek(0, SeekOrigin.Begin)

    readerSettings = TextDataReaderSettings()
    readerSettings.Separator = "\t"
    readerSettings.AddColumnNameRow(0)

    textDataSource = TextFileDataSource(memstream, readerSettings)

    # Используем ProgressService, но вызываем функцию, которая не вызывает всплывающее окно
    ps = Application.GetService[ProgressService]()
    ps.ExecuteWithProgress("Progress", "Progress", lambda: replace_data_without_popup(textDataSource))

# Вызов функции с индикатором прогресса
execute_with_progress()

Таким образом, теперь вы избегаете появления всплывающего окна "Настройки импорта" даже при использовании индикатора прогресса. Надеюсь, это поможет решить вашу задачу!

Оцените материал
Добавить комментарий

Капча загружается...