powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / cxDBTreeList Scroll to Focused Node
5 сообщений из 5, страница 1 из 1
cxDBTreeList Scroll to Focused Node
    #40019861
Двоичник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не могу сообразить, как показать узел в 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
cxDBTreeList Scroll to Focused Node
    #40019862
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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
cxDBTreeList Scroll to Focused Node
    #40019867
Двоичник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
cxDBTreeList Scroll to Focused Node
    #40019871
Двоичник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Очевидно я не понял что такое const vKey: Variant
...
Рейтинг: 0 / 0
cxDBTreeList Scroll to Focused Node
    #40019872
Двоичник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: pascal
1.
cxDBTreeList.TopVisibleNode := cxDBTreeList.FocusedNode;




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


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