Глюки rxDBGrid

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

Re: Глюки rxDBGrid

Сообщение alexs » 29.05.2019 09:13:51

dedrasta писал(а):Для просмотра файла использую MS Excel

А что там в качестве формулы ставиться? Я в LO тестирую. Там нормально.
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4060
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: Глюки rxDBGrid

Сообщение dedrasta » 31.05.2019 12:24:28

alexs писал(а):
dedrasta писал(а):Для просмотра файла использую MS Excel

А что там в качестве формулы ставиться? Я в LO тестирую. Там нормально.

Если помечен чекбокс "Export footer formula", то пусто. Если сброшен - то соответствующее число.
Видимо, Excel не воспринимает формулы из файла .ods
dedrasta
незнакомец
 
Сообщения: 7
Зарегистрирован: 20.05.2019 14:26:04

Re: Глюки rxDBGrid

Сообщение alexs » 31.05.2019 15:10:38

Проверил Excel 2003 файл xls - формула есть
dedrasta писал(а):Видимо, Excel не воспринимает формулы из файла .ods

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

Re: Глюки rxDBGrid

Сообщение YaroslavSh » 03.07.2019 00:18:36

Добрый день. Подскажите, пожалуйста, два момента по RxDBGrid.
1) При прокрутке скрола в компоненте справа на лево, если не очень быстро, выделенная строка становится с черточками.
123.jpg

2) Замороженные колонки выделяются, как заголовок колонок и пропадает в этих колонках footer строка, пропадает заголовок и возможность изменить ширину колонки,
222.jpg

нельзя ли как в delphi 7, замороженную колонку отделить тоненькой чертой?
333.jpg
YaroslavSh
новенький
 
Сообщения: 26
Зарегистрирован: 21.07.2010 08:09:41

Re: Глюки rxDBGrid

Сообщение alexs » 03.07.2019 09:13:44

1. Можно пример?
2 и 3 - нормального функционала с фиксированными колонками ещё нет. Если ожидать функционал в стиле EhLib - надо дописывать.
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4060
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: Глюки rxDBGrid

Сообщение YaroslavSh » 03.07.2019 23:07:50

alexs писал(а):1. Можно пример?

primer.zip
(65.5 КБ) Скачиваний: 817

Если плавно с право на лево перевести скролл.
sqlite3.dll - не крепится слишком большой.
YaroslavSh
новенький
 
Сообщения: 26
Зарегистрирован: 21.07.2010 08:09:41

Re: Глюки rxDBGrid

Сообщение alexs » 04.07.2019 10:11:59

Проблема наблюдается при хитрых условиях:
в опциях включены dgThumbTracking и dgRowSelect - как временное решение можно просто пока выключить эти флаги.

Проблема находится в штатном DBGrid и даже в StringGrid (хотя тут не так ярко выражена).
Напиши в багтрекер лазаря. Что-то там с событиями прорисовки и скролинга напутали.
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4060
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: Глюки rxDBGrid

Сообщение YaroslavSh » 13.06.2020 01:46:28

alexs писал(а):Проблема наблюдается при хитрых условиях:
в опциях включены dgThumbTracking и dgRowSelect - как временное решение можно просто пока выключить эти флаги.

Проблема находится в штатном DBGrid и даже в StringGrid (хотя тут не так ярко выражена).
Напиши в багтрекер лазаря. Что-то там с событиями прорисовки и скролинга напутали.


Написал в багтрекер, прошел год, ни чего не изменилось, НО случайным образом понял, что при включении свойства flat, глюк с прорисовкой исчезает.
YaroslavSh
новенький
 
Сообщения: 26
Зарегистрирован: 21.07.2010 08:09:41

Re: Глюки rxDBGrid

Сообщение V@S » 20.08.2020 15:33:47

Добрый день.
Делаю свою отрисовку в гриде, по факту нужно по-своему отрисовать один столбец.
Если отрисовку одного столбца делать у грида в событии OnDrawColumnCell, то на остальных при использовании DefaultDrawColumnCell почему-то пропадает реакция на свойство Aligment колонки, все рисуется с центровкой по левому краю.
Если использовать событие колонки OnDrawCollumnCell, то DataCol передается на 1 больше, чем положено.
Код: Выделить всё
procedure TForm.DBGrRxDrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
  Memo1.Lines.Add('1. DBGrRxDrawColumnCell -> ' +
      'Datacol: ' + IntToStr(DataCol) +
      ' Column.FieldName: ' + Column.FieldName +
      ' Column.Index: ' + IntToStr(Column.Index)); 

В Memo1 имеем
1. DBGrRxDrawColumnCell -> Datacol: 2 Column.FieldName: fullname Column.Index: 2


Код: Выделить всё
procedure TNomenclatureForm.DBGrRxColumns1DrawColumnCell(
  Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn;
  State: TGridDrawState);
