Страница 1 из 2

Произвольная настройка кнопки Сохранить

Добавлено: 26 июн 2015, 12:45
Леонид
Добрый день!

Скажите, пожалуйста, есть ли возможность какими-либо свойствами указать какие именно пункты меню будут показаны в выпадающем списке при нажатии кнопки "Сохранить" (в компоненте StiPreview)? Конкретно в данный момент нас интересует "Data file...".

Re: Произвольная настройка кнопки Сохранить

Добавлено: 26 июн 2015, 14:34
Aleksey
Здравствуйте, Леонид

Вы можете использовать следующий код:

Код: Выделить всё

StiOptions.Viewer.Windows.Exports.ShowDbf = false;
StiOptions.Viewer.Windows.Exports.ShowCsv = false;
или для отключения полность пункта "Data file...":

Код: Выделить всё

StiOptions.Viewer.Windows.Exports.ShowData = false;
Спасибо.

Re: Произвольная настройка кнопки Сохранить

Добавлено: 26 июн 2015, 15:41
Леонид
Всё сработало!

Огромное спасибо!

Re: Произвольная настройка кнопки Сохранить

Добавлено: 26 июн 2015, 15:56
Aleksey
Здравствуйте,

Всегда рады помочь!
Дайте знать, если будут еще вопросы.

Спасибо.

Re: Произвольная настройка кнопки Сохранить

Добавлено: 29 июн 2015, 18:03
Леонид
Добрый вечер!

Можно ли при экспорте в Excel программно установить "Разрешение изображения" в 200 DPI?

Что-то, как вы показывали StiOptions.Viewer.Windows.Exports.JpegDPI = 200;

Re: Произвольная настройка кнопки Сохранить

Добавлено: 30 июн 2015, 08:41
HighAley
Здравствуйте.

Для этого вам надо использовать StiExcelExportSettings.
Установите значение ImageResolution.

Спасибо.

Re: Произвольная настройка кнопки Сохранить

Добавлено: 30 июн 2015, 10:34
Леонид
Доброе утро!

Так и не понял, как использовать эти настройки.

Пробовал гуглить в форуме, нашёл путь, который нам не подходит, т.к. он меняет OpenDialog:

Код: Выделить всё

StiPreviewForm form = new StiPreviewForm(report); 
form.ViewerControl.ProcessExport += new EventHandler(ViewerControl_ProcessExport); 
report.Render(); 
form.ShowDialog(); 

private void ViewerControl_ProcessExport(object sender, EventArgs e) 
{ 
    if (sender is StiExcelExportService) 
    { 
        StiExcelExportSettings settings = new StiExcelExportSettings(); 
        settings.ImageResolution = 200; 
        settings.ImageQuality = 0.75f; 
        string myFileName = "D:\\MyFile.xls"; 
        report.ExportDocument(StiExportFormat.Excel, myFileName, settings); 
        Process.Start(string.Format("\"{0}\"", myFileName)); 
    } 
    else 
    { 
        (sender as StiExportService).Export(report); 
    } 
}
Пробовал также такой способ:

Код: Выделить всё

      StiSettings.Set("StiExcelExportSetupForm", "ImageResolution", 200);
      StiSettings.Set("StiExcelExportSetupForm", "ImageQuality", 0.75f);
и так

Код: Выделить всё

      StiSettings.Set("StiExcelSetupForm", "ImageResolution", 200);
      StiSettings.Set("StiExcelSetupForm", "ImageQuality", 0.75f);
Почему-то не получается.

Суть такая. Нам нужно вызывать стандартный диалогExcel файла, но с изменёнными настройками ImageResolution равной 200, и ImageQuality равной 75%.

Подскажите, как это сделать?

Re: Произвольная настройка кнопки Сохранить

Добавлено: 30 июн 2015, 13:13
Aleksey
Здравствуйте, Леонид

Нашли некоторые нюансы с заданием свойств для диалоговой формы через StiSettings (возникли после переработки форм). Для ImageResolution требуется задавать индекс, а не само значение. Пожалуйста, попробуйте использовать следующий код

Код: Выделить всё

StiSettings.Set("StiExcelSetupForm", "ImageResolution", 5);
StiSettings.Set("StiExcelSetupForm", "ImageQuality", "75");
Через StiExcelExportSettings вы можете задавать любые значения.

Дайте знать, если будут еще вопросы.
Спасибо.

Re: Произвольная настройка кнопки Сохранить

Добавлено: 30 июн 2015, 14:45
Леонид
Итак, с трудом разобрался, т.к. вы не указали, как и где использовать этот код. Сейчас поясню, для тех, кому понадобится.

Вот такой код будет работать, строго после вызова метода .Render() :!:

Код: Выделить всё

StiSettings.Set("StiExcelSetupForm", "ImageResolution", 5);
StiSettings.Set("StiExcelSetupForm", "ImageQuality", "75"); // здесь 
Для ImageResolution указываем индекс из ComboBox'а (Кнопка Сохранить->Файл Excel.../Разрешение изображения):
0 == 10, 1 == 25, 2 == 50, 3 == 75, 4 == 100, 5 == 200, 6 == 300, 7 == 400, 8 == 500.

Ещё один важный момент по поводу как раз-таки индексов. Когда я этого не знал и выполнил вот такой код

Код: Выделить всё

StiSettings.Set("StiExcelSetupForm", "ImageResolution", 200);
, то потом при нажатии кнопки "Сохранить->Файл Excel..." потом получал странного вида Exception, что-то вроде "SelectedIndex == 200 was not found".
С помощью небезызвестной утилиты Procmon от SysInternals выяснил, что по адресу на локальном диске (в моём случае это C:\Users\leon\AppData\Local\Stimulsoft\) в файле Stimulsoft.Report.settings появилась строка вида:

Код: Выделить всё

    <Category Name="StiExcelExportSetupForm">
      <Item Key="ImageResolution" Value="200" Type="System.Int32" />
....
    </Category>
Что и приводило к Exception'у, но только на локальном компьютере для разработки, у пользователей такого файла не было, и соответственно было всё нормально. Имейте это в виду.

И ещё вопрос, вот, сейчас, получается установка индекса вместо значения это своего рода workaround, т.е. в следующих предрелизных билдах, вы это исправите на нужное значение, а не индекс и как это узнать? Т.е. там ведь не будет свойства deprecated, а просто будет нужное значение, и получается, что мы при обновлении будем выставлять его уже не в 200, а в 5.

Re: Произвольная настройка кнопки Сохранить

Добавлено: 30 июн 2015, 15:17
Леонид
Да, вот как ещё можно, чтобы каждый раз при нажатии кнопки "Сохранить->Файл Excel...":

Код: Выделить всё

   stiPreview = new Stimulsoft.Report.Viewer.StiViewerControl();
   ...
   stiPreview.ProcessExport += new EventHandler(ViewerControl_ProcessExport);

    private void ViewerControl_ProcessExport(object sender, EventArgs e)
    {
      if (sender is Stimulsoft.Report.Export.StiExcelExportService)
      {
        // set image resolution 200 dpi (index 5 from combobox)
        StiSettings.Set("StiExcelSetupForm", "ImageResolution", 5);
        StiSettings.Set("StiExcelSetupForm", "ImageQuality", "75"); // set image quality

        // call export dialog
        (sender as Stimulsoft.Report.Export.StiExportService).Export(stiReport);
      }
    }