Перейти к содержимому

Фотография

как проверить наличие ветви в TreeView?


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 2

#1 M.A.N.

M.A.N.

    Новый участник

  • Members
  • Pip
  • 14 сообщений
  • ФИО:Александр

Отправлено 21 марта 2005 - 09:35

Уважаемые тестировщики!
Подскажите, пожалуйста, как проверить наличие ветви в дереве на базе компоненты TTreeView в Delphi перед кликом?

m.NavigatorTree.Click('|Все документы|'+archive_name);

try... except не помогает, т.к. это не exception, а просто error...

Можно последовательно перебирать все узлы текущей ветки и проверять их текст, но, возможно, существует более короткое и элегантное решение?
  • 0

#2 Dmitry N

Dmitry N

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 742 сообщений
  • ФИО:Николаев Дмитрий
  • Город:Где-то в России

Отправлено 21 марта 2005 - 11:53

Здравствуйте.

Можно использовать обработчик события OnLogError: в нем проверять ошибку и записывать результат в некоторую глобальную переменную. Подробнее можно найти в топиках "OnLogError Event" и "Events and Event Handlers".

А можно использовать следующую функцию, которая пробегает по всем нодам дерева и проверяет, есть ли указанный узел:
[DelphiScript]
function itemExists(treeItems, Path);
var obj, posit, str, i, item;
begin
Result := false;
posit := Pos('|', Path);
if (posit = 1) then
begin
Path := Copy(Path, 2, Length(Path));
posit := Pos('|', Path);
end;

if (posit > 0) then str := Copy(Path, 1, posit-1)
else str := Path;
for i:=0 to treeItems.Count-1 do
begin
item := treeItems.Item[i];
if (item.Text = str) then
begin
str := Copy(Path, posit+1, Length(Path));
if (posit = 0) or (itemExists(item, str)) then Result := true;
exit;
end;
end;
end;

...
if itemExists(m.NavigatorTree.Items, '|Все документы|'+archive_name) then
...
  • 0
С уважением,
Дмитрий

#3 M.A.N.

M.A.N.

    Новый участник

  • Members
  • Pip
  • 14 сообщений
  • ФИО:Александр

Отправлено 21 марта 2005 - 12:43

Спасибо, Dmitry N, за обстоятельный ответ.
  • 0


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных