Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
 Аватар для kikaa
0 / 0 / 0
Регистрация: 24.04.2017
Сообщений: 158

Обработка ошибок в TreeView

03.07.2019, 22:13. Показов 1534. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите пожалуйста с обработкой ошибки "Когда вообще ни один пункт не выбран в TreeView".Так как при попытке удалить пункт в TreeView, который прежде не был выбран выдает непонятную ошибку(скрин 1).
Вот код на удаление пункта:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
begin
TreeNode:= form2.TreeView1.Selected;  
if (TreeNode.Parent=nil) then
  begin
  ShowMessage('Корневой каталог удалить нельзя');
  end;
while not(TreeNode.Parent=nil) do
 begin
  if MessageDlg('Удалить?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then
   begin
    Dm.CountSQL.SQL.Text:= 'DELETE FROM Products WHERE category = '+IntToStr(ID)+'';
    Dm.CountSQL.ExecSQL;
    Dm.categories.SQL.Text:= 'DELETE FROM categories WHERE id_cat = '+IntToStr(ID)+'';
    dm.categories.ExecSQL;
    ShowMessage('Удалено');
    end;
    Break; 
  TreeNode:=TreeNode.Parent;
  end;
  LoadDB();
  form2.TreeView1.FullExpand;
end;
Миниатюры
Обработка ошибок в TreeView  
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
03.07.2019, 22:13
Ответы с готовыми решениями:

Обработка ошибок
В базе Access я поставила ограничение на поля-обязательность для заполнения, определенное кол-во знаков, ну и просто числовой или текстовый...

Обработка ошибок
Всем привет! Как сделать так, чтобы программа забивала, если функция StrToInt(s) выдавала ошибку (например начинала цикл сначала) и...

Обработка ошибок
Помогите сделать обработку ошибок,если поиск не дал результатов или поля не заполнены <form id="form_1" ...

7
 Аватар для Пытливый
3763 / 2267 / 705
Регистрация: 29.05.2013
Сообщений: 9,622
03.07.2019, 22:19
Так вы просто проверьте, что элемент выделен, а уже потом обращайтесь к его методам.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
begin
if not form2.TreeView1.Selected then Exit;
TreeNode:= form2.TreeView1.Selected;  
if (TreeNode.Parent=nil) then
  begin
  ShowMessage('Корневой каталог удалить нельзя');
  end;
while not(TreeNode.Parent=nil) do
 begin
  if MessageDlg('Удалить?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then
   begin
    Dm.CountSQL.SQL.Text:= 'DELETE FROM Products WHERE category = '+IntToStr(ID)+'';
    Dm.CountSQL.ExecSQL;
    Dm.categories.SQL.Text:= 'DELETE FROM categories WHERE id_cat = '+IntToStr(ID)+'';
    dm.categories.ExecSQL;
    ShowMessage('Удалено');
    end;
    Break; 
  TreeNode:=TreeNode.Parent;
  end;
  LoadDB();
  form2.TreeView1.FullExpand;
end;
0
 Аватар для kikaa
0 / 0 / 0
Регистрация: 24.04.2017
Сообщений: 158
03.07.2019, 22:39  [ТС]
Пытливый, Ошибка Type of expression must be BOOLEAN at line 138.
0
 Аватар для Пытливый
3763 / 2267 / 705
Регистрация: 29.05.2013
Сообщений: 9,622
03.07.2019, 22:49
Лучший ответ Сообщение было отмечено kikaa как решение

Решение

Ну да, это не логическая переменная, потому так попробуйте:
Delphi
1
if not Assigned(form2.TreeView1.Selected) then Exit;
1
 Аватар для kikaa
0 / 0 / 0
Регистрация: 24.04.2017
Сообщений: 158
05.07.2019, 22:50  [ТС]
Пытливый, Спасибо, сделал так:
Delphi
1
2
if not Assigned(form2.TreeView1.Selected) then begin ShowMessage('Вы ничего не выбрали!'); exit;
end;
0
07.07.2019, 21:09

Не по теме:

анализируя TreeView1.Selected можно формировать динамические popup меню

0
 Аватар для Пытливый
3763 / 2267 / 705
Регистрация: 29.05.2013
Сообщений: 9,622
07.07.2019, 21:24
Это вы к чему? Автор вроде не озвучивал такой задачи.
0
08.07.2019, 17:02

Не по теме:

это мои подсказки, считаю что без динамических меню treeview не treeview

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
08.07.2019, 17:02
Помогаю со студенческими работами здесь

Обработка ошибок
Подскажите как выводить ошибки в какой либо форме при неверном заполнении полей!Нужно чтобы ошибка выводилась в строго указанном месте, а...

Обработка ошибок
Есть главный класс и несколько дочерних, входящих как в состав главного, так и друг в друга (не важно) Нужно в другой класс передать члена...

Обработка ошибок
Можно в одной процедуре использовать 2 раза On Error GoToсоответственно для одной части кода и для другой части кода? Если можно, то...

Обработка ошибок
Почему все таки возникают иногда ошибки при обработке: Stream := TIdMultipartFormDataStream.Create; //поток для веб try ...

Обработка ошибок
while (1) { sh *newelem; newelem=new sh; cout<<"Write number of the car"<<"\n"; s=getch(); if (s=='*') ...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru