Кастомизация дизайнера отчетов

Обсуждение Stimulsoft Reports.NET
Vital
Сообщения: 647
Зарегистрирован: 09 июн 2006, 12:23

Кастомизация дизайнера отчетов

Сообщение Vital »

Здравствуйте,
unic писал(а):
Vital писал(а):Ошибка исправлена. Патч будет включен в билд от 1 декабря.
Здравствуйте. Когда будет доступен данный билд?
Уже доступен.

Спасибо.
Сергей
Сообщения: 70
Зарегистрирован: 13 окт 2008, 03:56
Откуда: Пермь
Контактная информация:

Кастомизация дизайнера отчетов

Сообщение Сергей »

Доброго времени суток.

Стал переходить на Ribbon GUI (в том числе из-за некорректной пристыковки панели - см. выше).

Иногда появляется надпись "invalid license" на Ribbon контроле:
Изображение
- способ воспроизведения этой ошибки установить не удалось.

Есть необходимость добавить свой элемент в интерфейс дизайнера, клик по которому вызывает свой же редактор словаря. В стандартном GUI было реализовано через дополнительный пункт меню.
В англоязычной версии форума нашел информацию по StiRibbonGuiService, но он не позволяет добавлять свои элементы, как, например, StiMainMenuService.
Пробовал добавить через this.RibbonControl (в классе - потомке StiRibbonDesigner), не вышло. Новый RibbonTabItem отображается, а вот элементы на его панели (RibbonTabItem.Panel) - нет.

Как добавить свою закладку в RibbonControl? И есть ли возможность добавить свой элемент на панель "Словарь" (в контекстное меню или кнопкой)?

Спасибо.
Сергей
Сообщения: 70
Зарегистрирован: 13 окт 2008, 03:56
Откуда: Пермь
Контактная информация:

Кастомизация дизайнера отчетов

Сообщение Сергей »

Получилось добавить вкладку, используя код

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

RibbonControlDesigner ribDesigner = new RibbonControlDesigner();
RibbonTabItem dicTab = this.RibbonControl.CreateRibbonTab("Словарь", "Dictionary", 4);
...
Вместо

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

RibbonTabItem dicTab = new RibbonTabItem();
dicTab.Panel = new RibbonPanel();
this.RibbonControl.Items.Add(dicTab, 4);
...
Вопрос по добавлению своего элемента на панель "Словарь" все-равно актуален.
Vital писал(а):Problem with StiRibbonGuiService fixed. Please check build from 1 Dec.
http://forum.stimulsoft.com/Default.aspx?g=posts&t=1655

Однако при использовании кода

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

StiRibbonGuiService ribServ = StiRibbonGuiService.GetService();
ribServ.ShowMainMenuFormNew = false;
ribServ.ShowMainMenuNew = false;
ribServ.ShowMainMenuPageOpen = false;
ribServ.ShowMainMenuPageSaveAs = false;
ribServ.ShowMainMenuReportNew = false;
ribServ.ShowMainMenuReportOpen = false;
ribServ.ShowMainMenuReportSaveAs = false;
ribServ.ShowMainMenuReportWizardNew = false;
ribServ.ShowMainMenuSaveAs = false;

ribServ.Init(this.DesignerControl as StiDesignerControl);
соответствующие пункты остаются. Используется версия 2008.3.313.0 от 1 декабря.

Надпись "invalid license" теперь появляется регулярно при запуске дизайнера и пропадает при выборе вкладки "Страница". Видимо, связано с добавлением своей вкладки.
Сергей
Сообщения: 70
Зарегистрирован: 13 окт 2008, 03:56
Откуда: Пермь
Контактная информация:

Кастомизация дизайнера отчетов

Сообщение Сергей »

unic писал(а):При использовании кода

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

StiRibbonGuiService ribServ = StiRibbonGuiService.GetService();
ribServ.ShowMainMenuFormNew = false;
ribServ.ShowMainMenuNew = false;
ribServ.ShowMainMenuPageOpen = false;
ribServ.ShowMainMenuPageSaveAs = false;
ribServ.ShowMainMenuReportNew = false;
ribServ.ShowMainMenuReportOpen = false;
ribServ.ShowMainMenuReportSaveAs = false;
ribServ.ShowMainMenuReportWizardNew = false;
ribServ.ShowMainMenuSaveAs = false;

