Самодельный Грид

По ближе познакомившись с Гридом, понял, что он как был Browse – ом, так им и остался. Научился только занимать не все окно целиком. В свое время на FPD было огромное количество броузов собственной разработки, которые работали, как хотелось программисту, а не Б.Г. Здесь почему-то не встритил ни одного. Значит буду первым. Может кому и сгодиться на что. В движке присутствуют некоторые досовские приемы, довольно сложно перестроится. В частности класс не визуальный.

Самодельный Грид

Чего умеет:
-Перемещение клавишами по базе - вверх, вниз, home, end, pageup,pagedown.
-Перемещение мышкой по базе – вертикальный ScrollBar (по одной записи и страницами).
-Перемещение мышкой по базе – кликая на нужной строке.
-Инкриментальный поиск.Сбрасывает поисковую строку после ухода с найденой записи
-Контекстный поиск. Вхождение части слова в запись (SELECT - LIKE)
-Сортировки по любой колонке кликая мышкой на заголовке или клавишами влево, вправо.
-Красит цветом активный заголовок колонки
-Любой цвет букв и фона. У каждой колонки может быть свой цвет.
-В зависимости от условий может выделять цветом любую строку на экране
-Указатель текущей записи (курсор), выделяет всю запись целиком.
-Курсор в каждой колонке может иметь свой цвет.
-Понимает фильтры записей.

Чего не умеет:
-Быть визуальным классом (при желании может им стать)
-Не делает горизонтальный скроллинг (делать не собираюсь так как не вижу необходимости)
-Не умеет замораживать колонки
-Нет авто повтора при использовании горизонтального scrollbar мышью
-Печатать заголовок в 2 строки
-Устанавливать для заголовка каждой колонки свой шрифт(только один на все колонки)
-Редактировать записи прямо в таблице(можно научить немного изменив классы на основании которых создается таблица)
-Перемещение в базе клавишами проигрывает по скорости обычному гриду – Чем больше строк и колонок тем медленней работает. При инкриментальном поиске летает P2-333

Глюки :
-НЕНАВИДИТ пустую таблицу с удаленными записями. В одном месте используется RECCOUNT(), который не понимает удаленных записей
- Если количество записей меньше чем количество строк – то мышкой можно встать на несуществуюшие строки
-Не уходит “Focus” с клавиш навигации, поэтому при нажатии на Enter иногда получаются самонепроизвольные движения в базе(борюсь)

Как подключать:
Класс не визуальный – со всеми вытекающими
Прописывается в Init формы
В форме установить KeyPreview и KeyPress обрабатывать клавиши
Необходимые методы
Spis_info – Аналог AfrerRowColChange
Real_search - Управляет поиском
Необходимые свойства
Anseek - суда пишется что искать
Необходимые объекты
Sh_seek(textbox) - выводит в форму чего ищем

Не очень необходимые методы
One_step_zapr – Надо для контекстного поиска и запросов по сложному ключу

Edit_back - Управляет редактированием
Edit_cancel - -//-
Edit_in - -//-
Edit_save - -//-

Не очень необходимые свойства – нужны при редактировании записей
Data_change - Признак что изменились данные при редактировании
EditMode -Признак что находимся в режиме редактирования
New_record -Признак новой записи

Устроен:
Большая таблица из TextBox –ов помещенная в контейнер

Настройка:
В файле AnGrid.prg – собственно сам класс довольно подробно описаны значения свойств настройки
Задается:
-Количетство строк и колонок
-Высота строки и заголовка
-Название основной базы
Для каждой колонки свойства каждой колонки в массиве ColOp[колонка, свойство]
-Ширина колонки
-Источник данных
-класс на основании которого строится колонка
-цвета ячеек (в демо выделяются все записи где есть буква а)

Запуск Demo:
В проекте фаил Demo где надо прописать пути
-К базам
-Формам
-Программам
-Папке TMP
По умолчанию настроен на C:Demo

Автор: Andy

Автор публикации

не в сети 24 года

Andy

Комментарии: 0Публикации: 1Регистрация: 20-09-2000
Вложенные файлы
#
Название
Тип файла
Размер
1 348demo .zip 49,34 КБ
Материалы по теме
Оставить комментарий
//////////////// ///////////////
Авторизация
*
*
Генерация пароля