Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Demon_23_RUS
0 / 0 / 0
Регистрация: 08.10.2014
Сообщений: 2
1

Дерево отображения каталогов

08.10.2014, 13:19. Просмотров 285. Ответов 0
Метки нет (Все метки)

Доброго времени суток Уважаемому сообществу!
Столкнулся с проблемой, есть дерево treeview, есть необходимость переместить узел со всеми дочерними, но при апдейте делфи применяет параметры к узлу в соответствии с индексом! тоесть узел переименовывается и слетают иконки у дочерних узлов. Нужно перемещать узлы (отключенных клиентов) вниз, не допираю как это реализовать, подскажите пожалуйста!
С Уважением.

Листинг процедуры:


Delphi
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
procedure TUpdateUI.Execute;
begin
  while not(DoStop) do begin
      F_MAIN.UpdateUI;
      sleep(200);
    end;
 
end;
 
procedure TF_MAIN.UpdateUI;
var
  Node: TTreeNode;
  i, j, terCount, treecount, parentTreeCount, ptcInd, imind, simind, connectCount, g: Integer;
  poz_fio, IP, Key, os, clVer, balans, Speed, bat, sat, goodsign, odom, locat: string;
begin
  connectCount := 0;
  parentTreeCount := 0;
  ptcInd := 0;
  imind := 435;
  simind := 434;
  terCount := Length(Terminals);
  treecount := DriverTree.Items.Count;
  LThreadCounter.Caption := inttostr(ThreadCounter);
  try
    for i := 0 to treecount - 1 do begin
        if DriverTree.Items[i].HasChildren then
          parentTreeCount := parentTreeCount + 1;
      end;
 
    for i := 0 to terCount - 1 do begin
        if i = parentTreeCount then begin
            Node := DriverTree.Items.add(nil, '');
            DriverTree.Items.AddChild(Node, 'IP: ');
            DriverTree.Items.AddChild(Node, 'Ключ: ');
            DriverTree.Items.AddChild(Node, 'OEM: ');
            DriverTree.Items.AddChild(Node, 'Версия терминала: ');
            DriverTree.Items.AddChild(Node, 'Баланс: ');
            DriverTree.Items.AddChild(Node, 'Скорость: ');
            DriverTree.Items.AddChild(Node, 'Батарея: ');
            DriverTree.Items.AddChild(Node, 'Спутники: ');
            DriverTree.Items.AddChild(Node, 'Хороший сигнал: ');
            DriverTree.Items.AddChild(Node, 'Одометр: ');
            DriverTree.Items.AddChild(Node, 'Локация: ');
 
            ptcInd := DriverTree.items.Count - 12; // 11 дочерних веток и 1 индекс = 12
            //showmessage(IntToStr(ptcInd));
            for j := 0 to 10 do begin
                DriverTree.Items[ptcInd].Item[j].SelectedIndex := simind;
                DriverTree.Items[ptcInd].Item[j].ImageIndex := imind;
              end;
          end
        else begin
            g := -1;
            for j := 0 to DriverTree.Items.Count - 1 do // Для каждого элемента в дереве
              begin
              //showmessage(inttostr(DriverTree.Items.Count));
                if DriverTree.Items[j].HasChildren then // если элемент родительский
                  begin
                    g := g + 1;
                    if g = i then begin
                        ptcInd := j;
                        break;
                      end;
                  end;
              end;
          end;
        try
          InsertOrUpdateTerminalInfo(i);
          if Terminals[i].DriverInfo._Car1 = 0 then
            poz_fio := 'Неопределен / разлогенен'
          else
            poz_fio := inttostr(Terminals[i].DriverInfo._Car1) + ' ' + trim(Terminals[i].State.FIO);
 
          IP := Terminals[i].Connection.IP;
          Key := Terminals[i].Connection.Key;
          os := Terminals[i].DriverInfo.typeOs + ' ' + Terminals[i].DriverInfo.verOs + ' ' + Terminals[i].DriverInfo.oemInfo;
          clVer := Terminals[i].DriverInfo.clVer;
          balans := Terminals[i].State.Balance + ' руб.';
          Speed := Terminals[i].GPS.Speed;
          if Terminals[i].GPS.Powered = 'ON' then
            bat := 'Да'
          else
            bat := 'Нет';
          sat := Terminals[i].GPS.UsedSat + ' / ' + Terminals[i].GPS.AllSat;
          if Terminals[i].GPS.Signal <> '0' then
            goodsign := 'Да'
          else
            goodsign := 'Нет';
          odom := floattostr(strtofloat(Terminals[i].GPS.Odometer) / 1000) + ' км.';
          locat := Terminals[i].GPS.L_NAME;
 
          DriverTree.Items[ptcInd].Item[0].Text := 'IP: ' + IP;
          DriverTree.Items[ptcInd].Item[1].Text := 'Ключ: ' + Key;
          DriverTree.Items[ptcInd].Item[2].Text := 'OEM: ' + os;
          DriverTree.Items[ptcInd].Item[3].Text := 'Версия терминала: ' + clVer;
          DriverTree.Items[ptcInd].Item[4].Text := 'Баланс: ' + balans;
          DriverTree.Items[ptcInd].Item[5].Text := 'Скорость: ' + Speed;
          DriverTree.Items[ptcInd].Item[6].Text := 'Батарея: ' + bat;
          DriverTree.Items[ptcInd].Item[7].Text := 'Спутники: ' + sat;
          DriverTree.Items[ptcInd].Item[8].Text := 'Хороший сигнал: ' + goodsign;
          DriverTree.Items[ptcInd].Item[9].Text := 'Одометр: ' + odom;
          DriverTree.Items[ptcInd].Item[10].Text := 'Локация: ' + locat;
 
          if Terminals[i].Connection.Status then begin
              if Pos('wince', LowerCase(Terminals[i].DriverInfo.typeOs)) > 0 then begin
                  DriverTree.Items[ptcInd].ImageIndex := 550;
                  DriverTree.Items[ptcInd].SelectedIndex := 550;
                  if Terminals[i].DriverInfo.clVer <> Settings.UPDATE_VERSION_WINCE then
                    DriverTree.Items[ptcInd].Text := poz_fio + ' версия ' + Terminals[i].DriverInfo.clVer + ' ОБНОВИТЬ'
                  else
                    DriverTree.Items[ptcInd].Text := poz_fio;
                end
              else begin
                  DriverTree.Items[ptcInd].ImageIndex := 549;
                  DriverTree.Items[ptcInd].SelectedIndex := 549;
                  if Terminals[i].DriverInfo.clVer <> Settings.UPDATE_VERSION_ANDROID then
                    DriverTree.Items[ptcInd].Text := poz_fio + ' версия ' + Terminals[i].DriverInfo.clVer + ' ОБНОВИТЬ'
                  else
                    DriverTree.Items[ptcInd].Text := poz_fio;
                end;
              connectCount := connectCount + 1;
            end
          else begin
              DriverTree.Items[ptcInd].ImageIndex := 474;
              DriverTree.Items[ptcInd].SelectedIndex := 474;
              //DriverTree.Items[ptcInd].Index := (DriverTree.Items.Count+1);
 
 
 
            end;
        except
 
        end;
 
      end;
    LConnectCount.Caption := inttostr(connectCount);
    LObAll.Caption := inttostr(terCount);
  except
 
  end;
end;
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.10.2014, 13:19
Ответы с готовыми решениями:

Дерево каталогов
Нужно в Делфи создать дерево каталогов(т.е. чтобы была возможность создавать папки) и чтобы оно...

Дерево каталогов диска
Как можно вывести дерево каталогов в ListView? Добавлено через 3 часа 52 минуты Где можно найти...

Создать дерево каталогов
хочу создать справочник и чтобы не создавать уйма кучу кнопок мне пришла в голову идея создать...

Бесплатный компонент для Delphi - дерево каталогов и файлов
Подскажите, существует бесплатный компонент для Delphi, чтобы удобно работать с файловой системой...

Курсач горит,нужно организовать удаление каталогов и копирование каталогов
Народ кто нито помогите с курсачем нужно что бы каталоги удалял с запросом и каталоги перемещал,а...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.10.2014, 13:19

Шифрование каталогов
Здравствуйте!!! Скажите, пожалуйста, есть ли существенная разница между процедурами шифрования...

Отображение дерева каталогов
Нужен код SelectDirectory, но чтоб окно было как на рисунке(с права). Проблема в том что эта...

Вывести структуру каталогов
Помогите как сделать так чтобы после выполнения кода создавался текстовый файл который и мел...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru