Tw-city.info

IT Новости
2 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Ribbon интерфейс программирование

Ribbon-интерфейс: плюсы и минусы

Столько радикально изменившийся интерфейс Office изменяет систему взглядов на настольное ПО, однако, взгляды на целесообразность такого интерфейса расходятся. Microsoft Office 2007 (и Vista в меньшей степени), привнесли серьезные изменения в пользовательский интерфейс настольного ПО. Ленточный интерфейс в Office, известный под кодовым именем Fluent UI и впервые представленный в Office 2007, является попыткой Microsoft помочь пользователям использовать большее количество функций Office. Около двух десятилетий программное обеспечение полагалось на интерфейс с меню, в которых хранились и показывались функции, но, так как количество функций росло, то и меню стали перегруженными.

Разработчики ПО пробовали разные подходы, как, например, в Office 2003, в котором редко используемые пункты меню автоматически прятались, или способ от Adobe, которая использовала многовкладочный плавающий интерфейс, который в итоге взяли на вооружение и другие разработчики.

Но ленточный интерфейс, возможно, является самым радикальным изменением пользовательского интерфейса со времен Windows 95 и Mac System 7. Ленты представляют команды как организованный набор наиболее релевантных для каждой задачи функций. Хотя восприятие этих изменений очень различается.

В чем причина столь радикальных изменений?
Представители Microsoft, конечно же, очень довольны проделанной работой. На презентации Microsoft 2008 Office System Developer Conference в Сан-Хосе председатель компании Билл Гейтс (Bill Gates) охарактеризовал Fluent UI как очень успешное технологическое решение, добавив, что компания намерена реализовать этот интерфейс в других своих продуктах. «Мы проводили очень много тестов по юзабилити и, к счастью, на данный интерфейс была очень позитивная реакция» — заявил Гейтс. По словам Гейтса, старый интерфейс скрывал функциональность, которая была в ПО и которую Microsoft неоднократно просили реализовать.

С разработкой Fluent UI компания искала способ обработки большего количества команд в Office, так как меню и панели задач более не могли с ними справиться, заявил Марк Алексифф (Mark Alexieff), главный менеджер по разработке Microsoft Office. «Мы пришли к тому, что через 10 лет после того, как были выпущены Word, Excel и PowerPoint, в этих программах было в 10 раз больше функций, чем на момент их выхода» — заявил Алексифф. Пользователи хотят тратить на поиск необходимой команды меньше времени. «Мы переместили наш фокус туда, где бы мы могли найти способы привести людей к желаемому результату» — сказал Алексифф.

Использование лент с иконками также помогло уменьшить размер, занимаемый пользовательским интерфейсом на экране. «Дизайн лент дал нам возможность использовать графику и иконки намного более эффективно» — сказал Алексифф.

Почему пользователи не любят Fluent UI?
Несмотря на мнение самой Microsoft, существует множество пользователей недовольных Fluent UI.

«Мне он не нравится. Моей жене тоже» — заявил Маркиан Задони (Markian Zadony), который работает в компании по финансовым услугам. Он заявляет, что Fluent UI слишком радикальный уход от старого подхода: «По сути он сужает ваши возможности».

Его недовольство вызвано тем, что ленты пытаются предугадать, что пользователь будет делать, говорит Задони, и часто не угадывают. «Они пытаются быть умнее тебя» — говорит Задони.

«Интерфейс очень сильно отличается, кроме того, ленты забирают довольно большой кусок экранного пространства, а также сами предполагают, что вы хотите увидеть» — заявил один из пользователей форума InfoWorld. В блоге MSDN эта тема также вызвала много критики, а один из пользователей назвал ленты «смехотворными», а другой заявил, что Microsoft создала проблемы с их введением в Office 2007. «Office 2007 ужасен. А пользовательский интерфейс омерзителен» — заявил еще один пользователь.

Неприязнь к Fluent UI довольно широка, хотя ленточный интерфейс создал новые возможности на рынке. Китайская компания Addintools предлагает пользователям вернуть старый интерфейс с меню при помощи программы Classic Menu for Office 2007.Компания заявляет, что со времени ее появления в феврале 2007 года, ее купили порядка 35000 человек.

