Блог Александра Божко
Архивы
Рубрики

Технические приемы

Скины для dxRibbon

Как гласит официальная документация, для того, что бы применить скин для dxRibbon нужно изменить свойство ColoreSchemeName. Действительно, устанавливаем значения свойства как Office2010Silver и прямо в режиме проектирования видим как наш Ribbon bar преображается.

skinnedribbon

Однако запустив приложение видим следующее:

skinnedribbonold

Обычный голубой скин, который и был изначально. Какой бы скин мы не выбрали, ситуация не меняется. dxRibbon отображает только стандартные цветовые схемы – blue, black и silver.

В чем же проблема?

Читать далее

Одной из самых неприятных проблем при переводе проекта на старшую версию Delphi стала локализация. Я использую “родной” инструментарий. Подробно он описан в блоге Александра Алексеева.

На первый взгляд, языковые проекты нормально конвертируются. Более того, несмотря на то, что в Delphi 2007 специфические символы в переводах не отображаются правильно, *.dfn файлы (те в которых хранятся переводы ресурсов формы) содержат юникод строки. Поэтому, если эти проекты пересобрать в Delphi 2009/2010/XE, то все ранее вбитые переводы будут выглядеть так, как они должны выглядеть без дополнительных телодвижений:

translate

Но при детальном рассмотрении, выявляются некоторые артефакты.

Вот так будет отрабатываться казалось бы обычный код MessageDlg(‘To continue please restart the application.’, mtWarning, [mbOK], 0); на том же чешском языке.

artefact

Читать далее

Что бы как-то сгладить сумбур предыдущего поста, я, как и обещал, опишу все последовательность действий по созданию простого приложения DataSnap с нативным клиентом и .Net клиентом.

Инструментарий.

Для работы мы будем использовать БД MS Access (предположим, что она уже создана), Delphi 2010 Architect, а так же Delphi Prism 2010 и MS Visual Studio 2010. В принципе, версия .Net средств разработки не так уж и важна.

В качестве компонентов доступа к БД – AnyDAC.

В качестве путеводителя по возможностям DataSnap - руководство от Боба Сварта, откуда я иногда и буду дергать цитаты. Читать далее

Отдельного внимания заслуживает кнопка приложения (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. После этого при нажатии на кнопку вы получите пустое меню, примерно следующего вида: Читать далее

Если у вас есть приложение и вы используете классический компонент TMainMenu, то переход DevExpress для вас пройдет значительно проще. Вы можете использовать компонент TdxBarConverter. Это редкий случай, когда Delphi компонент используется исключительно в режиме разработки (Desighn Time). Разместите  компонент на форме. Установите значения свойств Menu и BarManager. В Object Inspector «наступите» мышкой на значение свойства Execute. Получите преобразованный dxBarManager. Несколько нетрадиционно, не правда ли? Но, тем не менее, довольно эффективно. Читать далее

DevExpress – один из первых наборов Delphi компонентов, который начал предоставлять возможность создания т.н. Ribbon интерфейса. Я не буду детально описывать процесс создания Ribbon Bar, пересказывая тем самым официальную документацию. Выделю лишь некоторые ключевые моменты.

Читать далее

Совершенно недавно в одном из форумов мне довелось прочесть мысль о том, что DevExpress является едва ли не стандартом в разработки пользовательских интерфейсов Delphi приложений. Возможно это и преувеличение, но, тем не менее, нельзя отрицать популярность этого продукта. Однако, структура классов DevExpress весьма сложная и, зачастую многие классы сильно отличаются по строению от аналогичных VCL классов. Классический пример cxGrid. Если, скажем,TGridEh имеет схожее строение с классическим TDBGrid, то TcxGrid устроен абсолютно иначе. Как следствие, разработчик, столкнувшийся впервые с TcxGrid, будет испытывать некоторые затруднения.

Читать далее

Оригинал.

TValue – новая структура – запись (record), определенная в RTTI.pas, она предоставляет возможность сохранять значение и информацию о типе для экземпляров любых типов. Это видно из приведенного ниже кода. Читать далее

В одном из предыдущих постов я упоминал о переводе Delphi проекта на DevExpress. Поскольку одной из основных причин такого решения была необходимость создания т.н. Ribbon -интерфейса, то в проекте пришлось менять все контролы. Сами понимаете, на фоне Ribbon-меню обычные серые кнопки, списки, радио-баттоны и чек-боксы смотрятся не очень… Очень быстро выяснилось, что переделать главное меню – не самое сложное. Компонент TdxBarConverter успешно решает эту задачу (требуется лишь легкая “доработка напильником”). Но если проект содержит несколько сотен контролов, которые активно используются в коде, то о трудоемкости их замены в ручную лучше и не говорить. Читать далее

Убедил работодателей перейти на использование DevExpress. И все бы хорошо. Но работать сейчас приходится под Windows Vista. Стало наблюдаться дикое торможение Code Insight, как только на форму попадает DevExpress Grid. Оно и понятно, класс очень “тяжелый”…

Работаю я на вот таком аппарате. С 4G оперативки. Думаю, для Delphi кодинга – вполне приемлимо. И, если под XP хоть как-то можно было работать, то под Vista ожидать выпадания подсказки можно 10-15 секунд. При том, на это все жалуются. А солюшнов – нет.

И тут совершенно случайно, коллега похвастался тем, что поставил Memory Boost. Delphi, говорит, раза в три быстрее грузиться начал.

А дай-ка, думаю, и я попробую.

Купил себе довольно быстрый USB Flash накопитель. Microsoft заявил, что он включается в режиме ReadyBoost “на лету”. Включил.

Работать стало приятнее, но протормозка в пару-тройку секунд ощущалась.

Но после перезагрузки….

После перезагрузки Code Insight начал работать мгновенно.

Рекомендую.

Продукты DevArt
Купить онлайн:



Читай русскоязычные Delphi блоги
Каталог блогов Blogdir.ru
Яндекс.Метрика