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