Показать сообщение отдельно
  #25  
Старый 30.05.2024, 19:19
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,096
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Ну, с ошибкой синтаксиса понятно, я ж не помню точно какая там структура объекта, это надо в DevExpress лезть. По сути, там надо было просто получить кол-во элементов в св-ве Strigs объекта Node, просто проверяем что объект существует и доступен. Попробуй просто Node.Count (посмотри по подсказке, может св-во нвзывается ItemCount или как-то еще). Но это не важно, см дальше.

Собственно, если посмотришь на 10й (вроде) скрин, то ответ там уже есть. Код
Код:
        if Node = nil then
            Node := TdxDBGrid(Sender).TopVisibleNode;
Уже выполнился, а вот в переменной Node значение все-равно Nil.
Теперь вопрос - почему. В чем разница настройки гридов или компонентов доступа к БД, что в одном случае вызов TopVisibleNode что-то возвращает, а во втором случае - нет.

В принципе, можно сделать маленькую заглушку. Как я понимаю, данный код заполняет фильтр. А если нет данных, то и фильтровать нечего. Так что после получения Node просто проверяем еще раз на Nil и выходим. Как-то так:
Код:
        if Node = nil then
          begin
             Node := TdxDBGrid(Sender).TopVisibleNode;
             if Node = nil then exit;
          end;
Возможно, будет работать.
Ответить с цитированием