Глюки rxDBGrid

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

Re: Глюки rxDBGrid

Сообщение zoltanleo » 15.03.2018 11:13:12

ElectroGuard писал(а):Изначально там все ветки свёрнутые на верхнем уровне. Позже юзер разворачивает плюсиком ветку и появляется еще один уровень. Я так понимаю - что в этот момент и идёт вычитка набора.

гриду, как и дереву, на момент показа мастер-записей нужно будет знать, есть ли у мастера деталь-записи. Значит тебе придется хранить этот признак в базе. И менять его, например, в триггере в виде счетчика (добавляем/удаляем детальку - инкрементируем счетчик). имхо, об этом хорошо рассказано здесь. Это я к тому, что реализация твоей хотелки, КМК, сильно зависит от структуры твоей базы.

alexs писал(а):3 состояния - при нажатии мышки + ctrl

а можно сделать, как в EhGride, три состояния по одиночному клику без клавы?

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

Re: Глюки rxDBGrid

Сообщение alexs » 15.03.2018 12:48:50

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

Re: Глюки rxDBGrid

Сообщение zoltanleo » 15.03.2018 12:57:12

Нет, я имел ввиду по одному столбцу. По двум я показал для иллюстрации, что после одиночного нажатия без Ctrl сортировка начинается заново (или "обнуляется", если была)
Аватара пользователя
zoltanleo
постоялец
 
Сообщения: 458
Зарегистрирован: 17.10.2013 10:55:01

Re: Глюки rxDBGrid

Сообщение alexs » 15.03.2018 16:52:21

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

Re: Глюки rxDBGrid

Сообщение zoltanleo » 15.03.2018 17:17:56

У меня запрос динамически сортируется, поэтому вызывается без ORDER BY :D

Может позволять убирать значок сортировки, если не указан движок (или как он там правильно называется) для сортировки?
Аватара пользователя
zoltanleo
постоялец
 
Сообщения: 458
Зарегистрирован: 17.10.2013 10:55:01

Re: Глюки rxDBGrid

Сообщение BALI » 08.02.2019 02:52:29

alexs, мне кажется при поиске по текстовому полю нужно сравнивать Field.DispayText (в нем кодировка UTF8), а не Field.asString (в нем кодировка базы данных).
Я открыл DBF файл из кладр (кодовая страница 866), в гриде все по русски, поиск не работает, я слегка изменил DataSetLocateThrough в модуле rxDBTolls, поиск заработал и по полю даты тоже:
Код: Выделить всё
function CompareField(Field: TField; Value: Variant): Boolean;
  var
    S,S1: string;
   
  begin
    if (Field.DataType = ftString) or (loPartialKey in Options) then
    begin
      if loCaseInsensitive in Options then
      begin
        //S := UTF8UpperCase(Field.AsString);
        S := UTF8UpperCase(Field.DisplayText);
        S1:=UTF8UpperCase(Value);
      end
      else
      begin
        //S := Field.AsString;
        S := Field.DisplayText;
        S1:=Value;
      end;
BALI
новенький
 
Сообщения: 10
Зарегистрирован: 08.02.2019 02:28:29

Re: Глюки rxDBGrid

Сообщение alexs » 11.02.2019 09:58:24

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

Re: Глюки rxDBGrid

Сообщение BALI » 11.02.2019 16:06:11

DBGrid не лучший компонент для отображения Memo полей. Так хотя бы в в строках поиск будет работать.
Или сделать возможность сохранить кодовую страницу источника данных, и преобразовывать при сравнении
Код: Выделить всё
case CodePage of
        866:   s:= CP866ToUTF8(field.AsString);
        1251: s:= CP1251ToUTF8(field.AsString);
end;
BALI
новенький
 
Сообщения: 10
Зарегистрирован: 08.02.2019 02:28:29

Re: Глюки rxDBGrid

Сообщение alexs » 12.02.2019 11:15:24

