Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 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.006 c
1-6994
Glonia Zbanov
2002-05-17 11:18
2002.06.03
Как передать String в DLL?


6-7158
tovSuhov
2002-03-21 10:47
2002.06.03
gethostbyaddr возвращает ошибку...


6-7143
daos
2002-03-23 09:45
2002.06.03
Ошибка в сокете.


4-7272
Eugene "Jek" Efimochkin
2002-03-26 23:34
2002.06.03
Иконки в SysTray


7-7235
oblom
2002-03-05 15:08
2002.06.03
задание в универе





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский