Форум: "Потрепаться";
Текущий архив: 2002.06.03;
Скачать: [xml.tar.bz2];
ВнизСуперсложная задачка для мастеров! Найти похожие ветки
← →
lipskiy (2002-04-23 12:18) [0]Есть компонент, бесплатный, очень навороченный, весь ипещрен комментариями по-русски. Необходимо его модифицировать, просто до зарезу необходимо. Разработчик ответил только раз и замолк. Больше до него не достучаться. Пытался модифицировать сам - только все поломал. Если у кого есть свободное время и желание решить довольно сложную задачу - буду благодарен!
Вот, собственно, задача.
На сайте всем известного Акжана лежит компонент GridView:
http://akzhan.midi.ru/devcorner/devcorner-home-rus.html
Это таблица. Таблица очень умная, аналогов я не видел. Основная ее фишка - она не хранит данные внутри себя и вообще почти ничего не знает о массиве данных. Все данные берет снаружи только в момент отрисовки. Ну очень удобно! Огромное число событий, практически все методы лего перекрываются без написания наследника. Огромное число возможностей по разукраске интерфейса таблицы.
Проблема следующая.
На приведенной странице указано:
HЕ ПОДДЕРЖИВАЕТСЯ:
- изменение высоты строк, разная высота строк;
....
ВОТ ЗДЕСЬ И ЗАСАДА!!!
Мне это просто жизненно необходимо!
То есть многострочный текст в ячейках поддерживается, а вот разная высота строк - нет. А у меня данные таковы, что в одной строке может быть только одно слово или число, а в другой - целое описание!
Кого заинтересует - могу выслать или здесь привести первое (и последнее) письмо разработчика, где он говорит, что сделать это возможно, хотя и весьма сложно, и подсказывает где и что надо крутить.
← →
Alexandr (2002-04-26 07:34) [1]ладно, щас попробуем посмотреть...
← →
Alexandr (2002-04-26 07:49) [2]ну письмо приведи здесь.
А чего, он не отвечает? Он не поддерживает более его, или просто ему некогда?
← →
Johnmen (2002-04-26 09:29) [3]>...Основная ее фишка - она не хранит данные внутри себя...
Таки и обычный дебегрид ничего не хранит "внутри себя"... :)))
← →
lipskiy (2002-04-26 11:32) [4]Письмо приведу... сегодня вечером (дома оно).
Помню только основную мысль - надо подправить везде, где идет ссылка на HeightRow (или RowHeight). И там вроде так выходит, что высоты строк придется хранить в отдельном массиве, но мне и это подходит.
Не отвечает - фиг его знает. Последний раз говорил, что поддержку не закончил, но времени у него нет и когда будут апдейты - неизвестно.
ДБГрид - это БД-ориентированная таблица, а этот грид обычный. Ну, может я чего и не понимаю - с в БД полный ноль.
← →
lipskiy (2002-04-26 21:59) [5]Вот обещанное письмо разработчика:
Причины, из-за которой не поддерживается разная высота строк:
- Grid знает только количество строк, но не хранит их высоты (так же как и
не хранит признак выделения).
- Многие функции, например, определение прямоугольника строки, для ускорения
работы сделаны так:
Rect.Top := Row * Rows.Height
Если хранить высоты строк, то теряется весь смысл GridView - только отображение,
но не хранение. Можно спрашивать пользователя (т.е. в событии) высоту строк, но
тогда представь, что надо вычислить смещение 10000-й строки относительно первой
- будет очень долго. Хотя в принципе это выход, но тогда надо в корне менять
подход к определению координат строк.
Подправить надо везде, где встечается ссылка на Rows.Height. Так, где Rows.Height
используется для определения нажней границы строки спрашивать высоту в событии.
Там, где высота используется для определения количества чего-либо, умещающегося на
видимой части (например, количество строк или полосок грида), надо поменять принцип
расчета. В методы перерисовки строк и аналогичные им надо вставить проверки, типа
если просят обновить с 1 по 1000 строку, а видны только с 500 по 520, то обновлять
только видимые и т.п.
Можно, как я уже сказал, добавить условия на видимотсь строк и спрашивать высоту в
событии. Но на это пока нет времени.
Страницы: 1 вся ветка
Форум: "Потрепаться";
Текущий архив: 2002.06.03;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.009 c