1 / 1 / 0
Регистрация: 07.11.2015
Сообщений: 57
1

Ошибка TreeView: unable to insert an item

26.04.2016, 09:20. Показов 2695. Ответов 15
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Процедура не добавляет в treeview дерево дисков, данная процедура работает при создании формы, после запуска приложения выводится сообщение "unable to insert an item"
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
procedure TForm1.UpdateTree;
var c: char; Root, N: TTreeNode; S: Int64;
begin // Очистить дерево и прочитать список доступных дисков
  TreeView.Items.BeginUpdate; // Запретить перерисовку дерева в процессе его изменения
try
    TreeView.Items.Clear; // Очистить дерево
    Root.Data := Pointer(1);
    Root.ImageIndex:=0;
    Root.SelectedIndex:=0;
    for c:='A' to 'Z' do
    begin
      S:=DiskSize(byte(c)-byte('A')+1);
      if S>=0 then // Если диск доступен, то размер всегда неотрицательный
       begin
       ShowMessage(IntToStr(DiskSize(byte(c)-byte('A')+1)));
        N:=TreeView.Items.AddChild (Root,C+':');
        N.ImageIndex:=1;
        N.SelectedIndex:=1;
        N.HasChildren:=True; // вставить значок "+" слева от вершины дерева
      end;
    end;
    Root.Expanded:=True; // Раскрыть дерево
  finally
    TreeView.items.EndUpdate; // Обновление дерева закончено, его можно перерисовать
  end;
end;
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.04.2016, 09:20
Ответы с готовыми решениями:

Добавление файла в item TreeView (программно)
Есть список TreeView1, добавляю в него Item тоже программно. Хочу присвоить ему документ, что бы...

Добавление Item в TreeView по нажатию кнопки
Очень нужна помощь, как по нажатию кнопки на форме можно создать ветку у TreeView?

Treeview: гиперссылки на item
Имеется компонент Treeview. В нем список id. Так вот нужно, чтобы при двойном клике на какой-то...

Узнать по какому Item в TreeView кликнули мышкой
Есть TreeView забинденный к объектной модели.. по клику правой кнопки мыши по дереву нужно узнать...

15
5395 / 4323 / 1060
Регистрация: 29.08.2013
Сообщений: 27,128
Записей в блоге: 3
26.04.2016, 10:50 2
Лучший ответ Сообщение было отмечено sp70 как решение

Решение

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
var c: char; Root, N: TTreeNode; S: Int64;
begin
  TreeView.Items.Clear; // Очистить дерево
  TreeView.Items.BeginUpdate; // Запретить перерисовку дерева в процессе его изменения
  try
    Root.Data := Pointer(1);
//    Root.ImageIndex:=0;
//    Root.SelectedIndex:=0;
    Root:=treeview.items.add(nil,'main');
    for c:='A' to 'Z' do
    begin
      S:=DiskSize(byte(c)-byte('A')+1);
      if S>=0 then // Если диск доступен, то размер всегда неотрицательный
       begin
        n:=TreeView.Items.AddChild (Root,C+':\ ('+IntToStr(DiskSize(byte(c)-byte('A')+1))+')');
//        N.ImageIndex:=1;
//        N.SelectedIndex:=1;
        N.HasChildren:=True; // вставить значок "+" слева от вершины дерева
      end;
    end;
  finally
    TreeView.items.EndUpdate; // Обновление дерева закончено, его можно перерисовать
    Root.Expanded:=True; // Раскрыть дерево
  end;
end;
Добавлено через 33 секунды
ImageIndex убрал так как нужно ImageList с иконками добавлять
1
1 / 1 / 0
Регистрация: 07.11.2015
Сообщений: 57
26.04.2016, 16:05  [ТС] 3
Закоментировал эти строки, но осталась та же проблема, imagelist в программе используется, иконки там тоже есть
0
5395 / 4323 / 1060
Регистрация: 29.08.2013
Сообщений: 27,128
Записей в блоге: 3
26.04.2016, 16:06 4
мой код работает и диски добавляет
0
1 / 1 / 0
Регистрация: 07.11.2015
Сообщений: 57
26.04.2016, 16:11  [ТС] 5
А в чем проблема тогда может быть?)
0
5395 / 4323 / 1060
Регистрация: 29.08.2013
Сообщений: 27,128
Записей в блоге: 3
26.04.2016, 16:12 6
sp70, а на какой строке ошибка?
0
1 / 1 / 0
Регистрация: 07.11.2015
Сообщений: 57
26.04.2016, 16:15  [ТС] 7
При запуске программы вылезает окно с надписью unable to insert an item