С Fluent UI компания лишила пользователей осведомленности, заявила аналитик Джудит Хурвитц (Judith Hurwitz), президент Hurwitz & Associates. По ее мнению, попытка Microsoft заменить меню своего рода искусственным интеллектом не совсем удачна. «Системе очень тяжело понять, что хочет сделать пользователь» — отметила Хурвитц.

Хурвитц не уверена, что изменение пользовательского интерфейса стало для пользователей плюсом: «Я думаю, что проблема лежит в изменениях ради самих изменений» — заявила Хурвитц. Microsoft изменила то, что изменения не требовало, как заявила Хурвитц, отметив, что ее комментарии отражают именно то, что она слышала от пользователей Office.

Почему пользователи любят Fluent UI?
Гари Вильгельм (Gary Wilhelm), менеджер по бизнес и финансовым системам в Englewood Hospital and Medical Center, заявил, что новый интерфейс Office облегчает выбор темы или шрифта в документе. «Вы в какой-то мере парите над текстом, выделяя то, что вам нужно, и выбираете нужный шрифт» — заявил Вильгельм. Он считает, что первоначальная негативная реакция на новый интерфейс может быть вызвана значительными изменениями, которые он налагает на пользователей: «Такому интерфейсу понадобится какое-то время, чтобы заслужить доверие пользователей и популярность, поскольку это слишком большое изменение».

Также среди почитателей нового интерфейса Кевин Смит (Kevin Smyth), директор по информационным технологиям в Cerner, поставщике технологий отображения информации о состоянии здоровья. «Мне кажется, что я освоился в новом интерфейсе примерно за неделю или около того» — заявил Смит. Смит заявляет, что таким образом ПО выводит на передний план функции, которые были похоронены глубоко в меню. Также Смит заявил, что он считает, что новый ленточный интерфейс сделал работников Cerner более продуктивными.

«Fluent UI инновационен, поэтому необходим некий период адаптации. Но пользователи очень быстро находят преимущества использования нового интерфейса» — заявляет Алексифф. «В Fluent UI поиск команд более простым. Fluent UI упрощает использование команд». Алексифф заявил, что отзывы о новом интерфейсе, как правило, позитивные.

На данный момент Microsoft не планирует вносить какие-либо изменения в Fluent UI, заявил Алексифф. «Мы не видим проблем у пользователей, разворачивающих Office 2007, поэтому в проведение какой-либо модернизации смысла нет» — заявил Алексифф. — Сообщает TheVista

Qt Coding

Qt programming, Qt tools, source code, компоненты для Qt

суббота, 29 декабря 2012 г.

Подключаем интерфейс в стиле Microsoft Ribbon

Впервые Microsoft анонсировала интерфейс Ribbon (что переводится как «лента») в 2007 году в новом выпуске MS Office. Новый интерфейс разительно отличался от привычных меню и тулбаров и не всем пришелся по вкусу.

У многих пользователей были трудности при переобучении, но с тех пор прошло уже много лет и пользователи как-то попривыкли к ленточному интерфейсу. Microsoft продолжает использовать риббоны в своих продуктах, в Windows 7, например, почти все стандартные приложения (MS Paint, WordPad) имеют интерфейс Ribbon.

Читать еще:  Функции в программировании c

  1. Классический интерфейс с меню и тулбарами в стилизованном оформлении.
  2. Стилизованное всплывающее окно, которое всплывает над треем. Подобное окошко можно увидеть у антивирусов.
  3. Виджеты для боковых панелей, таких как окно свойств некого объекта. Всё это тоже имеет различное стилизованное оформление а-ля Office 2007.

В качестве примера, создадим текстовый редактор а-ля WordPad с интерфейсом Microsoft Ribbon.

Создадим простой файл проекта ribbon.pro .

TEMPLATE = app
TARGET = ribbon
DESTDIR = bin

INCLUDEPATH += ./ gui
DEPENDPATH += ./ gui

