Косяк SciDesignerControl: превью в MdiChild окружении

Обсуждение Stimulsoft Reports.NET
Ответить
ppvlad
Сообщения: 24
Зарегистрирован: 26 янв 2009, 10:35
Откуда: Moscow
Контактная информация:

Косяк SciDesignerControl: превью в MdiChild окружении

Сообщение ppvlad »

Здравствуйте, обнаружил косяк: если SciDesignerControl положить на MdiChild форму,
сей код вызывает ошибку при нажатии на кнопку "Предварительный просмотр" в дизайнере:

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

    public partial class Form1 : Form
    {
        private ChildForm child;

        public Form1()
        {
            InitializeComponent();

	    this.IsMdiContainer = true;

            if (!this.DesignMode)
            {
                createChildForm();
            }
        }

        private void createChildForm()
        {
            child = new ChildForm();
            child.MdiParent = this;
            child.Visible = true;
        }
    }



    public partial class ChildForm : Form
    {
        private Stimulsoft.Report.StiReport report;
        private Stimulsoft.Report.Design.StiDesignerControl designer;

        
        public ChildForm()
        {
            InitializeComponent();

            if (!this.DesignMode)
            {
                createReport();
            }
        }

        private void createReport()
        {
            report = new Stimulsoft.Report.StiReport();

            designer = new Stimulsoft.Report.Design.StiDesignerControl(report);
            designer.Parent = this;
            designer.Dock = DockStyle.Fill;
        }

    }
судя по всему опечатка в коде, поэтому лечим так: идём в StiReport.cs, находим строки 3839
а потом и 3981 (код в двух местах) и правим:

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

// ppvlad 27 января 2009 г.
//if (viewerForm.GetOwner(parentForm.MdiParent) == null)viewerForm.ViewerOwner = parentForm;
//else viewerForm.ViewerOwner = viewerForm.GetOwner(parentForm.MdiParent);
// 
а ещё лучше сразу вот так:

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

// ppvlad 27 января 2009 г.
//if (viewerForm.GetOwner(parentForm.MdiParent) == null)viewerForm.ViewerOwner = parentForm;
//else viewerForm.ViewerOwner = viewerForm.GetOwner(parentForm.MdiParent);
// 
всё начинает работать как задумано.

Прошу комментарии от разработчиков о допустимости этих исправлений.

Vital
Сообщения: 647
Зарегистрирован: 09 июн 2006, 12:23

Косяк SciDesignerControl: превью в MdiChild окружении

Сообщение Vital »

Здравствуйте,

Изменения корректны. Мы внесли их в наш код. Патч будет доступен в билде от 2 февраля.

Спасибо.
Ответить