Добавление нового типа переменной

Обсуждение Stimulsoft Ultimate
Radioride
Сообщения: 56
Зарегистрирован: 20 окт 2016, 13:21

Re: Добавление нового типа переменной

Сообщение Radioride »

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

Спасибо через редактор у меня получилось. Только сработало когда ввел с полным указанием путей "this.Form1.DialogResult = System.Windows.Forms.DialogResult.OK".
У меня возникла другая проблема. Когда я добавляю программно кнопку и хочу на событие повесить вызов своей подобной функции то ничего не происходит.

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

public Stimulsoft.Report.StiReport reportD;
public Stimulsoft.Report.Dialogs.StiForm myForm;
......
public void MyButton_Click(object sender, System.EventArgs e)
{
   // CheckerInfo: ClickEvent MyButton
     myForm.DialogResult = System.Windows.Forms.DialogResult.OK;
}
......
myForm = new Stimulsoft.Report.Dialogs.StiForm(reportD);
myForm.Name = "Form1";
myForm.LoadForm += MyTimeFunc.TimeFunc.CloseFormEvent;
myForm.FormClose += MyTimeFunc.TimeFunc.CloseFormEvent;
Stimulsoft.Report.Dialogs.StiButtonControl Btn = new Stimulsoft.Report.Dialogs.StiButtonControl();
Btn.Name = "MyButton";
Btn.Text = "Show message11";
Btn.Width = 100;
Btn.Height = 100;
Btn.Location = new Point(10, 20);
Btn.Click += new System.EventHandler(this.MyButton_Click);
myForm.Components.Add(Btn);
myForm.DialogResult = DialogResult.OK;
reportD.Pages.Add(myForm);
Я так же отметил, когда просматриваешь код сформированный перед пред просмотром, то там отсутствует событие Click.

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

// 
            this.MyButton = new Stimulsoft.Report.Dialogs.StiButtonControl();
            this.MyButton.ClientRectangle = new Stimulsoft.Base.Drawing.RectangleD(10, 20, 100, 100);
            this.MyButton.ForeColor = System.Drawing.Color.Black;
            this.MyButton.Location = new System.Drawing.Point(10, 20);
            this.MyButton.Name = "MyButton";
            this.MyButton.Size = new System.Drawing.Size(100, 100);
            this.MyButton.Text = "Show message11";
            this.MyButton.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F);
            this.MyButton.Guid = null;
            this.MyButton.Image = null;
            this.Form1.ExcelSheetValue = null;
            this.Form1.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F);
            this.Form1.LoadForm += new System.EventHandler(this.Form1_LoadForm);
            this.Report_PrinterSettings = new Stimulsoft.Report.Print.StiPrinterSettings();
            this.ReportImage = null;
            this.ReportResources.Add(new Stimulsoft.Report.StiReportResource("Page1.png", "Page1", "Watermark", Stimulsoft.Report.StiReportResourceType.Bitmap));
            this.ReportResources.Add(new Stimulsoft.Report.StiReportResource("Image1.png", "Image1", "Image", Stimulsoft.Report.StiReportResourceType.Bitmap));


Спасибо.
Aleksey
Сообщения: 2761
Зарегистрирован: 22 апр 2010, 06:57

Re: Добавление нового типа переменной

Сообщение Aleksey »

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

Пожалуйста, вышлите ваш отчет с функцией, который воспроизводит проблему, для анализа.

Спасибо.
Radioride
Сообщения: 56
Зарегистрирован: 20 окт 2016, 13:21

Re: Добавление нового типа переменной

Сообщение Radioride »

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

Я прикрепил отчет после выполнения программного добавления кнопки, а так же проект где эта кнопка добавляется с исходным отчетом.
WindowsFormsApplication2.rar
(48.93 КБ) 203 скачивания
ReportTest_Result.mrt
(4.34 КБ) 406 скачиваний
Спасибо.
HighAley
Сообщения: 1998
Зарегистрирован: 08 июн 2011, 11:36
Откуда: Stimulsoft Office

Re: Добавление нового типа переменной

Сообщение HighAley »

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

Вы должны добавить следующий код для решения проблемы:

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

Btn.DialogResult = DialogResult.OK;
Спасибо.
Radioride
Сообщения: 56
Зарегистрирован: 20 окт 2016, 13:21

Re: Добавление нового типа переменной

Сообщение Radioride »

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

Спасибо. Форма закрывается, но без выполнения операций в привязанной функции Click. Я как для примера привел возврат DialogResult.OK, а так мне нужно что бы по нажатию кнопки выполнилась функция, которую я привязываю.

Спасибо.
HighAley
Сообщения: 1998
Зарегистрирован: 08 июн 2011, 11:36
Откуда: Stimulsoft Office

Re: Добавление нового типа переменной

Сообщение HighAley »

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

Отчёт компилируются перед построением и обработчик события надо добавлять к компоненту скомпилированного отчёта.
Код будет следующим:

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

reportD.Pages.Add(myForm);

reportD.Compile();
var but = reportD.CompiledReport.GetComponentByName("MyButton");
but.Click += new System.EventHandler(this.MyButton_Click);
Спасибо.
Radioride
Сообщения: 56
Зарегистрирован: 20 окт 2016, 13:21

Re: Добавление нового типа переменной

Сообщение Radioride »

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

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

Спасибо.
HighAley
Сообщения: 1998
Зарегистрирован: 08 июн 2011, 11:36
Откуда: Stimulsoft Office

Re: Добавление нового типа переменной

Сообщение HighAley »

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

К сожалению так сделать нельзя.
Скомпилированный отчёт открыть в дизайнере можно, но вы не сможете там ничего изменить, так как многие свойства уже скомпилированы в методы.

Если вы редактируете отчёт в дизайнере, то проще будет и код события добавить в нём.

Спасибо.
Radioride
Сообщения: 56
Зарегистрирован: 20 окт 2016, 13:21

Re: Добавление нового типа переменной

Сообщение Radioride »

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

Понятно спасибо. У меня к сожалению получается, что я должен подготовить программные функции, а уже те кто делают разные варианты отчетов используют дизайнер и мои функции. И им получается для того, что бы сработала моя функция приходит сохранять и перезапускать в моей программе для получения скомпилированной правильной версии.
Скажите пожалуйста, а будет добавлена возможность, что бы события добавленные программно так же присваивались в пост обработке после компиляции но уже на уровне вашего программного кода?

Спасибо.
HighAley
Сообщения: 1998
Зарегистрирован: 08 июн 2011, 11:36
Откуда: Stimulsoft Office

Re: Добавление нового типа переменной

Сообщение HighAley »

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

К сожалению, это невозможно сделать.
Так работает .Net Framework.

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