ribServ.Init(this.DesignerControl as StiDesignerControl);
соответствующие пункты остаются. Используется версия 2008.3.313.0 от 1 декабря.
Видимо, инициализация "видимости" пунктов производится лишь в конструкторе, не в методе Init().
Сделал по-другому: добавил статический конструктор и разместил код (см. выше) в нем. Таким образом к запуску конструктора StiRibbonDesigner'a StiRibbonGuiService уже настроен.
Edward
Сообщения: 930
Зарегистрирован: 09 июн 2006, 12:23

Кастомизация дизайнера отчетов

Сообщение Edward »

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

Спасибо за присланную информацию. Проанализируем эту ситуацию и сообщим Вам о результатах в этом топике.

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

Кастомизация дизайнера отчетов

Сообщение Vital »

Здравствуйте,
unic писал(а):
unic писал(а):При использовании кода

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

StiRibbonGuiService ribServ = StiRibbonGuiService.GetService();
ribServ.ShowMainMenuFormNew = false;
ribServ.ShowMainMenuNew = false;
ribServ.ShowMainMenuPageOpen = false;
ribServ.ShowMainMenuPageSaveAs = false;
ribServ.ShowMainMenuReportNew = false;
ribServ.ShowMainMenuReportOpen = false;
ribServ.ShowMainMenuReportSaveAs = false;
ribServ.ShowMainMenuReportWizardNew = false;
ribServ.ShowMainMenuSaveAs = false;

ribServ.Init(this.DesignerControl as StiDesignerControl);
соответствующие пункты остаются. Используется версия 2008.3.313.0 от 1 декабря.
Видимо, инициализация "видимости" пунктов производится лишь в конструкторе, не в методе Init().
Сделал по-другому: добавил статический конструктор и разместил код (см. выше) в нем. Таким образом к запуску конструктора StiRibbonDesigner'a StiRibbonGuiService уже настроен.
Да, все верно. Инициализация происходит в конструкторе.

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

Кастомизация дизайнера отчетов

Сообщение Vital »

Здравствуйте,
unic писал(а): Надпись "invalid license" теперь появляется регулярно при запуске дизайнера и пропадает при выборе вкладки "Страница". Видимо, связано с добавлением своей вкладки.
Мы добавили два метода в StiRibbonDesignerControl: CreateRibbonTab и CreateRibbonBar. Использовать нужно так:

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

Stimulsoft.Controls.Win.DotNetBar.RibbonTabItem tabItem = CreateRibbonTab("TEST");
Stimulsoft.Controls.Win.DotNetBar.RibbonBar barItem = CreateRibbonBar(tabItem, "TEST2");
Спасибо.
Vital
Сообщения: 647
Зарегистрирован: 09 июн 2006, 12:23

Кастомизация дизайнера отчетов

Сообщение Vital »

Здравствуйте,
unic писал(а): Как добавить свою закладку в RibbonControl? И есть ли возможность добавить свой элемент на панель "Словарь" (в контекстное меню или кнопкой)?
Мы добавили следующие статические события:

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

StiOptions.Engine.GlobalEvents.MenuEditOpenInDesigner
StiOptions.Engine.GlobalEvents.MenuNewOpenInDesigner
StiOptions.Engine.GlobalEvents.MenuActionsOpenInDesigner
Использовать так:

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

StiOptions.Engine.GlobalEvents.MenuEditOpenInDesigner += new EventHandler(GlobalEvents_MenuEditOpenInDesigner);
StiOptions.Engine.GlobalEvents.MenuNewOpenInDesigner += new EventHandler(GlobalEvents_MenuNewOpenInDesigner);
StiOptions.Engine.GlobalEvents.MenuActionsOpenInDesigner += new EventHandler(GlobalEvents_MenuActionsOpenInDesigner);

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

void GlobalEvents_MenuNewOpenInDesigner(object sender, EventArgs e)
{
	Stimulsoft.Controls.Win.DotNetBar.ButtonItem parentItem = sender as Stimulsoft.Controls.Win.DotNetBar.ButtonItem;
	Stimulsoft.Controls.Win.DotNetBar.ButtonItem item = new Stimulsoft.Controls.Win.DotNetBar.ButtonItem();
	item.Text = "New";

	parentItem.SubItems.Add(item);
}

void GlobalEvents_MenuEditOpenInDesigner(object sender, EventArgs e)
{
	Stimulsoft.Controls.Win.DotNetBar.ButtonItem parentItem = sender as Stimulsoft.Controls.Win.DotNetBar.ButtonItem;
	Stimulsoft.Controls.Win.DotNetBar.ButtonItem item = new Stimulsoft.Controls.Win.DotNetBar.ButtonItem();
	item.Text = "Edit";

	parentItem.SubItems.Add(item);
}

