Delphi. UniGUI. Делаем витрину (showcase) 2 часть

В прошлом посте мы сделали подготовочку. Структуру базы данных, определили основные сущности программы, создали под них таблицы в базе и модули в прекрасной IDE Delphi.

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

Общий вид витрины

90

Выделение товара

91

Добавление товара

94

Перелистнем на следующую страницу

93

Изменим размер формы – как видно товары перестроились в зависимости от новой ширины.

95

Исходники

379_unishowcase

Разберем немного кода

Структура базы данных

98

Загрузка элементов из базы данных

Следующий метод загружает данные из БД в оперативную память

Следующий метод распределяет отдельные фрэймы продуктов по общему фрэйму продуктов

Собственно распределение

Прячем нарисованные фрэймы

 

Перестроение элементов при изменении размеров главной формы

Добавление продукта

Код формы добавления продукта

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

То есть, после добавления продукта всегда открывается последняя страница.

Удаление продукта

Функция удаления в другом модуле

Что у нас происходит здесь? Сначала удаляем из базы. Затем удаляем из всех остальных структур в оперативной памяти. Ну и под конец открываем первую страницу.

Выводы

В целом все хорошо работает. Я бы в будущем, наверное ещё поработал над динамической загрузкой товаров, постраничной. А то сейчас получается грузятся все товары, что не есть хорошо.

This entry was posted in Delphi, Indy, UniGui, Без рубрики. Bookmark the permalink.