BALI писал(а):DBGrid не лучший компонент для отображения Memo полей. Так хотя бы в в строках поиск будет работать.

Некоторые сервера (вернее компоненты доступа к данным) длинные строки отдают в виде MEMO
BALI писал(а):Или сделать возможность сохранить кодовую страницу источника данных, и преобразовывать при сравнении

А это я буду категорически против - перекодировкой должна заниматься клиентская библиотека сервера, на крайний случай - компонента доступа к данным. Для DBF - там, если мне не изменяет память, есть специальный метод и обработчик для перекодировки.
Просто на уровне бизнес кода твоего ПО должна быть единая кодировка - и для FPC/Lazarus это UTF8.
Перекодировка идёт на уровне ввода данных в ПО или вывода.
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4060
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: Глюки rxDBGrid

Сообщение BezBorody » 17.04.2019 19:15:35

Добрый день, форумчане.
Не знаю, глюк ли это RxDBGrid'а, но считаю, что следует сообщить "куда надо". :D
Итак:
1) Подключаю грид к TBufDataset.
2) Добавляю (Append + Post) и удаляю (Delete) записи в датасете.
3) При удалении последней записи происходит странное - в гриде строка не очищается.

Использовал транковые FPC, Lazarus, RxLib. С родным DbGrid такой беды нет.
Попробовал с FPC 3.0.4. Поначалу обрадовался - запись из грида "исчезла". Но дальнейшие опыты показали, что если в датасете есть лукап-поля, то после удаления последней записи очищаются все ячейки в гриде, кроме тех, что соответствуют лукап-полям.

Всем всего наилучшего.
BezBorody
незнакомец
 
Сообщения: 5
Зарегистрирован: 07.02.2019 18:19:21

Re: Глюки rxDBGrid

Сообщение Лекс Айрин » 17.04.2019 22:14:30

BezBorody, а обновить (repaint) не пробовал?
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: Глюки rxDBGrid

Сообщение zoltanleo » 17.04.2019 22:33:49

BezBorody писал(а):Не знаю, глюк ли это RxDBGrid'а, но считаю, что следует сообщить "куда надо".

неплохо было бы аттачить воспроизводящий ошибку тестовый проект к сообщению, благо Лазарь позволяет это сделать легко и непринужденно. Я уж не говорю об анимашках :)
Аватара пользователя
zoltanleo
постоялец
 
Сообщения: 458
Зарегистрирован: 17.10.2013 10:55:01

Re: Глюки rxDBGrid

Сообщение BezBorody » 17.04.2019 23:38:59

Лекс Айрин писал(а):BezBorody, а обновить (repaint) не пробовал?


Нет, перерисовка не помогает. Даже если грид "отцепить" от датасета (datasource := nil), а потом снова "прицепить", то строка всё равно появляется. Причем с TMemDataset и с TRxMemoryData этой проблемы нет.
Вложения
project1.zip
Пример проекта
(126.33 КБ) Скачиваний: 730
screen.gif
Гифка
BezBorody
незнакомец
 
Сообщения: 5
Зарегистрирован: 07.02.2019 18:19:21

Re: Глюки rxDBGrid

Сообщение alexs » 18.04.2019 12:49:02

На самом деле - это глюк поведения TBufDataset. И в стандартном DBGrid стоит костыль на обход этого. Добавил аналогичный костыль в RxDBGrid - смотри ревизию 6848.
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4060
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: Глюки rxDBGrid

Сообщение BezBorody » 18.04.2019 18:47:14

alexs писал(а):На самом деле - это глюк поведения TBufDataset. И в стандартном DBGrid стоит костыль на обход этого. Добавил аналогичный костыль в RxDBGrid - смотри ревизию 6848.

Алексей, спасибо! Все прекрасно работает.
BezBorody
незнакомец
 
Сообщения: 5
Зарегистрирован: 07.02.2019 18:19:21

Пред.След.

Вернуться в RxLib

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

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

Рейтинг@Mail.ru