void GlobalEvents_MenuActionsOpenInDesigner(object sender, EventArgs e)
{
	Stimulsoft.Controls.Win.DotNetBar.ButtonItem parentItem = sender as Stimulsoft.Controls.Win.DotNetBar.ButtonItem;
	Stimulsoft.Controls.Win.DotNetBar.ButtonItem item = new Stimulsoft.Controls.Win.DotNetBar.ButtonItem();
	item.Text = "Actions";

	parentItem.SubItems.Add(item);
}
Изменения будут доступны в билде от 8 декабря.

Спасибо.
Сергей
Сообщения: 70
Зарегистрирован: 13 окт 2008, 03:56
Откуда: Пермь
Контактная информация:

Кастомизация дизайнера отчетов

Сообщение Сергей »

Vital писал(а): Мы добавили два метода в StiRibbonDesignerControl: CreateRibbonTab и CreateRibbonBar. Использовать нужно так:

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

Stimulsoft.Controls.Win.DotNetBar.RibbonTabItem tabItem = CreateRibbonTab("TEST");
Stimulsoft.Controls.Win.DotNetBar.RibbonBar barItem = CreateRibbonBar(tabItem, "TEST2");
Спасибо.
Здравствуйте.
К сожалению, использовать добавленный код именно так не получится, поскольку объекта StiRibbonDesignerControl у меня нет. Есть класс - наследник StiRibbonDesigner и его атрибут RibbonControl.
Сергей
Сообщения: 70
Зарегистрирован: 13 окт 2008, 03:56
Откуда: Пермь
Контактная информация:

Кастомизация дизайнера отчетов

Сообщение Сергей »

Vital писал(а):Здравствуйте,
unic писал(а): Как добавить свою закладку в RibbonControl? И есть ли возможность добавить свой элемент на панель "Словарь" (в контекстное меню или кнопкой)?
Мы добавили следующие статические события:

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

StiOptions.Engine.GlobalEvents.MenuEditOpenInDesigner
StiOptions.Engine.GlobalEvents.MenuNewOpenInDesigner
StiOptions.Engine.GlobalEvents.MenuActionsOpenInDesigner
Использовать так:

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

StiOptions.Engine.GlobalEvents.MenuEditOpenInDesigner += new EventHandler(GlobalEvents_MenuEditOpenInDesigner);
StiOptions.Engine.GlobalEvents.MenuNewOpenInDesigner += new EventHandler(GlobalEvents_MenuNewOpenInDesigner);
StiOptions.Engine.GlobalEvents.MenuActionsOpenInDesigner += new EventHandler(GlobalEvents_MenuActionsOpenInDesigner);

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

void GlobalEvents_MenuNewOpenInDesigner(object sender, EventArgs e)
{
	Stimulsoft.Controls.Win.DotNetBar.ButtonItem parentItem = sender as Stimulsoft.Controls.Win.DotNetBar.ButtonItem;
	Stimulsoft.Controls.Win.DotNetBar.ButtonItem item = new Stimulsoft.Controls.Win.DotNetBar.ButtonItem();
	item.Text = "New";

	parentItem.SubItems.Add(item);
}

void GlobalEvents_MenuEditOpenInDesigner(object sender, EventArgs e)
{
	Stimulsoft.Controls.Win.DotNetBar.ButtonItem parentItem = sender as Stimulsoft.Controls.Win.DotNetBar.ButtonItem;
	Stimulsoft.Controls.Win.DotNetBar.ButtonItem item = new Stimulsoft.Controls.Win.DotNetBar.ButtonItem();
	item.Text = "Edit";

	parentItem.SubItems.Add(item);
}

void GlobalEvents_MenuActionsOpenInDesigner(object sender, EventArgs e)
{
	Stimulsoft.Controls.Win.DotNetBar.ButtonItem parentItem = sender as Stimulsoft.Controls.Win.DotNetBar.ButtonItem;
	Stimulsoft.Controls.Win.DotNetBar.ButtonItem item = new Stimulsoft.Controls.Win.DotNetBar.ButtonItem();
	item.Text = "Actions";

	parentItem.SubItems.Add(item);
}
Изменения будут доступны в билде от 8 декабря.

Спасибо.
При таком использовании на каждое открытие меню в него будет добавляться пункт: на первое открытие там будет один новый пункт, на два - два одинаковых пункта и т.д. Потому перед

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

parentItem.SubItems.Add(item);
надо озаботиться проверкой, нет ли уже такого пункта в меню.

PS: Когда увидел названия событий, то подумал, что они относятся к главному меню дизайнера, а не к панели редактирования словаря. :shame:
Ответить