Перемещение узлов в TreeView

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Сообщение Large » 11.10.2005 23:49:55

Народы, прошу вашей помощи!

Есть конструкция:
while (MainForm.DirTree.Selected.GetPrevSibling<>nil) and (not MainForm.DirTree.Selected.getPrevSibling.HasChildren) do
MainForm.DirTree.Selected.MoveTo(MainForm.DirTree.Selected.getPrevSibling,naInsert);

DitrTree – компонент типа TTreeView; MainForm – собственно, форма программы.

Эта конструкция обеспечивает перенос узла структуры (этот узел в данный момент Selected), имеющего дочерние узлы, вверх по списку узлов если еще не достигнут верх текущего уровня дерева и у предыдущего узла нет дочерних узлов. То есть по ходу работы формируется дерево, в котором узлы, имеющие дочерние узлы, должны располагаться вверху своего уровня, а затем – узлы без подчиненных узлов.

В Delphi 7 это работает прекрасно.
Lazarus 0.9.8 beta говорит, что “Project raised exeption class 'External: SIGSEGV'”, открывает treeview.inc и ставит маркер на функции:

function TTreeNode.GetPrevSibling: TTreeNode;
begin
Result:=FPrevBrother;
end;

Я не могу понять, почему не работает...
Исходники treeview.inc смотрел, но толком разобраться в них пока не удалось... :(


Буду благодарен за любые идеи...

P.S. 0.9.10 мне пока не доступен :(
Large
 

Re: Перемещение узлов в TreeView

Сообщение Лекс Айрин » 24.06.2013 17:36:12

Не знаю, нужно ли еще, но... после запятых нужен пробел.
Код: Выделить всё
procedure TForm1.Button4Click(Sender: TObject);
begin

if form1.TreeView1.Selected=Form1.TreeView1.Items.GetFirstNode then begin end
else
      begin
              Form1.TreeView1.Selected.MoveTo(Form1.TreeView1.Selected.GetPrevVisible, naInsert);
     end;

end;       
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 222

Рейтинг@Mail.ru