Глюки rxDBGrid

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

ronin
постоялец
Сообщения: 174
Зарегистрирован: 26.01.2010 23:14:46

Сообщение ronin »

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

Сообщение alexs »

Можешь тестовый пример?
Я как раз недавно (месяца 2 назад) подобную багу правил.
У меня нет такой проблемы.
ronin
постоялец
Сообщения: 174
Зарегистрирован: 26.01.2010 23:14:46

Сообщение ronin »

скачал вчерашнюю ночную сборку всё равно в RxDBGrid.pas приходится добавлять проверку на F.IsNull в функции function TRxColumnFooter.ErrorTestValue: boolean;
вот в этом месте:

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

      begin
        case FValueType of
          fvtSum:
            if F.DataSet.RecordCount = 0 then
            begin
{              if not F.IsNull then
                FTestValue := FTestValue - F.AsFloat;}
              { TODO -oalexs : need rewrite this code - where difficult! }
            end
            else
            begin
              if not F.IsNull then begin     //добавленная проверка
                if F.OldValue <> null then
                  FTestValue := FTestValue + Float(F.OldValue);
                if not F.IsNull then
                  FTestValue := FTestValue - F.AsFloat;
              end;
            end;
          fvtMax:
            if (F.DataSet.RecordCount <> 0) and (F.OldValue <> null) then
              FTestValue := Max(FTestValue, Float(F.OldValue));
          fvtMin:
            if (F.DataSet.RecordCount <> 0) and (F.OldValue <> null) then
              FTestValue := Min(FTestValue, Float(F.OldValue));
        end;
      end;


иначе ловлю исключение Index out of bound при добавлении строки в таблицу и включённом футере

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

Сообщение alexs »

Внес изменения. Немного переработал.
А какой набор данных используется?
На мой взгляд - тут либо глюк DB, либо глюк набора данных.
ronin
постоялец
Сообщения: 174
Зарегистрирован: 26.01.2010 23:14:46

Сообщение ronin »

zeos из trunk

после того как добавил проверку глюк пропал, так что я думаю это всё таки грид :)
ronin
постоялец
Сообщения: 174
Зарегистрирован: 26.01.2010 23:14:46

Сообщение ronin »

порыл тут на форуме, вроде таких тем не видел, обнаружил странное поведение грида при отрисовке двухуровненвых шапок, при наведении на них мышкой
глюк не наблюдается при классической теме, проверял на стандартной ХР теме, на 7ке не смотрел

Изображение

на скрине показано как отображается шапка при наведении мышкой, под курсором пропадает текст и меняется цвет шапки

p.s. проверял на двух разных компах на ХР, titlestyle пробовал все варианты, не помогло

Добавлено спустя 6 минут 52 секунды:
да, насчёт пересчёта итогов забыл сказать что это не баг, это фича такая наверное :) я же выше писал почему так происходит, буду думать как исправить

Добавлено спустя 2 минуты 59 секунд:
вот из-за чего так происходит

Но в последних комитах я убрал из TRxDBGrid.UpdateActive пересчёт итогов. Сейчас этот метод грида изменяется на каждое изменение положения курсора в наборе данных. Получается лишние вызовы и глюки при движению по гриду, содержимое которого превышает размер самого грида.
Ещё не придумал как обойти...


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

Сообщение alexs »

1. Есть такой глюк в винде. Не доходт руки поправить. Там надо переделать логику отрисовки шапки грида.
2. Можно пример с дочерним гридом?
xcod
постоялец
Сообщения: 108
Зарегистрирован: 07.08.2009 12:37:23

Сообщение xcod »

Вопрос не по глюку :D но создавать тему отдельную нехочеца :D
в футер вывожу кол-во строк(fvtCount) и сумму (fvtSum)
как мне их вернуть в мою переменную, для своих дальнейших действий?
Аватара пользователя
alexs
долгожитель
Сообщения: 4066
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

Сообщение alexs »


Sum2:=RxDBGrid8.ColumnByFieldName('sum_delta').Footer.NumericValue;
ronin
постоялец
Сообщения: 174
Зарегистрирован: 26.01.2010 23:14:46

Сообщение ronin »

1. как можно посодействовать?
2. постараюсь смастерить
Аватара пользователя
alexs
долгожитель
Сообщения: 4066
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

Сообщение alexs »

ronin писал(а):1. как можно посодействовать?

СТандартно грид вызывает отрисовку только для тех ячеек, которые надо перерисовать.
Когда имеем объединение ячеек заголовка - рисуется только первая ячейка из серии объединённых. И она же расширяется на всю серию. Поэтому и происходит порча заголовка при перекрытии последющих (не первых) ячеек.
Мысли крутятся насчёт принудительной отрисовки в это случаее первой ячейки. Но это надо оформить.
В GTK2 такое не наблюдается - поэтому не занимаюсь вплотную.
2. Жду.
xcod
постоялец
Сообщения: 108
Зарегистрирован: 07.08.2009 12:37:23

Сообщение xcod »

alexs писал(а):
Sum2:=RxDBGrid8.ColumnByFieldName('sum_delta').Footer.NumericValue;

спасибо большое :)
vicvala
новенький
Сообщения: 27
Зарегистрирован: 11.06.2011 17:55:25

Сообщение vicvala »

alexs
скачал из svn RxLib, поставил на Lazarus 1.1 FPC 2.7.1 (38476) Win7 32bit, footer не работает (не суммирует) в части fvtSum, а вот fvtCount - работает! Шрифт в footer то белый, то чёрный, понять не могу от чего зависит?! У кого-нибудь footer в части fvtSum работает?
Аватара пользователя
alexs
долгожитель
Сообщения: 4066
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

Сообщение alexs »

у меня работает без замечаний
vicvala
новенький
Сообщения: 27
Зарегистрирован: 11.06.2011 17:55:25

Сообщение vicvala »

alexs посмотрите >>> на досуге! Count работает, Sum нет. Раньше работало. Если одна таблица, то суммирует нормально, если связь мастер-детали нет.
Ответить