begin
  Memo1.Lines.Add('2. DBGrRxColumns1DrawColumnCell -> ' +
      'Datacol: ' + IntToStr(DataCol) +
      ' Column.FieldName: ' + Column.FieldName +
      ' Column.Index: ' + IntToStr(Column.Index));   

2. DBGrRxColumns1DrawColumnCell -> Datacol: 3 Column.FieldName: fullname Column.Index: 2

Глюк или так и должно быть. Отрисовка при использовании события колонки естественно происходит неправильно, если тип следующего столбца выставлен как CheckBox, то вместо текста в этой колонке рисуются чекбоксы :(
P.S. При отключенной опции dgIndicator все работает нормально.
Аватара пользователя
V@S
новенький
 
Сообщения: 19
Зарегистрирован: 31.03.2008 10:23:20

Re: Глюки rxDBGrid

Сообщение alexs » 20.08.2020 15:51:35

1. Проверю
2. Так и должно быть. Индикатор на самом деле - это первая колонка. И это штное поведение - стандартные гриды так же себя поведут. Просто необходимо это учитывать.
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4060
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: Глюки rxDBGrid

Сообщение V@S » 20.08.2020 16:10:05

Странно. На стандартных не проверял, но не логично.
Тот же индикатор должен тогда учитываться и при вызове события OnDrawColumnCell для всего грида, а не учитывается видимо.
Аватара пользователя
V@S
новенький
 
Сообщения: 19
Зарегистрирован: 31.03.2008 10:23:20

Re: Глюки rxDBGrid

Сообщение alexs » 20.08.2020 16:12:24

V@S писал(а):Делаю свою отрисовку в гриде, по факту нужно по-своему отрисовать один столбец.

Можно пример?
Повторить не могу - нормально выравнивание срабатывает.

Добавлено спустя 6 минут 46 секунд:
V@S писал(а):Тот же индикатор должен тогда учитываться и при вызове события OnDrawColumnCell для всего грида, а не учитывается видимо.

Вот вызов для отрисовки
Код: Выделить всё
  if Assigned(OnDrawColumnCell) and not (CsDesigning in ComponentState) then
  begin
    DataCol := ColumnIndexFromGridColumn(aCol);
    if not Assigned(C) then
      C:=TRxColumn(ColumnFromGridColumn(aCol));
    OnDrawColumnCell(Self, aRect, DataCol, C, aState)
  end


Номер колонки - стандартная функция ColumnIndexFromGridColumn.
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4060
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: Глюки rxDBGrid

Сообщение V@S » 20.08.2020 17:55:10

alexs писал(а):Можно пример?
Повторить не могу - нормально выравнивание срабатывает.

О блин, создал пустой проект для примера. А в нем тоже не воспроизводится. Буду копать основной проект :?

alexs писал(а):Номер колонки - стандартная функция ColumnIndexFromGridColumn.

Я по исходникам смотрел и не понял. Вроде как стандартная, но Datacol разный получается при прорисовке колонок из события OnDrawColumnCell грида и непосредственно колонки.
Даже вот такой костыль прописал в коде для колонки:
Код: Выделить всё
  aCol := DataCol;
  if (dgIndicator in TRxDBGrid(Sender).Options) then
    dec(aCol);
  TRxDBGrid(Sender).DefaultDrawColumnCell(Rect, aCol, Column, State);


Добавлено спустя 33 минуты 15 секунд:
V@S писал(а):О блин, создал пустой проект для примера. А в нем тоже не воспроизводится. Буду копать основной проект

Нашел. Пропустил, что в проекте ставил свойство DefaultDrawing в false.
Аватара пользователя
V@S
новенький
 
Сообщения: 19
Зарегистрирован: 31.03.2008 10:23:20

Re: Глюки rxDBGrid

Сообщение alexs » 21.08.2020 09:12:46

V@S писал(а):Даже вот такой костыль прописал в коде для колонки:

Это не костыль - это правильный код.
Индикатор в потрохах грида - это тоже колонка.
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4060
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: Глюки rxDBGrid

Сообщение V@S » 21.08.2020 10:07:15

alexs писал(а):Индикатор в потрохах грида - это тоже колонка.

Почему тогда индикатор не учитывается при вызове прорисовки из события OnDrawColumnCell для грида?

Я же верху привел лог, что если использовать событие OnDrawColumnCell грида, то DataCol передается = 2 для нужной колонки, а если использовать OnDrawColumnCell колонки, то DataCol в нее передается на 1 больше. На скрине видна неправильная отрисовка, особенно если следующая колонка cbsCheckboxColumn
Может только у меня такое поведение таблицы :roll:
Вложения
testgrid.JPG
Скрин
TestRxDBgrid.zip
Тестовый проект
(127.74 КБ) Скачиваний: 598
Аватара пользователя
V@S
новенький
 
Сообщения: 19
Зарегистрирован: 31.03.2008 10:23:20

Пред.След.

Вернуться в RxLib

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 16

Рейтинг@Mail.ru