Форум: "Основная";
Текущий архив: 2003.07.03;
Скачать: [xml.tar.bz2];
ВнизTreeView Найти похожие ветки
← →
PiboDIE (2003-06-21 08:43) [0]Проблема:Даю код... кто понимает, тот поймет...
for i := 0 to TreeView.Items.Count-1 do
begin
if (TreeView.Items[i].HasChildren)
and(Edit1.Text=TreeView.Items[i].Text) //тут проверка выполняется
and(Edit2.Text<>"")then
begin
for j := i+1 to TreeView.Items.Count-1 do
begin
if (Edit2.Text=TreeView.Items[j].Text) //а вот тут нет
or(TreeView.Items[j].HasChildren) then Exit;
end;
end
else if(TreeView.Items[i].HasChildren)
and(Edit1.Text=TreeView.Items[i].Text)
and(Edit2.Text="")then exit;
end;
Цель: емеется два едита, и одно дерево, состоящее из элементов - parent (родитель - один)который в свою очередь может содержать child(но они не являются родителями. т.е. 1 ступень)
Необходимо проверить - имеется ли в дереве родитель, похожий на текст Edit1, если есть и Edit2 не пустое, то проверить, содержит ли этот родитель элемент равный Edit2.Если элементы в дереве имеются, то выход из процедуры, если не имеется то я вношу в базу данные из Edit1 и Edit2(если не пустой)
← →
ЮЮ (2003-06-21 08:57) [1]Что значит проверка не выполняется? :-)
← →
MBo (2003-06-21 09:06) [2]if (Edit1.Text<>"") and (Edit2.Text<>"") then
for i:=0 to TreeView1.Items.Count-1 do
if TreeView1.Items[i].Level>0 then
if (TreeView1.Items[i].Text=Edit2.Text) and
(TreeView1.Items[i].Parent.Text=Edit1.Text) then
Memo1.Lines.Add(TreeView1.Items[i].Parent.Text+" "+
TreeView1.Items[i].Text);
← →
Palladin (2003-06-21 09:12) [3]1
вот это условие вообще следует поставить перед циклом, нечего код нагромождать...
if Edit2.Text<>"" then цикл...
2
for j := i+1 to TreeView.Items.Count-1 do
begin
if (Edit2.Text=TreeView.Items[j].Text) //а вот тут нет
or(TreeView.Items[j].HasChildren) then Exit;
end;
это что по твоему? это всего лишь пробег до конца первого уровня дерева...
где ты по child у текущего пункта бежишь, мне не известно...
3
вот код, пусть это у тебя функция которая возврашает true если такая пара найдена и false если не найдена
result:=false
if Edit2.Text<>"" then
for i := 0 to TreeView.Items.Count-1 do
begin
if (TreeView.Items[i].HasChildren) and (Edit1.Text=TreeView.Items[i].Text) then
begin
for j := 0 to TreeView.Items[i].Count-1 do
if (Edit2.Text=TreeView.Items[i].Item[j].Text) then
begin
result:=true;
break;
end;
if result then break;
end;
> кто понимает, тот поймет...
а за это бьют, это косвенное обвинение в непоноценности участников форума не ответивших тебе хоть что нибудь...
← →
PiboDIE (2003-06-21 09:37) [4]Мне все равно, кто ответил кто нет... если помогли, то спасибо Вам огромное, я лично никого в неполноценности не обвиняю, каждый понимает по-своему.
1: Дело в том, что Edit2 МОЖЕТ быть пустым...
2: Это пробег не до конца первого уровня, а от первого дочернего элемента до последнего, которые находятся в подчинении родительского элемента.
3: Спасибо за помощь но это не совсем то, что мне нужно.... пары может и не быть... (Edit1 обязательный элемент, Edit2 может оставаться пустым...)
← →
PiboDIE (2003-06-21 09:40) [5]to Palladin
Спасибо за строку (Edit2.Text=TreeView.Items[i].Item[j].Text)
Вот она то мне и нужна....
← →
Palladin (2003-06-21 09:52) [6]если Edit2 может быть пустым тогда другое дело и кстати звиняюсь за 6 строку, там begin не должно быть
result:=false
if Edit1.Text<>"" then
for i := 0 to TreeView.Items.Count-1 do
begin
if (TreeView.Items[i].HasChildren) and (Edit1.Text=TreeView.Items[i].Text) then
if Edit2.Text="" then result:=true else
for j := 0 to TreeView.Items[i].Count-1 do
if (Edit2.Text=TreeView.Items[i].Item[j].Text) then
begin
result:=true;
break;
end;
if result then break;
end;
← →
PiboDIE (2003-06-21 10:14) [7]to Palladin
Ещё раз ОГРОМНОЕ тебе СПАСИБО...
← →
PiboDIE (2003-06-21 12:54) [8]Вот правильный (конечный, для тех кого интересует) вариант:
for i := 0 to tvCarsTree.Items.Count-1 do
begin
if(tvCarsTree.Items[i].HasChildren)and(AnsiCompareText(edNewBrand.Text,tvCarsTree.Items[i].Text)=0)
then if edNewModel.Text="" then exit
else
for j := 0 to tvCarsTree.Items[i].Count-1 do
if(AnsiCompareText(edNewModel.Text,tvCarsTree.Items[i].Item[j].Text)=0)then exit;
end;
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.07.03;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.007 c