Страница 2 из 3
Кастомизация дизайнера отчетов
Добавлено: 02 дек 2008, 03:20
Vital
Здравствуйте,
unic писал(а):Vital писал(а):Ошибка исправлена. Патч будет включен в билд от 1 декабря.
Здравствуйте. Когда будет доступен данный билд?
Уже доступен.
Спасибо.
Кастомизация дизайнера отчетов
Добавлено: 04 дек 2008, 07:34
Сергей
Доброго времени суток.
Стал переходить на Ribbon GUI (в том числе из-за некорректной пристыковки панели - см. выше).
Иногда появляется надпись "invalid license" на Ribbon контроле:
- способ воспроизведения этой ошибки установить не удалось.
Есть необходимость добавить свой элемент в интерфейс дизайнера, клик по которому вызывает свой же редактор словаря. В стандартном GUI было реализовано через дополнительный пункт меню.
В англоязычной версии форума нашел информацию по StiRibbonGuiService, но он не позволяет добавлять свои элементы, как, например, StiMainMenuService.
Пробовал добавить через this.RibbonControl (в классе - потомке StiRibbonDesigner), не вышло. Новый RibbonTabItem отображается, а вот элементы на его панели (RibbonTabItem.Panel) - нет.
Как добавить свою закладку в RibbonControl? И есть ли возможность добавить свой элемент на панель "Словарь" (в контекстное меню или кнопкой)?
Спасибо.
Кастомизация дизайнера отчетов
Добавлено: 04 дек 2008, 09:00
Сергей
Получилось добавить вкладку, используя код
Код: Выделить всё
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" теперь появляется регулярно при запуске дизайнера и пропадает при выборе вкладки "Страница". Видимо, связано с добавлением своей вкладки.
Кастомизация дизайнера отчетов
Добавлено: 04 дек 2008, 10:13
Сергей
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 уже настроен.
Кастомизация дизайнера отчетов
Добавлено: 05 дек 2008, 22:17
Edward
Здравствуйте.
Спасибо за присланную информацию. Проанализируем эту ситуацию и сообщим Вам о результатах в этом топике.
Спасибо.
Кастомизация дизайнера отчетов
Добавлено: 06 дек 2008, 23:00
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 уже настроен.
Да, все верно. Инициализация происходит в конструкторе.
Спасибо.
Кастомизация дизайнера отчетов
Добавлено: 06 дек 2008, 23:03
Vital
Здравствуйте,
unic писал(а):
Надпись "invalid license" теперь появляется регулярно при запуске дизайнера и пропадает при выборе вкладки "Страница". Видимо, связано с добавлением своей вкладки.
Мы добавили два метода в StiRibbonDesignerControl: CreateRibbonTab и CreateRibbonBar. Использовать нужно так:
Код: Выделить всё
Stimulsoft.Controls.Win.DotNetBar.RibbonTabItem tabItem = CreateRibbonTab("TEST");
Stimulsoft.Controls.Win.DotNetBar.RibbonBar barItem = CreateRibbonBar(tabItem, "TEST2");
Спасибо.
Кастомизация дизайнера отчетов
Добавлено: 06 дек 2008, 23:37
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 декабря.
Спасибо.
Кастомизация дизайнера отчетов
Добавлено: 09 дек 2008, 08:16
Сергей
Vital писал(а):
Мы добавили два метода в StiRibbonDesignerControl: CreateRibbonTab и CreateRibbonBar. Использовать нужно так:
Код: Выделить всё
Stimulsoft.Controls.Win.DotNetBar.RibbonTabItem tabItem = CreateRibbonTab("TEST");
Stimulsoft.Controls.Win.DotNetBar.RibbonBar barItem = CreateRibbonBar(tabItem, "TEST2");
Спасибо.
Здравствуйте.
К сожалению, использовать добавленный код именно так не получится, поскольку объекта StiRibbonDesignerControl у меня нет. Есть класс - наследник StiRibbonDesigner и его атрибут RibbonControl.
Кастомизация дизайнера отчетов
Добавлено: 09 дек 2008, 08:47
Сергей
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 декабря.
Спасибо.
При таком использовании на каждое открытие меню в него будет добавляться пункт: на первое открытие там будет один новый пункт, на два - два одинаковых пункта и т.д. Потому перед
надо озаботиться проверкой, нет ли уже такого пункта в меню.
PS: Когда увидел названия событий, то подумал, что они относятся к главному меню дизайнера, а не к панели редактирования словаря. :shame: