powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Опять про TreeView
5 сообщений из 5, страница 1 из 1
Опять про TreeView
    #32259396
Kidd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Господа спецы помогите решить след. задачу.
Есть этот самый TreeView на форме. Есть DBGrid. В TW регистрируются серверы сети (как в EM) и структура сохраняется в *.txt. Есть код, простой пока(с недоступным сервером валит задачу, но не главное).

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
procedure TForm1.TreeView1GetSelectedIndex(Sender: TObject;
  Node: TTreeNode);
begin
MyNode := Node;
end;

procedure TForm1.TreeView1Click(Sender: TObject);

begin    
DM_UNIT1.DataModule1.ADOConnection2.Connected:=false;
MyNode:=TreeView1.Selected;

while MyNode <> nil do

  begin
    If (MyNode.Text<>'Каталог объектов')and(MyNode.ImageIndex= 0 ) and   (MyNode.Expanded=true) then
       begin      /////
           If DM_UNIT1.DataModule1.ADOConnection2.Connected=false then
                begin      

          DM_Unit1.DataModule1.ADOConnection2.ConnectionString :=
          'Provider = SQLOLEDB.1; Password =;'+
          'Presist Security Info = True; User ID=;'+
          'Initial Catalog = master; Data Source ='+MyNode.Text+';';
          DM_Unit1.DataModule1.ADOConnection2.ConnectionTimeout :=  15 ;
          DM_Unit1.DataModule1.ADOQuery1.Active := true;
                
                end;      
         end;     
    MyNode:=MyNode.GetNext;
   
   end;     
end;     


Так вот суть.
При старте программы открываю нижний узел в дереве . Отрабатывается запрос на выборку из базы master о существующих пользовательских базах на сервере (SQL).
Затем второй узел снизу (второй сервер). Грид отражает базы соответственно.
И так снизу вверх до самого корневого узла. По всем зарегистрированным в TW серверам. И все отлично.

Если же эту операцию, после старта программы, сделать сверху вниз , то запрос и подключение отрабатывается только для первого верхнего сервера, а при щелчке на последующих, (продвижении сверху вниз), информация в DBGrid не меняется. Переподключения не происходит.
Что дорисовать в коде?

Заранее благодарен.
...
Рейтинг: 0 / 0
Опять про TreeView
    #32259419
Speaker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А почему все обрабатывается в сообщении OnClick, а не в OnChange или в OnChanging?

По моему, это гораздо правильнее...
...
Рейтинг: 0 / 0
Опять про TreeView
    #32259468
Kidd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Speaker

Прямо счас и проверил. Подставив процедуру в вышесказанные события. В onChange не открывается автоматом ни при продвижении вверх ни вниз. В onChanging вообще некорректно отражается в DBGrid. Для выбранного узла(сервера) отражаются базы другого сервера.
...
Рейтинг: 0 / 0
Опять про TreeView
    #32259514
Speaker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может, я чего-то не понимаю, но:
1. если у тебя узлы - сервера, и для каждого узла нужно отобразить список
баз, то тогда зачем ты проходишь в цикле _все_ узлы дерева, начиная с текущего?
2. Если есть такая проверка
If DM_UNIT1.DataModule1.ADOConnection2.Connected=false then
то непонятно, где имеется такое присваивание.
3. по поводу вверх-вниз: когда идешь вверх, цикл начинается каждый раз
с нового элемента, когда идешь вниз, он начинается всегда с первого,
и IMHO пункт 2. срабатывает только 1 раз, для первого элемента дерева.
Разберись в логике.

Я бы сделал так:
В обработке OnChange проверяем что текущий узел - это сервер,
disconnect, настрока connection, connect, query.active := true
...
Рейтинг: 0 / 0
Опять про TreeView
    #32259848
Kidd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Speaker
Отлучался тут ненадолго. Не смог поддержать динамичность разговора.
Спасибо.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Опять про TreeView
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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