Форум: "Начинающим";
Текущий архив: 2008.01.27;
Скачать: [xml.tar.bz2];
ВнизПеренос в TreeView Найти похожие ветки
← →
art36 © (2007-12-27 19:41) [0]Как переместить одну выделенную ветвь в TTreeView в другую, которой название известно? (может индекс ее определить). Я не про DragAndDrop, но и это было бы очень неплохо.
подскажите пожалуйста!
Спасибо!
← →
turbouser © (2007-12-27 21:16) [1]
if TreeView.Selected <> nil then
begin
TreeView.Items.AddChild(TreeView.Items[x], TreeView.Selected.Text);
TreeView.Selected.Delete;
end;
Где x - индекс итема, название которого известно.
← →
art36 © (2007-12-27 22:37) [2]Да, верно! Спасибо!
Одна оговорка: я не понял почему в скобках treeview.items[x], т.к. не работало поэтому написал там treeview.droptarget;
← →
art36 © (2007-12-27 22:51) [3]Да, и еще:
Когда перетаскиваю в нижнюю область TreeView, где нет дерева, или за область компонента, то выскакивает ошибка обращения к памяти.
Пробовал весь код в EndDrag помещать в TRY...EXCEPT...END
Почему?
← →
art36 © (2007-12-27 22:57) [4]Да!!!!!
Я разобрался! Дело в том, что когда перетаскиваешь объект, то происходит обработка для любого компонента, а мне этого не нужно, поэтому я написал в самом начале процедуры EndDrag следующее:
if target<>mytreeview then exit;
Где exit - выход из процедуры обработки!
Спасибо!
← →
art36 © (2007-12-27 23:56) [5]Нет, я ошибся последняя моя запись не решает проблемы. Таким образом: перетаскивание вообще не работает
← →
turbouser © (2007-12-28 00:09) [6]
> art36 © (27.12.07 23:56) [5]
...
TreeView1.DragMode:=dmAutomatic;
...
procedure TForm1.TreeView1DragOver(Sender, Source: TObject; X, Y: integer;
State: TDragState; var Accept: boolean);
begin
Accept := Sender = Source;
end;
procedure TForm1.TreeView1EndDrag(Sender, Target: TObject; X, Y: integer);
begin
if Sender = TreeView1 then
TreeView1.Selected.MoveTo(TreeView1.GetNodeAt(x, y), naAddChild);
end;
← →
art36 © (2007-12-28 00:32) [7]Да, это работает, но перемещение происходит в ту ветку, где находится элемент на котором был курсор, а мне нужно чтобы перемещение было в него.
← →
turbouser © (2007-12-28 00:35) [8]
> art36 © (28.12.07 00:32) [7]
>
> Да, это работает, но перемещение происходит в ту ветку,
> где находится элемент на котором был курсор, а мне нужно
> чтобы перемещение было в него.
Не понял...TreeView1.GetNodeAt(x, y).MoveTo(TreeView1.Selected, naAddChild);
так что ли?
← →
art36 © (2007-12-28 00:41) [9]Да, но так не перемещается в ту папку которую нужно, а только рядом с ней, то есть в ту же ветку
← →
art36 © (2007-12-28 00:44) [10]Общая папка
папка1
папка2
папка моя
Если я перетащу папку "папка1" на папку "папка моя" то она встанет рядом с ней в папке "папка2" вот так:
Общая папка
папка2
папка1
папка моя
А мне нужно вот так
Общая папка
папка2
папка моя
папка1
← →
{RASkov} © (2007-12-28 00:49) [11]> [9, 10] art36 © (28.12.07 00:41)
> А мне нужно вот так
С кодом из [6] (не [8]) можно перемещать как угодно....
← →
turbouser © (2007-12-28 00:53) [12]
> art36 © (28.12.07 00:44) [10]
Код из [6] нормально работает. Т.е.
> Если я перетащу папку "папка1" на папку "папка моя" то она
> встанет рядом с ней в папке "папка2" вот так:
> Общая папка
> папка2
> папка моя
> папка1
← →
art36 © (2007-12-28 01:04) [13]Спасибо!
А вложенные ветки тоже перетаскиваются автоматически? Вряд ли...
Выскакивает ошибка, когда вложенные есть. Что делать с вложенными?
← →
{RASkov} © (2007-12-28 01:08) [14]> [13] art36 © (28.12.07 01:04)
Все "автоматом"...
Ты что-то не так делаешь :) поверь..... т.е. проверь)
← →
art36 © (2007-12-28 01:15) [15]У меня после перестановки идет код работы с файлом, понял что там я использую tree.selected.text или tree.droptarget.
Понял что это лишнее, а процесс переноса получился все-таки. СПАСИБО БОЛЬШОЕ.
Кому скучно объясните пожалуйста значение этого текста:
procedure TForm1.TreeView1DragOver(Sender, Source: TObject; X, Y: integer;
State: TDragState; var Accept: boolean);
begin
Accept := Sender = Source;
end;
← →
Германн © (2007-12-28 01:16) [16]Опять "папки", блин!
:(
Какая зараза придумала сию заразу? Знал бы, убил бы на месте без суда и следствия :)
← →
art36 © (2007-12-28 01:18) [17]
> Опять "папки", блин!
В каком смысле? Я назвал "папки" потому что в этих "папках" храню информацию из файла с записями. Каждой "папке" соответствуют свои записи. Я не говорю про папки Windows. :)
← →
{RASkov} © (2007-12-28 01:18) [18]> [15] art36 © (28.12.07 01:15)
> Кому скучно объясните пожалуйста значение этого текста:
:%)
Принять данные если и "передатчик" и "приемник" одно лицо :)
Т.е. в данном случае приниматься в тривью будут данные только с этого же тривью..... во как)
← →
Германн © (2007-12-28 01:18) [19]
> Кому скучно объясните пожалуйста значение этого текста:
>
> procedure TForm1.TreeView1DragOver(Sender, Source: TObject;
> X, Y: integer;
> State: TDragState; var Accept: boolean);
> begin
> Accept := Sender = Source;
> end;
>
А что тут объяснять? Если указатель мышки находится над тем объектом, который перемещают, то "его в его кинуть нельзя".
← →
{RASkov} © (2007-12-28 01:20) [20]> [19] Германн © (28.12.07 01:18)
> его в его кинуть нельзя
Наоборот :) зя)
← →
art36 © (2007-12-28 01:20) [21]
> Accept := Sender = Source;
Ассеpt находится только в этой процедуре, почем это положительно влияет на ход программы, а именно другой процедуры?
← →
Германн © (2007-12-28 01:22) [22]
> {RASkov} © (28.12.07 01:18) [18]
Или я что-то не так понял? Мозги пока не "размялись" после напряженной работы.
← →
art36 © (2007-12-28 01:23) [23]
> > [19] Германн © (28.12.07 01:18)
> > его в его кинуть нельзя
Это неправильно.
А все-таки, что такое Accept и Source в этой строке:
> Accept := Sender = Source;
← →
{RASkov} © (2007-12-28 01:24) [24]> [21] art36 © (28.12.07 01:20)
> Ассеpt находится только в этой процедуре, почем это положительно
> влияет на ход программы, а именно другой процедуры?
Что-то не совсем понял, :( но скажу вот что:
Над тривью можно тащить данные с другого контрола и вот здесь(DragOver) нужно указать сможет ли наш тривью принять чужие данные.... понятно?)
← →
{RASkov} © (2007-12-28 01:25) [25]> [23] art36 © (28.12.07 01:23)
> А все-таки, что такое Accept и Source в этой строке:
Sender - он и в африке сендер, а Source это тот с которого "тащат"... )
← →
art36 © (2007-12-28 01:28) [26]Да, все понятно! Благодарю.
СПАСИБО
может кто на этот вопрос ответит?
http://delphimaster.net/view/2-1198780216/
← →
{RASkov} © (2007-12-28 01:29) [27]> [26] art36 © (28.12.07 01:28)
> может кто на этот вопрос ответит?
http://delphimaster.net/view/1-1198792197/
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2008.01.27;
Скачать: [xml.tar.bz2];
Память: 0.55 MB
Время: 0.012 c