Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.11.04;
Скачать: CL | DM;

Вниз

Нарисовать разделитель в 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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.03 c
1-11269
Commodore
2002-10-23 11:47
2002.11.04
ListBox как элемент ActiveX


14-11478
vopros
2002-10-16 14:14
2002.11.04
Как звали ваших девушек?


1-11310
brestmarket
2002-10-23 18:30
2002.11.04
Как получить иконку определенного exe-файла?


1-11334
volph777
2002-10-24 11:55
2002.11.04
Как скопировать строку типа string в Clipboard?


7-11526
maxim2
2002-09-02 14:31
2002.11.04
В каком файле находится заставка при загрузке Windows