DevExpress. Заметки на полях #3

Date: 9 Март 2010 Comments: 16 so far

Отдельного внимания заслуживает кнопка приложения (Application Buttun) Ribbon Bar‘а.

de1

Application Buttun.

Для того, что бы ее отобразить, необходимо установить свойство QuickAccessToolbar.Toolbar. Опять же, как по мне, это не совсем логично. Ведь форма не может содержать более одного компонента TdxBarManager, как следствие, значение свойства QuickAccessToolbar.Toolbar может быть либо пустым (в этом случае кнопка не будет отображаться), либо совпадать со значением свойства BarManager. Более того, TdxRibbon содержит свойство ApplicationButton.Visible, которое при  QuickAccessToolbar.Toolbar  = nil никоим образом не влияет на видимость кнопки. В компоненте BarManager необходимо создать Toolbar и назначить его свойству QuickAccessToolbar.Toolbar (например, QuickAccessToolbar.Toolbar=dxBarManager1Bar1, где dxBarManager1Bar1:TdxBar).

Для того, что бы при нажатии на кнопку появлялось меню, необходимо поместить на форму компонент TdxBarApplicationMenu и указать его в качестве значения свойства ApplicationButton.Menu. После этого при нажатии на кнопку вы получите пустое меню, примерно следующего вида:de2

Меню Application Button

Если вы захотите добавить пункты меню – сделайте двойной щелчок на компоненте  TdxBarApplicationMenu. В левом верхнем углу экрана появится панель “ExpressBar SubMenu“, а так же откроется Customize диалог dxBarManager‘а. Путем перетаскивания можно добавить команды в меню. Кроме того, на нижнюю панель диалога, появляющегося после нажатия кнопки приложения, можно добавить отдельные кнопки. За них отвечает свойство Buttons компонента TdxBarApplicationMenu.
Следует обратить внимание на то, что если вы используете TdxBarLargeButton, то за отображение пиктограммы кнопки будет отвечать свойство largeGlyph или LargeImageIndex, в том случае, если вы используете ImageList. Если же, у вас используется TdxBarButton, то, соответственно, необходимо использовать свойства Glyph или ImageIndex. Так, что не пугайтесь, если после задания свойства Glyph изображение на кнопке не появилось, а сразу проверьте, возможно, вы используете TdxBarLargeButton и нужно воспользоваться свойством largeGlyph.
Ряд маленьких кнопок, находящийся справа от кнопки приложения, так же можно заполнить, перетаскивая команды из Customize диалога dxBarManager’а. За этими кнопками следует пиктограмма, нажатие на которую позволит вызвать меню пользовательской настройки Ribbon Bar’а. Это меню так же можно кастомизировать. Воспользуйтесь свойством PopupMenuItems компонента dxRibbon.
А вот спрятать список документов (Recent documents) довольно непросто, если предварительно не знать, как это делается. Для этого свойству ExtraPane.Size компонента TdxBarApplicationMenu необходимо присвоить значение 1.
К сожалению, остались и не разрешенные проблемы. Если сравнить, как выглядит RibbonBar, созданный с помощью DevExpress и, скажем, с помощью стандартных компонентов Delphi 2009/2010, то видно, что отличаются заголовки. Если в качестве эталона брать Office 2007, то DevExpress-овский интерфейс, пожалуй, не совсем верный. Возможно, кому-то из моих читателей известно решение данной проблемы. В этом случае не сочтите за труд поделиться им.
Пожалуй, это все, о Ribbon Bar, в следующей части данной рубрики я планирую немного рассказать о компоненте TcxGrid.

Share and Enjoy:
  • Print
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks
  • Blogplay
  • DZone
  • Fark
  • Gwar
  • Live
  • Twitter
  • Add to favorites
  • blogmarks
  • Blogosphere News
  • blogtercimlap
  • Diggita
  • Diigo
  • FriendFeed
  • HelloTxt
  • RSS
  • SphereIt
  • StumbleUpon
  • Technorati
  1. 16 Comments to “DevExpress. Заметки на полях #3”

    1. Афанасий пишет:

      Привет!
      Есть ли еще Ваши статьи про DevExpress ?
      Можете отправить их мне на емайл?

    2. admin пишет:

      Все, что есть, находится в этом блоге.

    3. Vlad пишет:

      Я обычно, когда с Ribbon Controls возился меню выносил в отдельный ActionList и этот лист связывал с основным ActionManager’ом. У DevExpress нет такой возможности?

    4. Lavren пишет:

      Спасибо за статю, Александр!

      >то видно, что отличаются заголовки.
      Думаю вы имели в виду текст заголовка окна.

      Как видете разница почти не видна.
      Первое окно – MS Word 2007.
      Второе – проект на Delphi 2007 с DevExpress (ExpressBars 6.43).
      Третье – проект на Delphi 2010 с стандартными компонентами.
      Свойства объектов которые формируют заголовок:
      DevExpress: TdxRibbon.DocumentName, TdxRibbonForm.Caption.
      Delphi 2010: TRibbon.DocumentName, TRibbon.Caption.

    5. admin пишет:

      DevExpress RibbonBar не поддерживает ActionManager.
      А его родной BarManager может быть только один на форме. Так, что. думаю, подобный вариант тут не получится.

    6. Shoroh пишет:

      Если использовать TdxBarLargeButton, то стоит иметь два одинаковых TcxImageList, один 16х16, второй – 32х32. Индексы картинок в них должны совпадать. Один указываем в TdxBarMAnager.ImageOptions.Images, второй – там же в LargeImages. Тогда кнопки на баре при измении размеров окна будут тоже уменьшаться и отображать правильную картинку – большую или маленькую.

    7. Lavren пишет:

      Свойство TdxRibbonQuickAccessToolbar.Toolbar имеет тип TdxBar и ему неможет бить равно BarManager:ТdxBarManager. В компоненте BarManager необходимо создать Toolbar (я это делаю через ПКМ) и тогда назначить его свойству QuickAccessToolbar.Toolbar (например, QuickAccessToolbar.Toolbar=dxBarManager1Bar1, где dxBarManager1Bar1:TdxBar).

    8. admin пишет:

      2 Shoroh.
      Это. как раз, очевидно. Только не всегда удобно. Особенно, когда больше сотни картинок. Хотя, по другому, наверное, и никак…

    9. admin пишет:

      2 Lavren.
      Да, верно. Спасибо. Исправлю.

    10. Lavren пишет:

      >то видно, что отличаются заголовки.
      Чем имено они отличаются?
      И можете подсказать почему нету моего первого комментария (приблизительно в 11:00)?

    11. admin пишет:

      В спамлист попал камент. Я его извлек.
      Я чуть позже дам скриншоты…

    12. Lavren пишет:

      Александр, дайте скрины!!! :)

    13. admin пишет:

      Да, да, я помню.

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

    14. Lavren пишет:

      Александр, можете поправить мой первый пост чтобы картинка была видна или ссылка?

      • admin пишет:

        Да, сделал ссылкой, картинка в камменте не очень хорошо смотрится…

        А еще включил возможность отвечать на комментарии…

    Leave a Reply