Добавлено через 32 секунды
Нажимаю "ok" запускается программа, но дерево пустое
0
5395 / 4323 / 1060
Регистрация: 29.08.2013
Сообщений: 27,128
Записей в блоге: 3
26.04.2016, 16:16 8
вы знаете что такое отладчик?
0
1 / 1 / 0
Регистрация: 07.11.2015
Сообщений: 57
26.04.2016, 17:38  [ТС] 9
Вот такая ошибка когда жму Step Over - [dcc32 Fatal Error] F2039 Could not create output file '.\Win32\Debug\Project1.exe'

Добавлено через 1 час 6 минут
Никто не знает?
0
5395 / 4323 / 1060
Регистрация: 29.08.2013
Сообщений: 27,128
Записей в блоге: 3
26.04.2016, 17:39 10
о чем?
0
1 / 1 / 0
Регистрация: 07.11.2015
Сообщений: 57
26.04.2016, 17:46  [ТС] 11
В чем проблема?

Добавлено через 32 секунды
Когда пользуюсь отладчиком выводит ошибку [dcc32 Fatal Error] F2039 Could not create output file '.\Win32\Debug\Project1.exe'
0
5395 / 4323 / 1060
Регистрация: 29.08.2013
Сообщений: 27,128
Записей в блоге: 3
26.04.2016, 17:47 12
не может создать файл
0
1 / 1 / 0
Регистрация: 07.11.2015
Сообщений: 57
26.04.2016, 17:54  [ТС] 13
Так эта ошибка появляется когда я жму в отладчике Step Over когда вылезает окно с ошибкой "unable to insert an item" , программа в этот момент запущена.
0
5395 / 4323 / 1060
Регистрация: 29.08.2013
Сообщений: 27,128
Записей в блоге: 3
26.04.2016, 17:55 14
решай проблему, может антивирус запрещает, может еще чего
это не из-за Treeview
0
1 / 1 / 0
Регистрация: 07.11.2015
Сообщений: 57
26.04.2016, 19:41  [ТС] 15
Антивируса нет)

Добавлено через 1 час 33 минуты
Цитата Сообщение от qwertehok Посмотреть сообщение
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
var c: char; Root, N: TTreeNode; S: Int64;
begin
  TreeView.Items.Clear; // Очистить дерево
  TreeView.Items.BeginUpdate; // Запретить перерисовку дерева в процессе его изменения
  try
    Root.Data := Pointer(1);
//    Root.ImageIndex:=0;
//    Root.SelectedIndex:=0;
    Root:=treeview.items.add(nil,'main');
    for c:='A' to 'Z' do
    begin
      S:=DiskSize(byte(c)-byte('A')+1);
      if S>=0 then // Если диск доступен, то размер всегда неотрицательный
       begin
        n:=TreeView.Items.AddChild (Root,C+':\ ('+IntToStr(DiskSize(byte(c)-byte('A')+1))+')');
//        N.ImageIndex:=1;
//        N.SelectedIndex:=1;
        N.HasChildren:=True; // вставить значок "+" слева от вершины дерева
      end;
    end;
  finally
    TreeView.items.EndUpdate; // Обновление дерева закончено, его можно перерисовать
    Root.Expanded:=True; // Раскрыть дерево
  end;
end;
Добавлено через 33 секунды
ImageIndex убрал так как нужно ImageList с иконками добавлять
Прошу прощения ваш код оказывается работает!

Добавлено через 16 секунд
Спасибо за помощь

Добавлено через 6 минут
Наверное нужно было добавить строку
Delphi
1
Root:=treeview.items.add(nil,'main');
0
5395 / 4323 / 1060
Регистрация: 29.08.2013
Сообщений: 27,128
Записей в блоге: 3
26.04.2016, 20:16 16
Цитата Сообщение от sp70 Посмотреть сообщение
Прошу прощения ваш код оказывается работает
Цитата Сообщение от qwertehok Посмотреть сообщение
мой код работает и диски добавляет
0
26.04.2016, 20:16
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.04.2016, 20:16
Помогаю со студенческими работами здесь

как можна с кода добавит Item в TreeView ?
я хочу, добавлят пункт в treeview, когда я нажму на кнопкеб как это можно? это должно произойтись...

Событие Expanded у TreeView.Item срабатывает несколько раз
Доброго времени суток форумчанам) Возникла следующая проблема - при разворачивании Item'a в моём...

Открытие в Webbrowser определенного html-документа при клике на item Treeview
Всем доброго времени суток! Помогите пожалуйста справиться мне с такой задачей: Есть Treeview и...

Unable to create debug bridge unable to start adb server
Хочу отлаживать с телефона, не получается подцепиться к телефону. Телефон HTC. HTC Sync...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru