Глюки rxDBGrid

Модераторы: alexs, Модераторы

YaroslavSh
новенький
Сообщения: 26
Зарегистрирован: 21.07.2010 08:09:41

Сообщение YaroslavSh »

Всем добрый день.
Возникла проблема при использовании Footer с базой на Firebird 2.5 в RxDBGrid при включенном fvtSum. Подключение через IBConnection. При отображении двух и более строк все нормально суммируется, но когда остается одна строка сразу вылетает ошибка. С базой на SQLlite3 суммировалось нормально.
Аватара пользователя
alexs
долгожитель
Сообщения: 4066
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

Сообщение alexs »

Пример можно?
YaroslavSh
новенький
Сообщения: 26
Зарегистрирован: 21.07.2010 08:09:41

Сообщение YaroslavSh »

alexs писал(а):Пример можно?
Вложения
Primer.zip
(194.55 КБ) 969 скачиваний
Аватара пользователя
alexs
долгожитель
Сообщения: 4066
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

Сообщение alexs »

Не могу повторить
Проверял на 2.5 в винде, на 3.0 в линухе - всё норм.

Lazarus 2.1.0 r64894M FPC 3.3.1 i386-win32-win32/win64

Lazarus 2.1.0 r64894M FPC 3.3.1 x86_64-linux-gtk2
YaroslavSh
новенький
Сообщения: 26
Зарегистрирован: 21.07.2010 08:09:41

Сообщение YaroslavSh »

Странно.
Пользовался Lazarus 2.0.10 63526 FPC 3.2.0 - ошибка.
Поставил Lazarus 2.0.12 64642 FPC 3.2.0 - ошибка.
Затем поставил lazarus-2.1.0-62815-fpc-3.2.0rc1-44237-win32 та же ошибка.
Проверял на win10x64, win7x64.
Firebird-2.5.9.27139_0_Win32
Сборки, как у Вас не нашел.
Аватара пользователя
alexs
долгожитель
Сообщения: 4066
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

Сообщение alexs »

У меня текущее - из текущих исходников.
Но тут не должно это влиять.
Какая версия Rx? Текущая из SVN?
В каком именно месте вываливается ошибка - что показывает отладчик?
YaroslavSh
новенький
Сообщения: 26
Зарегистрирован: 21.07.2010 08:09:41

Сообщение YaroslavSh »

Я rx ставил из сетевого диспетчера пакетов, думал, что он имеет всегда самую свежую версию компонента. Удалил сетевой, поставил lazarus-ccr-svn-r7986. И ошибка пропала. Спасибо большое Алексей.
Аватара пользователя
alexs
долгожитель
Сообщения: 4066
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

Сообщение alexs »

YaroslavSh писал(а):из сетевого диспетчера пакетов, думал, что он имеет всегда самую свежую версию компонента

Это не так - я там не управляю...
Аватара пользователя
zoltanleo
постоялец
Сообщения: 459
Зарегистрирован: 17.10.2013 10:55:01

Сообщение zoltanleo »

Леш, привет.

Если в гриде выставить опцию dgDisplayMemoryText в True, то у многострочного текста строки "склеиваются" без пробелов(разделителей) между ними (на скринах для сравнения верхний - в гриде, нижний - в оригинале).

Можно что-то подправить? Может свойство запилить, определяющее разделитель?
Вложения
Scr_238.png
Scr_238.png (995 байт) 27407 просмотров
Scr_239.png
Scr_239.png (1.89 КБ) 27407 просмотров
Аватара пользователя
alexs
долгожитель
Сообщения: 4066
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

Сообщение alexs »

Надо посмотреть конечно.
На мой взгляд - для отображения - любой не печатный символ просто заменять пробелом.
Аватара пользователя
zoltanleo
постоялец
Сообщения: 459
Зарегистрирован: 17.10.2013 10:55:01

Сообщение zoltanleo »

alexs писал(а):Надо посмотреть конечно.
На мой взгляд - для отображения - любой не печатный символ просто заменять пробелом.

Приложение кроссплатформенное, перевод строки в линуксе будет #13, на маке #10, на винде оба. Хлопотно будет делать это вручную в каждом гриде в OnGetText ;)

Наверное, лучше все таки в сорцах поковыряться
Аватара пользователя
alexs
долгожитель
Сообщения: 4066
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

Сообщение alexs »

Посмотри ревизию 8195.
В rx.inc добавил дерективу RDBGridDisplayMemoText_ClearSC. По умолчанию выключена.
При включении перед отображаением строки выполняется дополнительный проход

Код: Выделить всё

function TRxDBGrid.GetFieldDisplayText(AField: TField; ACollumn: TRxColumn
....
        {$IFDEF RDBGridDisplayMemoText_ClearSC}
        for i:=1 to Length(Result) do
          if Result[i] < ' ' then
            Result[i]:=' ';
        {$ENDIF}


Добавлено спустя 1 минуту 51 секунду:
Это что быстро смог придумать. Работает только на отображении.
По хорошему надо для RxDBGrid переопределять редктор MEMO полей - там сейчас штатный, на основе TEdit-а. А нужно что-то на основе TMemo.
Аватара пользователя
zoltanleo
постоялец
Сообщения: 459
Зарегистрирован: 17.10.2013 10:55:01

Сообщение zoltanleo »

Спасибо, гляну завтра
Аватара пользователя
zoltanleo
постоялец
Сообщения: 459
Зарегистрирован: 17.10.2013 10:55:01

Сообщение zoltanleo »

alexs писал(а):Посмотри ревизию 8195.

Леш, спасибо. Все здорово. При растяжении столбца пробелы вместо переносов, в хинте memo-форматирование сохраняется.

зы. только что обнаружил, что косяк-то я нашел в стандартном гриде, а не в твоем. Теперь, у тебя он пофикшен, а в стандартном - нет о_О
Вложения
Scr_243.png
Scr_243.png (3.63 КБ) 27312 просмотров
Scr_242.png
Scr_242.png (3.6 КБ) 27312 просмотров
Lucifer
постоялец
Сообщения: 132
Зарегистрирован: 05.01.2014 21:39:03
Откуда: Новороссийск

Сообщение Lucifer »

Коллеги, день добрый! Имеем очень странный глюк, который давно уже не могу побороть. А именно, в какой-то момент времени, весьма произвольный, грид перестает визуально быть синхронным с датасетом. Показывает не то, где реально спозиционирован курсор датасета. При просто движении мыши по гриду - перерисовывается тем, что реально должно быть показано. Repaint не помогает. Refresh тоже. Грешу, конечно, на множественные условия раскраски гирда, но отказаться от нее не могу, ибо инструмент чисто наш внутренний для сравнения и обновления баз данных, коих у нас под две сотни. И визуально видеть, как они сравнились/обновились нужно.

P.S. WinSrv 2012R2 x64, Lazarus 3.6, FPC 3.2.2, хотя проблема и не в нем. На предыдущих было точно так же.
P.P.S. В линуксе (Debian12) работает нормально. Lazarus 4.0 RC3.

UPD: Еще обратил внимание, что при движении курсора мыши пропадают заголовки столбцов. А там объединение. Убрал его - и все нормализовалось. Вот такая история. Странно, что под линуксом такое не наблюдается. Все же, видимо, это глюки смой винды.

UPD2: Рано радовался. :-( Глюк не исчез.
Ответить