Страница 22 из 24

Re: Глюки rxDBGrid

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

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

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

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

Изображение

Re: Глюки rxDBGrid

СообщениеДобавлено: 15.03.2018 12:48:50
alexs
Сделать можно в принципе
Вот я не понял - как там с сортировкой по двум столбцам?
Просто с Ctrl всё логично получилось - а вот без - не очень ещё понял.

Re: Глюки rxDBGrid

СообщениеДобавлено: 15.03.2018 12:57:12
zoltanleo
Нет, я имел ввиду по одному столбцу. По двум я показал для иллюстрации, что после одиночного нажатия без Ctrl сортировка начинается заново (или "обнуляется", если была)

Re: Глюки rxDBGrid

СообщениеДобавлено: 15.03.2018 16:52:21
alexs
Вопрос на миллион :-)
А что при выключении сортировки делать?
Буффер то уже отсортирован. Первоначальное состояние (после выборки с сервера) уже не восстановишь.
Просто стрелку убираем?

Re: Глюки rxDBGrid

СообщениеДобавлено: 15.03.2018 17:17:56
zoltanleo
У меня запрос динамически сортируется, поэтому вызывается без ORDER BY :D

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

Re: Глюки rxDBGrid

СообщениеДобавлено: 08.02.2019 02:52:29
BALI
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;

Re: Глюки rxDBGrid

СообщениеДобавлено: 11.02.2019 09:58:24
alexs
DisplayText не вернёт содержимое мемо поля

Re: Глюки rxDBGrid

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

Re: Глюки rxDBGrid

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

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

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

Re: Глюки rxDBGrid

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

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

Всем всего наилучшего.

Re: Глюки rxDBGrid

СообщениеДобавлено: 17.04.2019 22:14:30
Лекс Айрин
BezBorody, а обновить (repaint) не пробовал?

Re: Глюки rxDBGrid

СообщениеДобавлено: 17.04.2019 22:33:49
zoltanleo
BezBorody писал(а):Не знаю, глюк ли это RxDBGrid'а, но считаю, что следует сообщить "куда надо".

неплохо было бы аттачить воспроизводящий ошибку тестовый проект к сообщению, благо Лазарь позволяет это сделать легко и непринужденно. Я уж не говорю об анимашках :)

Re: Глюки rxDBGrid

СообщениеДобавлено: 17.04.2019 23:38:59
BezBorody
Лекс Айрин писал(а):BezBorody, а обновить (repaint) не пробовал?


Нет, перерисовка не помогает. Даже если грид "отцепить" от датасета (datasource := nil), а потом снова "прицепить", то строка всё равно появляется. Причем с TMemDataset и с TRxMemoryData этой проблемы нет.

Re: Глюки rxDBGrid

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

Re: Глюки rxDBGrid

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

Алексей, спасибо! Все прекрасно работает.