Форум: "Базы";
Текущий архив: 2002.11.04;
Скачать: [xml.tar.bz2];
ВнизНарисовать разделитель в DBGrid Найти похожие ветки
← →
Юра (2002-10-16 14:23) [0]Есть табличка, Paradox+TTable+DBGridEh.
Хочется нарисовать разделитель (например горизонтальную линию) в строке таблицы, когда меняется монотонное значение записей. Например:
Сидоров
Сидоров
Сидоров
Сидоров
Петров
Петров
Петров
Вот в строке, где первый Петров должна быть в верхней части ячейки линия.
Как _нарисовать_ линию я знаю, никак не могу придумать, _когда_ ее рисовать.
← →
Max Zyuzin (2002-10-16 16:34) [1]Ну например.. запоминайте поле текущей записи (Сидоров, Петров), и если оно поменялось, что рисуем линию и запоменаем новое значение.... Возможно я не совсем понял вопрос и по этому ответ может быть немного "кривым"
← →
Dr. Well (2002-10-16 16:45) [2]Но такой выход не подходит по причине того, что когда пользователь клыпает мовзой по гриду рандомом, снова врабатывает onDrawCell и предыдущая ячейка запоминается относительно текущей... Таким образом, получается полное говно.
← →
Max Zyuzin (2002-10-16 16:54) [3]пользователь клыпает мовзой по гриду рандомом
:) Силен и могуч русский язык :) я даже с 3 раза не понял, о чем же реч :)
← →
Dr. Well (2002-10-16 17:05) [4]извините...
следует читать:
пользователь щелкает указателем манипулятора типа "мышь" в произвольном порядке, в результате чего нарушается последовательность текущих записей (в отличие от последовательности, в которой обрабатывает записи событие onDrawCell), что в свою очередь ведет к отрисовке горизонтальных линий не в нужных, а в тех самых "произвольных" позициях.
с уважением Dr. Well
← →
Юра (2002-10-16 18:38) [5]И какой же выход? Ввести в таблицу дополнительное булевское поле, которое будет равно ПРАВДА, если надо нарисовать линию и ЛОЖЬ в противном случае? Наверное, его еще можно сделать вычисляемым, если напрячься.
← →
MsGuns (2002-10-16 22:16) [6]Я в таких случаях пользоваоля событием TField OnGetText, где смотрел поле пред.записи и, если оно было чему-то там равно, писал вместо содержимого поля то, что мне надо было.
Но 2 недостатка.
1.Тормозит 2.Работает только когда НД в статусе "на бровях" (Browse)
← →
ЮЮ (2002-10-17 03:46) [7]А заглянуть в исходники DrawCell слабо? Особенно, где DataLink.ActiveRecord := ... Сам грид тоже вынужден перерисовывать ячейки не только текущей записи. Вот и посмотри как он это делает, не уходя с текущей записи. И тебе только придется посмотреть, совпадает ли значение в неком поле текущей записи с этим же полем в предыдущей. Если нет, то рисуем черту. Для первой строки грида этого мы сделать не сможем, но и "разделитель монотонности" в первой строке не нужен.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2002.11.04;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.009 c