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

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

Как я уже упоминал, на работе для разработки приложений была приобретена полная VCL Subscription от DevExpress. До этого у нас имелись лишь отдельные пакеты, к тому же они приобретались более года назад и многие продукты успели обновиться. К сожалению, мне не сразу удалось установить обновления и посмотреть последнюю версию DevExpress. Между тем, изменения обратили на себя внимание практически сразу. Помните, я писал о том, как создать “правильную” ribbon форму c помощью DevExpress (сколько раз обещал себе провести на блоге субботник и систематизировать все записи)? Так вот, теперь все стало довольно просто и среди списка стандартных Delphi файлов которые можно создать (File|New|Other… Delphi Files) появилось два вида DevExpress форм – хорошо знакомая ribbon форма в стиле офиса 2007 и новая – в стиле офиса 2010.

devexpress_new_delphi_project

Сия новинка пришлась весьма кстати, поскольку я уже собирался изощряться и создавать нечто подобное руками. К счастью, делать этого не пришлось. В данном посте я и попытаюсь рассказать о том, что из себя представляет DevExpress VCL v 12.1 Ribbon 2010 Form и как с ней работать. Читать далее

Перед тем, как продолжить рассказ о TcxScheduler, начатый в прошлом посте серии,  отвечу на многочисленные вопросы читателей блога, относительно русской документации по DevExpress. Ее нет, и как мне удалось узнать, ее создание не планируется. Но возможно создание шаблонов руководства пользователя на русском  языке.

Вне зависимости от того, какое представление активно, в режиме исполнения (Run Time Mode) мы можем вызвать контекстное меню и обнаружить два неактивных пункта: New Event (новое событие) и New All Day Event (новое ежедневное событие). Очевидно, предполагается, что ExpressScheduler позволяет добавлять события. Для того, что бы активировать данную возможность добавим компонент TcxSchedulerStorage и укажем его в качестве значения свойства Storage нашего компонента TcxScheduler.

Теперь, запустив приложение, мы можем убедиться, что пункты контекстного меню стали доступными. Вызвав пункт New Event, мы увидим диалоговое окно, позволяющее настроить параметры события. Соответственно, после создания события появляется и его отображение в ExpressScheduler’е.

Читать далее

Серия моих постов о DevExpress осталась не законченной. И еще несколько постов про гриды я планирую сделать. Но недавно свалилась очередная интересная задача. Потребовалось “прикрутить” к приложению диаграмму Гантта.

Для решения данной задачи придется использовать сторонние компоненты. Очевидно, что вариантов два ExpressScheduler и TMS Planner. Есть и другие компоненты, но проект – не однодневка. И, вполне вероятно в будущем будет мигрировать на старшие версии Delphi. Своими руками рыть яму проекту не хочу, поэтому использоваться будет то, что гарантированно доживет до следующей версии Delphi. Более того, с учетом того, что DevExpress уже используется в приложении, практически со 100% й вероятностью будет выбран ExpressScheduler. Что, однако, не является поводом не посмотреть на TMS Planner, и не рассказать о нем в блоге.

Но начну, по понятным причинам, с ExpressScheduler.

Итак, прежде всего, посмотрим, из каких элементов состоит ExpressScheduler?

Читать далее

Рассказ о TcxGridDBTableView будет не полным, если не упомянуть о полях, а точнее, о столбцах, привязанных к полям набора данных. При подключении View к источнику данных такие столбцы создаются автоматически. В данном случае я имею ввиду объекты TcxGridDBColumn. Проще всего набором столбцов управлять в редакторе View. Но это несложно сделать и с помощью кода.

Читать далее

Еще одним свойством TcxGridTableView, на которое я хотел бы обратить внимание, является ViewData. Как гласит документация, ViewData это мост между Data Controler‘ом и Table View. Именно это свойство позволяет получить доступ к строкам, отображаемым в Table View. Тип  данного свойства – TcxGridViewData.

Экземпляр TcxGridViewData получает данные от Data Controller‘а и представляет их в виде массива строк. Соответственно, у данного класса (TcxGridViewData) есть свойство Rows. Строки в свою очередь, так же представлены объектами типа TcxCustomGridRow (TcxCustomGridRow = class(TcxCustomGridRecord);), используя атрибуты данного класса, мы можем получить доступ к параметрам конкретной строки.

Читать далее

Фильтрация

Фильтрация TcxDBGridDBTableView позволяет отображать некоторую выборку из общего набора данных, отображаемого в гриде, заданную по некоторому условию. По умолчанию данная возможность, так же как и возможность сортировки,  включена. Отключить фильтрацию можно с помощью свойства OptionsCustomize.ColumnFiltering:

cxGrid1DBTableView1.OptionsCustomize.ColumnFiltering:= False;

Собственно, конечный пользователь приложения имеет возможность задать фильтр несколькими способами: Читать далее

Думаю, что перед тем, как продолжить рассмотрение функциональных возможностей Table View будет уместным немного отвлечься и чуть подробнее рассмотреть структуру View.  Как видно из диаграммы, приведенной в предыдущем посте, все Grid View наследуются от класса TcxCustomGridView. И именно в этом классе описано ключевое  свойство View – DataController:

property DataController: TcxCustomDataController;

Это свойство отвечает за подключение View к источнику данных. Кроме этого, DataController реализует функции управления данными, их сортировки, фильтрации и подсчета сумм. Естественно, в каждом наследнике TcxCustomGridView свойство DataController может описываться по-разному, но это всегда будет класс-наследник TcxCustomDataController. Например, для TcxGridDBTableView свойство DataController будет иметь тип TcxGridDBDataController, который наследуется от класса TcxDBDataController, являющегося, в свою очередь, наследником TcxCustomDataController.
Читать далее

Как я уже говорил в предыдущем посте, бывает несколько видов Grid View. В частности –  Card View, Table View, Banded Table View (расширение Table View) и Chart View. На рисунке приведена схема наследования для соответствующих классов.

ierarhy

Из рисунка видно, что для каждого вида View существуют реализации с привязкой к источнику данных и без нее. В официальной документации содержаться пошаговые руководства по использованию каждого из трех видов View (Table View, Card View и Chart View) с привязкой к источнику данных. Если вы четко представляете себе структуру грида (то, как связаны между собой грид, level и view), то, действительно все выглядит очень просто. Читать далее

ExpressQuantumGrid

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

Сразу попытаюсь оговорить отдельные моменты. Коммерческое название продукта ExpressQuantumGrid, хотя класс в Delphi называется TcxGrid. Кроме этого грида в состав  ExpressQuantumGrid  Suite входят еще несколько гридов и сопутствующих им компонентов. Но пока здесь речь пойдет только о cxGrid.  Я буду использовать слово “грид”, хотя его фактически не в русском языке. Но изобретать переводы как-то сетка, табличный элемент управления и т.д. я не буду. Грид, он и в Африке грид. Читать далее

В прошлой части “Заметок на полях” я пожаловался на то, что мне так и не удалось создать “правильный” заголовок окна с помощью DevExpress.

Оказывается, иногда полезно читать объемные руководства (для ExpressBars™ Suite это более 2000 страниц) . Там все доступно написано.

  • Добавьте модуль dxRibbonForm в секцию ‘Uses’;
  • Наследуйте вашу форму от TdxRibbonForm;
  • Перетащите TdxRibbon и, если необходимо, TdxRibbonStatusBar на форму и настройте их так, как требуется;
  • Активируйте для Ribbon опцию SupportNonClientDrawing.

Читать далее

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



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