Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / cxDBTreeList Scroll to Focused Node / 5 сообщений из 5, страница 1 из 1
18.11.2020, 11:47
    #40019861
Двоичник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cxDBTreeList Scroll to Focused Node
Не могу сообразить, как показать узел в cxDBTreeList , на котором стоит фокус

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



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

Код: pascal
1.
2.
3.
4.
5.
6.
  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.

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

Натыкался на
Код: pascal
1.
cxDBTreeList.TopVisibleNode := cxDBTreeList.Items[x].Items[y]


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

Спасибо
...
Рейтинг: 0 / 0
18.11.2020, 11:55
    #40019862
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cxDBTreeList Scroll to Focused Node
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
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;
...
Рейтинг: 0 / 0
18.11.2020, 12:10
    #40019867
Двоичник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cxDBTreeList Scroll to Focused Node
X11 ,

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
var
v : variant;
begin
v := cxDBTreeList.FocusedNode.Values[cxDBTreeListID.ItemIndex];
...
UPDATE
...
qADO.Close;
qADO.Open;
TreeLocateByKey(cxDBTreeList, v);
...



Что не так? Оно так и не скролит на фокусную строку
...
Рейтинг: 0 / 0
18.11.2020, 12:16
    #40019871
Двоичник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cxDBTreeList Scroll to Focused Node
Очевидно я не понял что такое const vKey: Variant
...
Рейтинг: 0 / 0
18.11.2020, 12:18
    #40019872
Двоичник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cxDBTreeList Scroll to Focused Node
Код: pascal
1.
cxDBTreeList.TopVisibleNode := cxDBTreeList.FocusedNode;




Спасибо, получилось!
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / cxDBTreeList Scroll to Focused Node / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]