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

DevExpress

К сожалению, последовательным, в отношении постов быть не получается. Да, и DevExpress, с которым я сейчас плотно работаю, и о котором я в последнее время много рассказываю, постоянно подбрасывает интересные задачи… Поэтому, еще одна подрубрика. Продолжение “Заметок на полях” будет. Но TIPS & TRICKS это, скорее, для того, что бы не забыть как сделать то-то и то-то… Если кто-то столкнется с аналогичными задачами и кому-то это сэкономит время – я буду рад.

Для тех, кого заинтересовала тема Scheduller’а, будут интересна серия постов в блоге Delphi в Internet.

А пока…

Читать далее

Перед тем, как продолжить рассказ о 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. Но это несложно сделать и с помощью кода.

Читать далее

Так получилось, что рассказывать о переводе приложения с GridEh на DevExpress‘овские гриды бессмысленно, если читатель не имеет представления о cxGrid. Отсюда и затянувшаяся серия “заметок на полях“. К слову, на мой взгляд по соотношению цена/функционал GridEh - все таки оптимальное решение. Тем не менее, как я писал в предыдущем посте серии, была необходимость использовать cxGrid.

Скажу честно, процесс перевода не прост. Хотя во многом его трудоемкость зависит от организации исходного варианта. В моем случае события исходных гридов обрабатывались очень плотно. Перед моим предшественником ставилась задача получить определенную эргономику грида. Переход по ячейкам с помощью Enter, новая запись по достижению последней ячейки последней записи и т.д. Кроме этого, при добавлении записей в грид производились некоторые операции по подстановке исходных значений (почему в грид, а не в датасет, я так и не понял), изменению отображения данных и прочее… Все это и привело к весьма громоздкому и “гридзависимому” коду. Читать далее

Еще одним свойством 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.  Я буду использовать слово “грид”, хотя его фактически не в русском языке. Но изобретать переводы как-то сетка, табличный элемент управления и т.д. я не буду. Грид, он и в Африке грид. Читать далее

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



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