Форум: "Начинающим";
Текущий архив: 2005.09.18;
Скачать: [xml.tar.bz2];
ВнизDelphi опять глючит Найти похожие ветки
← →
Андрей Молчанов (2005-08-11 22:29) [0]Здравствуйте!
Мне надо удалить все выделенные элементы первого уровня из TTreeView. Multiselect установлен в True. Использую следующий код:var
Node, PrevNode: TTreeNode;
begin
Node := CheckTree.Items.GetFirstNode;
CheckTree.Items.BeginUpdate;
try
while Node <> nil do begin
if Node.Selected then begin
PrevNode := Node.getNextSibling;
Node.Delete;
Node := PrevNode;
end else
Node := Node.getNextSibling;
end;
finally
CheckTree.Items.EndUpdate;
end;
Но если выбран первый элемент дерева, то удаляютя ВСЕ элементы дерева. В чем здесь ошибка? Пожалуйста, помогите!
← →
KilkennyCat © (2005-08-11 22:44) [1]а если второй, то остается только первый?
← →
GuAV © (2005-08-11 23:47) [2]
for I := TreeView1.SelectionCount - 1 downto 0 do
if TreeView1.Selections[I].Level = 1 then
TreeView1.Selections[I].Delete;
?
← →
Андрей Молчанов (2005-08-12 12:07) [3]Спасибо!
Написал вот такую функцию:procedure TfrmProperties.btnRemoveClick(Sender: TObject);
var
i: integer;
begin
CheckTree.Items.BeginUpdate;
try
for i := CheckTree.SelectionCount - 1 downto 0 do
if CheckTree.Selections[i].Level = 0 then
CheckTree.Selections[i].Delete;
finally
CheckTree.Items.EndUpdate;
end;
end;
Но, если до вызова в дереве была горизонтальная прокрутка, а после вызова в результате удаления длинного элемента, полоса исчезла, то нижняя граница дерева не перерисовывается. Без BeginUpdate и EndUpdate все прекрасно работает. Есть ли выходы, кроме как убрать BeginUpdate и EndUpdate?
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2005.09.18;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.011 c