Разработка компонентов для работы с БД для Delphi

Илья15 лет в сервисе
Данные заказчика будут вам доступны после подачи заявки
10.03.2011

Разработка компонентов для работы с БД для Delphi 2009-XE

Необходимо разработать 3 компонента на основе DataAccess(dbExpress и MySQL) и AlphaSkins (http://www.alphaskins.com/). Очень желательно в дополнение к компонентам сделать рабочую демку.

Необходимые компоненты:

1) TsDBTreeView:

Дерево, хранящееся в БД. Наследник TsTreeView. Использует 1 БД - список разделов. Ее структура: id, id родителя, id фильтра, название раздела.

Полностью за исключением фильтрации реализован на форуме AlphaSkins(ссылка ниже). Элементы можно удалять и добавлять - изменения вносятся в БД. Каждый элемент дерева имеет фильтр. По задумке при выборе элемента дерева его фильтр должен отображаться в TsDBFilter, а список TsDBListView - наполняться значениями в соответствии с фильтром. У элемента с пустым фильтром должен быть один ImageIndex, у элемента с непустым - другой.

2) TsDBListView:

Список для отображения записей из БД. Наследник TsListView. Использует 2 БД - фильтр и список элементов. Структура БД элементов: id, поле1, поле2... Название поля БД хранится в колонке списка.

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

3) TsDBFilter:

Визуальный Компонент для редактирования фильтра для отображаемых записей из БД. Думаю, что так же наследник TsTreeView. Структуру БД нужно будет придумать. Скорее всего она будет похожей на древовидную структуру разделов.

Отображает фильтр для текущего выбранного в TsDBTreeView элемента. Текущий корневой элемент фильтра содержит отдельные элементы фильтра и группы элементов. Элемент фильтра - это тройка "название поля"-"условие"-"значение". Условия для фильтра бывают: равен, не равен, меньше Чем, меньше чем или равен, больше чем, больше чем или равен, содержит, не содержит, определен (не пустой), не определен (пустой). Считается, элементы фильтра в данной группе объединяются с условиями И, И НЕ, ИЛИ, ИЛИ НЕ. Должна быть возможность редактировать фильтр средствами Object Pascal. Фильтр должен выдавать строку SQL-кода, подставив которую вместо ... в запрос "SELECT * FROM table WHERE ..." - мы получим элементы в TsDBListView. Примерный вид, как хотелось бы видеть фильтр, показан на рисунке.

За основу код можно взять из компонентов JVCL (http://www.delphi-jedi.org/) и компонентов для работы с БД с форума AlphaSkins (http://www.alphaskins.com/forum/index.php?showtopic=3753 и http://www.alphaskins.com/forum/index.php?showtopic=4331).

Было бы замечательно всё реализовывать на основе компонентов TsListView и TsTreeView, у которых к каждому свойству Data у TTreeNode и у TListItem привязан управляющий объект, с которым так же можно работать.

Код должен быть автономен от неродных для Delphi пакетов кроме AlphaSkins.