SOURCES += main.cpp
$$files(gui/*.cpp)

# Подключение Qtitan Ribbon
QTITANDIR = $$quote($$(QTITANDIR))
include($$QTITANDIR/src/shared/qtitanribbon.pri)

Далее создадим главное окно, класс MainWindow . Чтобы главное окно приобрело ленточный интерфейс оно должно быть унаследовано от класса Qtitan::RibbonMainWindow .

class MainWindow : public Qtitan::RibbonMainWindow
<
Q_OBJECT
public :
MainWindow(QWidget* parent = 0);
virtual

Чтобы запустить пример вам следует в свойствах проекта назначить рабочий каталог на папку bin и положить в bin файлы:
qtnribbon2.dll
QtCore4.dll
QtGui4.dll
QtScript4.dll
QtSql4.dll
QtXml4.dll

Впрочем, если у вас установлена Qt той же версии, что и библиотеки из дистрибутива Qtitan (у меня это 4.8.1), то вам не понадобятся библиотеки с префиксом Qt*.dll .
Если же вы будете использовать коммерческую лицензию на Qtitan Ribbon, то вы сможете собрать библиотеку qtnribbon2 из исходников с той версией Qt, которая вам необходима.

Чтобы подключить к приложению стиль Ribbon нужно установить объекту QApplication стиль «ribbonstyle».

QApplication a(argc, argv);
a.setStyle( «ribbonstyle» );

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

Ниже, в спойлере, приведен код, создающий этот интерфейс.

MainWindow::MainWindow(QWidget * parent)
: Qtitan::RibbonMainWindow(parent)
<
setWindowTitle(tr( «Qtitan Ribbon» ));
setCentralWidget( new QWidget( this ));
createRibbon();
setWindowState(Qt::WindowMaximized);
>

QAction* action = groupClipboard->addAction(
QIcon( «:/images/copy.png» ),
tr( «&Copy» ), Qt::ToolButtonTextUnderIcon);
connect(action, SIGNAL(triggered()), this , SLOT(pressButton()));

action = groupClipboard->addAction(QIcon( «:/images/paste.png» ),
tr( «&Paste» ), Qt::ToolButtonTextUnderIcon);
connect(action, SIGNAL(triggered()), this , SLOT(pressButton()));

action = groupClipboard->addAction(QIcon( «:/images/cut.png» ),
tr( «C&ut» ), Qt::ToolButtonTextUnderIcon);
connect(action, SIGNAL(triggered()), this , SLOT(pressButton()));
>
// Font Group
Qtitan::RibbonGroup* groupFont =
pageButtons->addGroup(tr( «&Font» ));
if (groupFont)
<
groupFont->setOptionButtonVisible();

QFontComboBox* comboFont = new QFontComboBox(groupFont);
comboFont->setToolTip(tr( «Font» ));
comboFont->setFontFilters(QFontComboBox::MonospacedFonts);
comboFont->setEditText(tr( «» ));
comboFont->setMinimumWidth(150);
comboFont->setMaximumWidth(150);
groupFont->addWidget(QIcon(), tr( «Font:» ), comboFont);

QSpinBox * spinSize = new QSpinBox(groupFont);
spinSize->setToolTip(tr( «Font Size» ));
spinSize->setMinimum(8);
spinSize->setMaximum(48);
spinSize->setMinimumWidth(150);
groupFont->addWidget(QIcon(), tr( «Font Size:» ), true , spinSize);

void MainWindow::createMenuFile()
<
QIcon iconLogo;
iconLogo.addPixmap(QPixmap( «:/shared/res/qtitan.png» ));
iconLogo.addPixmap(QPixmap( «:/shared/res/qtitanlogo32x32.png» ));
if (QAction* actionFile = ribbonBar()->addSystemButton(
iconLogo, tr( «&File» )))
<
actionFile->setToolTip(tr( «Click here to see everything
»
«you can do with your
document» ));

if (Qtitan::RibbonSystemPopupBar* popupBar =
qobject_cast (actionFile->menu()))
<
QAction* newFile = popupBar->addAction(
QIcon( «:/images/new.png» ), tr( «&New» ));
newFile->setShortcut(tr( «Ctrl+N» ));
newFile->setStatusTip(tr( «Create a new document» ));
newFile->setToolTip(tr( «New» ));
newFile->setEnabled( false );

QAction* openFile = popupBar->addAction(
QIcon( «:/images/open.png» ), tr( «&Open. » ));
openFile->setShortcut(tr( «Ctrl+O» ));
openFile->setToolTip(tr( «Open» ));
openFile->setStatusTip(tr( «Open an existing document» ));
connect(openFile, SIGNAL(triggered()), this , SLOT(open()));

QAction* saveFile = popupBar->addAction(
QIcon( «:/images/save.png» ), tr( «&Save» ));
saveFile->setShortcut(tr( «Ctrl+S» ));
saveFile->setToolTip(tr( «Save» ));
saveFile->setStatusTip(tr( «Save the active document» ));
connect(saveFile, SIGNAL(triggered()), this , SLOT(save()));

QAction* saveAsFile = popupBar->addAction(tr( «Save &As. » ));
saveAsFile->setToolTip(tr( «Save As» ));
saveAsFile->setStatusTip(tr( «Save the active document »
«with a new name» ));
connect(saveAsFile, SIGNAL(triggered()), this , SLOT(save()));

popupBar->addSeparator();
QIcon iconClose;
iconClose.addPixmap(QPixmap( «:/images/close.png» ));
QAction* actClose = popupBar->addAction(iconClose, tr( «&Close» ));
actClose->setShortcut(tr( «Ctrl+C» ));
actClose->setStatusTip(tr( «Exit» ));
connect(actClose, SIGNAL(triggered()), this , SLOT(close()));
popupBar->addPopupBarAction(actClose, Qt::ToolButtonTextBesideIcon);

QAction* option = new QAction(QPixmap( «:/images/smalloption.png» ),
tr( «Opt&ion» ), this );
popupBar->addPopupBarAction(option, Qt::ToolButtonTextBesideIcon);
option->setEnabled( false );

if (RibbonPageSystemRecentFileList* pageRecentFile =
popupBar->addPageRecentFile(tr( «Recent Documents» )))
<
pageRecentFile->setSize(9);
connect(pageRecentFile,
SIGNAL(openRecentFile( const QString&)),
this , SLOT(openRecentFile( const QString&)));
connect( this ,
SIGNAL(updateRecentFileActions( const QStringList&)),
pageRecentFile,
SLOT(updateRecentFileActions( const QStringList&)));
>
>
>
>

void MainWindow::createQuickAccessBar()
<
if (Qtitan::RibbonQuickAccessBar* quickAccessBar =
ribbonBar()->getQuickAccessBar())
<
QAction* action = quickAccessBar->actionCustomizeButton();
action->setToolTip(tr( «Customize Quick Access Bar» ));

QAction* smallButton = quickAccessBar->addAction(
QIcon( «:/images/smallNew.png» ), tr( «New» ));
smallButton->setToolTip(tr( «Create a new document» ));
connect(smallButton, SIGNAL(triggered()), this , SLOT(pressButton()));
quickAccessBar->setActionVisible(smallButton, false );

smallButton = quickAccessBar->addAction(
QIcon( «:/images/smallOpen.png» ), tr( «Open» ));
smallButton->setToolTip(tr( «Open an existing document» ));
connect(smallButton, SIGNAL(triggered()), this , SLOT(pressButton()));
quickAccessBar->setActionVisible(smallButton, false );

smallButton = quickAccessBar->addAction(
QIcon( «:/images/smallSave.png» ), tr( «Save» ));
smallButton->setToolTip(tr( «Save the active document» ));
connect(smallButton, SIGNAL(triggered()), this , SLOT(pressButton()));

smallButton = quickAccessBar->addAction(
QIcon( «:/images/smallUndo.png» ), tr( «&Undo» ));
smallButton->setShortcut(QKeySequence::Undo);
smallButton->setEnabled( false );

smallButton = quickAccessBar->addAction(
QIcon( «:/images/smallRedo.png» ), tr( «&Redo» ));
smallButton->setShortcut(QKeySequence::Redo);
smallButton->setEnabled( false );

В качестве редактора можно использовать компонент QTextEdit, который мы устанавливаем в качестве центрального виджета.

setCentralWidget( new QTextEdit( this ));

При желании, также можно добавить панель состояния в стиле Ribbon, и дополнительную панель справа.

А чтобы заменить стандартный заголовок окна на заголовок в стиле Ribbon достаточно активировать параметр
ribbonBar()->setFrameThemeEnabled();

При этом заголовок окна будет выровнен по центру и расположен на одном уровне с панелью быстрого доступа.

Главное меню. Ленточный интерфейс (Ribbon)

Панель инструментов Budget-Plan Express

Главное меню – в зависимости от версии MS Office

В процессе установки программы, инсталлятор предлагает выбрать версию MS Office, установленную на вашем компьютере: 2003 или 2007-2016 и выше и выше. В зависимости от этого будет установлена версия файла Excel: 2003 (с расширением «xls») или 2007-2016 и выше (с расширением «xlsm»). Стандартный язык интерфейса (русский) или дополнительный язык – английский выбирается так же в процессе установки программы.

Ленточный интерфейс для MS Office (2007-2016):

Стандартное (ниспадающее) меню для MS Office 2003:

Исполняемый модуль программы универсален и работает со всеми версиями MS Office (2003, 2007-2016). При переходе из стандарта 2003 на стандарт 2007-2016, новая установка и регистрация программы не требуется, однако необходимо установить «стартовый» файл Excel (с расширением «xlsm»), который можно скачать с сайта, или самостоятельно сконвертировать старые файлы проектов, если в них есть необходимость.

Особенности ленточного интерфейса

Стандартный интерфейс представляет собой обычное многоуровневое ниспадающее меню. При использовании Excel 2003 (Office 2003) используется стандартное меню, начиная с Excel 2007 (Office 2007-2016) используется ленточное меню. При использовании ленточного интерфейса (Ribbon) вместо заголовков в стандартном меню используются вкладки, и функции распределяются по вкладкам на панели инструментов («ленте»).

В «Budget-Plan Express» нет стандартного меню Excel, и на время работы программы оно заменяется собственным «ленточным» меню. Так же не доступны настройки и прочие вкладки, которые входят в состав меню Excel, кроме общей вкладки «Файл». Из средств модификаций меню остаются доступными «параметры отображения ленты» (где можно «скрывать», «показывать вкладки» и «показывать вкладки и команды») и «настройка панели быстрого доступа»:

В «настройках панели быстрого доступа» можно разместить стрелки навигации «над лентой» или «под лентой»:

Читать еще:  Vb язык программирования

☛ Обратите внимание, в некоторых ранних версиях Excel (например, в 2007) панель быстрого доступа может не отображать иконки навигации, в этом случае, для перехода к нужной таблице, используйте горячие клавиши или пункт меню «Содержание таблиц».

Ribbon интерфейс программирование

Последние годы я никак не мог понять куда катятся «мелкомягкие», а главное, откуда веет этот дурнопахнущий дым «инноваций», который губит рынок Windows. Чисто аналитически я никогда не верил в системный кризис, но понять где именно налаженая система юзабилити дала сбой никак не мог. До сегодняшнего случайного прочтения одного интервью. Теперь пазл более-менее сложился, и много стало на свои места.

Давайте просто перечислим факты.

В 1993 году в Майкрософт приходит молодая амбициозная женщина по имени Джули Ларсон-Грин. Программист-самоучка, она начала карьеру в Aldus, работая над PageMaker, который потом вместе с компанией был куплен фирмой Adobe. Она была принята на работу в качестве проект-менеджера Visual C++ и отвечала за этот продукт до версии 5.0 (пятерка вышла без нее), оставив подразделение компиляторов в 1997 году.

Теперь, внимание, поворотный пункт. Программист-самоучка, менеджер-самоучка, она, по ее словам, сильно увлеклась вопросами юзабилити и интерфейсов. И теперь она стала еще и дизайнером-самоучкой, перейдя в подразделение Office на должность разработчика интерфейсов. И ее первым проектом был (внимание!) Internet Explorer, версии до 5 (пятерка вышла опять же без нее — тенденция). Следующим был уже продукт FrontPage (помните такой?). И в конце концов, ей доверили проектирование интерфейса всего офиса версии XP, который повлиял и на стиль Windows XP (ни для кого не секрет, что Windows всегда рассматривался Microsoft в первую очередь как платформа для Office, который приносит компании главную прибыль). «Эра XP» началась в 2001 году, когда вышли Windows XP и Office XP.

Итак, давайте начнем с простого. Какое изменение в интерфейсе от Майкрософт было первым, вызвавшим отторжение у нормальных пользователей? Правильно, «пластмассовый» дизайн WinXP и Office XP. Игрушечный интерфейс, который, слава богу, можно было отключить — что и делали первым делом все корпоративные пользователи. Тот самый дизайн, который одержал первое крупное поражение с MacOS, визуально проигрывая ему абсолютно во всем. А психологически — XP-шная пластмассовая игрушеченость против эппловского фотореализма еще и выставляла продукцию майкрософт как менее серьезную и технологически более примитвную, хотя все было с точностью до наоборот. Как же получилось, что технологическое преимущество потерпело такое поражение в первой визуальной войне? Нет комментариев.

В 2003 году выходит Office 2003, «улучшеный XP», моментально задавивший предшественника. А Джули награждается за безупречное техническое лидерство в подразделении Office и получает место руководителя, позволяя принимать решения самостоятельно.

Следующим ее личным изобретением стал знаменитый Ribbon-интерфейс, встреченый в штыки куда уже серьезнее, чем отключаемый интерфейс XP. Миграции на Office 2007 привели к тому, что корпоративные пользователи практически перестали пользоваться меню, ограничиваясь горячими клавишами, часто держа их список в виде стикера на мониторе или бумажки на стене, чтобы не искать часами хорошо известные функции в новом интерфейсе. А Джули становится вице-президентом. Опять без комментариев.

Что дальше? Вы правильно угадали. Следующим проектом был интерфейс Vista, который она представила вместе с концепцией Ribbon в 2006 году.

Теперь подходим к самому интересному. Пора появиться второму участнику этой драмы — Стефану Синофски, который работал в Майкрософт аж с 1989 года (и покинул ее всего несколько дней назад. В 1994 году он возглавил свежесозданное поздразделение Office, и отвечал за выпуск Офиса версий с 95 по 2003. До этого он разрабатывал архитектуру первых версий MFC (Microsoft Foundation Classes) для Visual C++. В 2009 году Синофски был назначен президентом подразделения Windows для срочной переработки провальной Висты, и выпустил Windows 7 — лучшую версию винды за все время ее существования. Параллельно он довел до ума Internet Explorer (версии после 8).

И вот выходит Windows 8. Ни для кого не секрет, что «плиточки» — продукт именно Джулии, причем продукт, которым она гордится. Она была правой рукой Стефана, и всячески продавливала инновационный подход к интерфейсу, сумев убедить даже Балмера. Смею предположить, что встроенный «старый интерфейс» — дань компромиссу в ее конфликте с технарем Синофски, который был явно не в восторге от этих инноваций. Но ее влияние в компании растет с каждым годом, и требует удовлетворения амбиций.

Что мы имеем в сухом остатке? 12 ноября 2012 года Синофски, старейший работник Microsoft, покидает компанию «из-за неразрешимых противоречий с менеджементом». В тот же день президентом поздразделения Windows назначена Джули Ларсон-Грин.

Как говорится, думайте сами, решайте сами..

Сегодня:

Последние:
— 27.12, 20:12 / #6692
— 29.03, 23:32 / #6682
— 30 апреля 2012

Сейчас онлайн:
На сайте — 19
На IRC-канале — 2

Компоненты Ribbon в Delphi

Ribbon — тип интерфейса в GUI приложениях, основанный на тулбарах, разделенных табами. Последние приложения, выпущенные компанией Microsoft, применяют эту форму интерфейса, главной частью которой является модульная лента. После выпуска Microsoft Windows Vista и Office 2007 данный тип пользовательского интерфейса стал довольно популярен.

Используем возможности Ribbon Controls в приложениях Delphi

Впервые компоненты Ribbon были включены в состав CodeGear RAD Studio 2009 (Delphi 2009) и вызвали большой интерес среди разработчиков.

Всего закладка содержит пять компонентов: TRibbon, TRibbonComboBox, TRibbonSpinEdit, TRibbonScreenTipsManager и TRibbonScreenTipsPopup.

Сразу обращу Ваше внимание на то, что использовать Ribbon Вы сможете только в связке с компонентом ActionManager со страницы Additional палитры компоентов. Так что, если Вы не имеете представления как действует ActionManager – то Вам вряд ли удастся реализовать полноценный интерфейс, да и вообще использовать Ribbon Controls в своем приложении.

Для того, чтобы разобраться с работой компонентов Ribbon, я предлагаю Вам разработать простенькое приложение, например текстовый редактор наподобие WordPad’а.

Итак, открываем Delphi и укладываем на форму следующие компоненты:

  • TActionManager с закладки Additional.
  • TImageList со страницы Win32 – здесь мы будем хранить все изображения для панели Ribbon.
  • TRibbon со страницы Ribbon Controls – главный компонент для работы с Ribbon. Собственно он и реализует поддержку Ribbon в Ваших приложениях.
  • Ну и стандартный RichEdit.

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

Теперь начнем настройку.

Выделяем TRibbon и в свойстве ActionManager указываем ActionManager1.

По умолчанию Ribbon использует тему оформления Luna. Если Вы хотите изменить внешний вид панели инструментов, то можете сделать это изменяя свойство Style. Всего можно использовать 3 стандартные схемы: Luna, Obsidian и Silver.

Теперь изменим свойство Caption на что-нибудь другое, например назовем нашу будущую программу «WordPad 2009».

Переходим к ActionManager. В свойстве FileName указываем имя файла, в котором будут храниться пользовательские настройки панели. Если файл не указать, то при работе с программой настройки не сохранятся и при каждом запуске панель инструментов будет выстраиваться по умолчанию.

Читать еще:  Программирование в windows 7

В свойстве Images выбираем наш ImageList1. Вы можете также указать где у вас будут храниться картинки для неактивных кнопок и пр., но это уже дополнительные «навороты», поэтому ограничимся одним ImageList’ом.

У компонента ImageList меняем свойства Height и Width на значение 32, а свойство DrawingStyle устанавливаем в dsTransperent. Загружаем в ImageList картинки, которые Вы будете использовать в приложении и переходим снова к Ribbon.

Выделяем Ribbon, жмем правую кнопку мыши и в меню выбираем Add Tab – таким образом мы создали страницу RibbonPage1, теперь переходим на эту страницу, снова жмем правую кнопку и выбираем в меню Add Group – добавляем RibbonGroup1. Вот в RibbonGroup’ы и добавляются все элементы управления. Как видите иерархия компонента довольна проста. Теперь переходим к RibbonPage1 и меняем свойство Caption на, например, «Редактор», а у RibbonGroup1 изменяем на «Работа с текстом». Теперь посмотрите на результат – чего-то не хватает? Конечно не хватает самого главного – кнопки меню. Чтобы добавить кнопку меню выбираем Ribbon, жмем правую кнопку мыши и в меню выбираем Add Application Menu. В итоге этих нехитрых действий у Вас должно получиться примерно следующее:

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

Теперь настроим вид кнопки меню. Для этого переходим к компоненту TRibbon и раскрываем группу свойств Application Menu, находим там пункт Icon и загружаем любую картинку в формате *.ico. По желанию, можете изменить свойство IconSize на isLarge, isMedium или isSmall. Я оставил это свойство по умолчанию в значении isMedium. Теперь Наше приложение выглядит ещё более «представительно». Осталось самое интересное – настроить все действия. А здесь придётся-таки обратить особое внимание на ActionManager.

Делаем двойной клик на ActionManager и в открывшемся окне переходим на вкладку Actions (Действия). Давайте для начала добавим одно из стандартных свойств, например, открытие файла. Для этого нажимаем на стрелку рядом с кнопкой New Action и в появившемся списке выбираем пункт New Standard Action. В итоге Вы получите целый список стандартных действий, которые поддерживаются в ActionManager. Нам необходимо свойство из группы File под названием TFileOpen. Выбираем свойство и жмем Ok. Теперь в окне ActionManager’а выбираем появившуюся категорию File, а в списке Actions наше добавленное свойство, которое обозначено там по умолчанию как Open. Все, что от нас сейчас требуется – настроить вид кнопки меню, отвечающей за выполнение этого действия и написать пару строк кода. Для этого переходим в Object Inspector, который, кстати сказать, должен сейчас у Вас выглядеть так, как показано на рисунке.

Здесь от нас требуется изменить свойства:

  • Caption — если вы хотите сделать свою подпись на кнопке.
  • Настроить Dialog.
  • ImageIndex — указать картинку из ImageList.
  • Hint — если хотите изменить подсказку.

Теперь, чтобы добавить это действие на панель инструментов, просто схватите его мышкой и перетяните на RibbonGroup. Теперь выберите в RibbonGroup это действие и найдите в Object Inspector’e свойство Command Properties – Button Size и измените его на bsLarge. Вот теперь наша кнопка выглядит действительно как кнопка. Можете поэкспериментировать со всеми свойствами – так Вы сможете легко научиться встраивать в панель не только кнопки, но и чекбоксы, комбобоксы и прочие элементы управления.

Теперь делаем двойной клик на нашей кнопке и переходим наконец-то к программированию. Описываем следующее событие:

Вот и все, что требуется описать, чтобы загрузить содержимое файла в RichEdit. Аналогичным образом Вы можете настроить абсолютно любые действия, причем необязательно стандартные.

И последнее, что хотелось бы отметить – это то, что вы можете использовать на панелях TRibbon и стандартные элементы управления, например стандартный ComboBox, но при этом может возникнуть ряд проблем, которые я рассмотрю ниже.

Проблемы при работе с Ribbon Controls

Как говорится, и в этой бочке мёда нашлась-таки ложка дёгтя. Несмотря на свою красоту и функциональность, Ribbon Controls в Delphi пока ещё сыроват, я бы даже сказал очень сыроват.

Например, присутствует ряд проблем при работе с компонентами в Design-Time – иногда размещенные на закладке компоненты ни в какую не хотят выделяться мышкой. Вроде руки не кривые, жмешь куда надо, а в Инспекторе появляются свойства совсем не того компонента или Action’а. Но это весьма несущественные проблемки, которые наверняка будут исправлены в ближайшем будущем.

Основная проблема с которой я столкнулся заключается в том, что при размещении на панелях большого количества стандартных компонентов Ribbon вдруг перестает напрочь реагировать на любые действия – выдает ошибку доступа к ячейкам памяти и умирает, что в итоге приводит к перезагрузке Delphi. Причём перезагрузка восстанавливает работу только оболочки, а проект так и не оживает.

Также при написании этой статьи натолкнулся на такой глюк – если вы переносите компоненты Ribbon с одной формы на другую, то Вам придётся перенастраивать все действия по-новой. Может это и не глюк, а сделано специально во избежание более серьезных проблем, но уж очень не хотелось бы переписывать по-новой, скажем так, действий 50-60.

Будущее Ribbon Controls в Delphi

Несмотря на ряд отмеченных мною недостатков, я все-таки остаюсь оптимистом и надеюсь, что в новой версии RAD Studio все эти недостаки и шероховатости будут убраны, а на их месте появятся новые компоненты с новыми глюками возможностями.

В настоящее время я использую Ribbon Controls исключительно в целях саморазвития, т.е. не пишу программы «под заказ» с использованием этих компонентов, т.к. не хотелось бы пролетать со сроками сдачи из-за досадных недоразумений при работе с компонентами.

Статья добавлена: 30 декабря 2009

Зарегистрируйтесь/авторизируйтесь,
чтобы оценивать статьи.

Статьи, похожие по тематике

Для вставки ссылки на данную статью на другом сайте используйте следующий HTML-код:

Ссылка для форумов (BBCode):

Быстрая вставка ссылки на статью в сообщениях на сайте:
<> (буква a — латинская) — только адрес статьи (URL);
<<статья:54>> — полноценная HTML-ссылка на статью (текст ссылки — название статьи).

Поделитесь ссылкой в социальных сетях:

Комментарии читателей к данной статье

Пока нет комментариев к данной статье. Оставьте свой и он будет первым.

Оставлять комментарии к статьям могут только зарегистрированные пользователи.

Ссылка на основную публикацию
Adblock
detector