Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
 cxDBTreeList Scroll to Focused Node  [new]
Двоичник
Member

Откуда: Бобруйск
Сообщений: 311
Не могу сообразить, как показать узел в cxDBTreeList, на котором стоит фокус

перед UPDATE читаю параметры
       ID := TcxDBTreeListNode(cxDBTreeList.Selections[I]).KeyValue;


делаю апдейт записи в БД, затем переоткрываю основной ADOQuery для обновления отображаемых данных и код из FAQ:

  if cxDBTreeList.DataController.LocateByKey(ID) then
                cxDBTreeList.FocusedNode := cxDBTreeList.FindNodeByKeyValue(ID);
                if cxDBTreeList.FocusedNode <> nil then
                begin
                cxDBTreeList.FocusedNode.MakeVisible;
                end;


Но если я изменяю выбранный узел, который нашел в дереве по Scroll'у, иными словами в не видимой области дерева, и до него приходилось мотать, то при всем этом коде, на редактируемый Node фокус встанет, но он не отображается. А хотелось бы, чтобы скролл промотался вниз, чтобы пользователю отображался визуально тот Node, который сейчас Focused.

Помогите, пожалуйста.

Натыкался на
cxDBTreeList.TopVisibleNode := cxDBTreeList.Items[x].Items[y]

Но я не понял как получить x и y

Спасибо
18 ноя 20, 11:47    [22234454]     Ответить | Цитировать Сообщить модератору
 Re: cxDBTreeList Scroll to Focused Node  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 14759
procedure TreeLocateByKey(Tree: TcxDBTreeList; const vKey: Variant);
begin
  if VarIsNull(vKey) then exit;

  Tree.BeginUpdate;
  try
    if Tree.DataController.LocateByKey(vKey) then
    begin
      Tree.FocusedNode := Tree.FindNodeByKeyValue(vKey);
      if Assigned(Tree.FocusedNode) then
      begin
        Tree.FocusedNode.CheckState := cbsChecked;//отмечаем узел флажком
        Tree.FocusedNode.MakeVisible;
        Tree.TopVisibleNode := Tree.FocusedNode;
      end;
    end;
  finally
    Tree.EndUpdate;
  end;
end;


Сообщение было отредактировано: 18 ноя 20, 11:50
18 ноя 20, 11:55    [22234459]     Ответить | Цитировать Сообщить модератору
 Re: cxDBTreeList Scroll to Focused Node  [new]
Двоичник
Member

Откуда: Бобруйск
Сообщений: 311
X11,

var
v : variant;
begin
v := cxDBTreeList.FocusedNode.Values[cxDBTreeListID.ItemIndex];
...
UPDATE
...
qADO.Close;
qADO.Open;
TreeLocateByKey(cxDBTreeList, v);
...


Что не так? Оно так и не скролит на фокусную строку
18 ноя 20, 12:10    [22234468]     Ответить | Цитировать Сообщить модератору
 Re: cxDBTreeList Scroll to Focused Node  [new]
Двоичник
Member

Откуда: Бобруйск
Сообщений: 311
Очевидно я не понял что такое const vKey: Variant
18 ноя 20, 12:16    [22234475]     Ответить | Цитировать Сообщить модератору
 Re: cxDBTreeList Scroll to Focused Node  [new]
Двоичник
Member

Откуда: Бобруйск
Сообщений: 311
cxDBTreeList.TopVisibleNode := cxDBTreeList.FocusedNode;



Спасибо, получилось!
18 ноя 20, 12:18    [22234477]     Ответить | Цитировать Сообщить модератору
Все форумы / Delphi Ответить