Глюки rxDBGrid
Модераторы: alexs, Модераторы
-
YaroslavSh
- новенький
- Сообщения: 26
- Зарегистрирован: 21.07.2010 08:09:41
Всем добрый день.
Возникла проблема при использовании Footer с базой на Firebird 2.5 в RxDBGrid при включенном fvtSum. Подключение через IBConnection. При отображении двух и более строк все нормально суммируется, но когда остается одна строка сразу вылетает ошибка. С базой на SQLlite3 суммировалось нормально.
Возникла проблема при использовании Footer с базой на Firebird 2.5 в RxDBGrid при включенном fvtSum. Подключение через IBConnection. При отображении двух и более строк все нормально суммируется, но когда остается одна строка сразу вылетает ошибка. С базой на SQLlite3 суммировалось нормально.
-
YaroslavSh
- новенький
- Сообщения: 26
- Зарегистрирован: 21.07.2010 08:09:41
-
YaroslavSh
- новенький
- Сообщения: 26
- Зарегистрирован: 21.07.2010 08:09:41
Странно.
Пользовался 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
Сборки, как у Вас не нашел.
Пользовался 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
Сборки, как у Вас не нашел.
-
YaroslavSh
- новенький
- Сообщения: 26
- Зарегистрирован: 21.07.2010 08:09:41
Я rx ставил из сетевого диспетчера пакетов, думал, что он имеет всегда самую свежую версию компонента. Удалил сетевой, поставил lazarus-ccr-svn-r7986. И ошибка пропала. Спасибо большое Алексей.
Леш, привет.
Если в гриде выставить опцию dgDisplayMemoryText в True, то у многострочного текста строки "склеиваются" без пробелов(разделителей) между ними (на скринах для сравнения верхний - в гриде, нижний - в оригинале).
Можно что-то подправить? Может свойство запилить, определяющее разделитель?
Если в гриде выставить опцию dgDisplayMemoryText в True, то у многострочного текста строки "склеиваются" без пробелов(разделителей) между ними (на скринах для сравнения верхний - в гриде, нижний - в оригинале).
Можно что-то подправить? Может свойство запилить, определяющее разделитель?
- Вложения
-
- Scr_238.png (995 байт) 27407 просмотров
-
- Scr_239.png (1.89 КБ) 27407 просмотров
alexs писал(а):Надо посмотреть конечно.
На мой взгляд - для отображения - любой не печатный символ просто заменять пробелом.
Приложение кроссплатформенное, перевод строки в линуксе будет #13, на маке #10, на винде оба. Хлопотно будет делать это вручную в каждом гриде в OnGetText
Наверное, лучше все таки в сорцах поковыряться
- alexs
- долгожитель
- Сообщения: 4066
- Зарегистрирован: 15.05.2005 23:17:07
- Откуда: г.Ставрополь
- Контактная информация:
Посмотри ревизию 8195.
В rx.inc добавил дерективу RDBGridDisplayMemoText_ClearSC. По умолчанию выключена.
При включении перед отображаением строки выполняется дополнительный проход
Добавлено спустя 1 минуту 51 секунду:
Это что быстро смог придумать. Работает только на отображении.
По хорошему надо для RxDBGrid переопределять редктор MEMO полей - там сейчас штатный, на основе TEdit-а. А нужно что-то на основе TMemo.
В 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.
Спасибо, гляну завтра
alexs писал(а):Посмотри ревизию 8195.
Леш, спасибо. Все здорово. При растяжении столбца пробелы вместо переносов, в хинте memo-форматирование сохраняется.
зы. только что обнаружил, что косяк-то я нашел в стандартном гриде, а не в твоем. Теперь, у тебя он пофикшен, а в стандартном - нет о_О
- Вложения
-
- Scr_243.png (3.63 КБ) 27312 просмотров
-
- Scr_242.png (3.6 КБ) 27312 просмотров
Коллеги, день добрый! Имеем очень странный глюк, который давно уже не могу побороть. А именно, в какой-то момент времени, весьма произвольный, грид перестает визуально быть синхронным с датасетом. Показывает не то, где реально спозиционирован курсор датасета. При просто движении мыши по гриду - перерисовывается тем, что реально должно быть показано. Repaint не помогает. Refresh тоже. Грешу, конечно, на множественные условия раскраски гирда, но отказаться от нее не могу, ибо инструмент чисто наш внутренний для сравнения и обновления баз данных, коих у нас под две сотни. И визуально видеть, как они сравнились/обновились нужно.
P.S. WinSrv 2012R2 x64, Lazarus 3.6, FPC 3.2.2, хотя проблема и не в нем. На предыдущих было точно так же.
P.P.S. В линуксе (Debian12) работает нормально. Lazarus 4.0 RC3.
UPD: Еще обратил внимание, что при движении курсора мыши пропадают заголовки столбцов. А там объединение. Убрал его - и все нормализовалось. Вот такая история. Странно, что под линуксом такое не наблюдается. Все же, видимо, это глюки смой винды.
UPD2: Рано радовался.
Глюк не исчез.
P.S. WinSrv 2012R2 x64, Lazarus 3.6, FPC 3.2.2, хотя проблема и не в нем. На предыдущих было точно так же.
P.P.S. В линуксе (Debian12) работает нормально. Lazarus 4.0 RC3.
UPD: Еще обратил внимание, что при движении курсора мыши пропадают заголовки столбцов. А там объединение. Убрал его - и все нормализовалось. Вот такая история. Странно, что под линуксом такое не наблюдается. Все же, видимо, это глюки смой винды.
UPD2: Рано радовался.
