Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.02.2013, 20:47   #11
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
но удаляются в реале 2 пункта из 1 меню, почему?
Цитата:
Код:
property Items: TTreeNodes read FTreeNodes write SetTreeNodes;

procedure TTreeNodes.Delete(Node: TTreeNode);
begin
  Node.Delete;
end;

procedure TTreeNode.Delete;
begin
  if not Deleting then
    Free;
end;
Код:
                            TreeView1.Items.Delete(TreeView2.Selected);
                            TreeView2.Items.Delete(TreeView2.Selected);
==
Код:
TreeView2.selected.Delete;
TreeView2.Selected.Delete;
Без разницы откуда удалять, главное ЧТО удаляем.
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 24.02.2013, 21:08   #12
Host-2013
Пользователь
 
Регистрация: 02.02.2013
Сообщений: 63
По умолчанию

Цитата:
Сообщение от evg_m Посмотреть сообщение
Код:
                            TreeView1.Items.Delete(TreeView2.Selected);
                            TreeView2.Items.Delete(TreeView2.Selected);
==
Код:
TreeView2.selected.Delete;
TreeView2.Selected.Delete;
Без разницы откуда удалять, главное ЧТО удаляем.
в таком случае подскажи как сделать чтобы при выборе какого либо узла в 1 дереве, автоматом выбирался бы параллельный узел во втором? OnClick? а если клик будет не по узлу? там же много свободного места и помимо узлов... там еще правда много событий, только я не знаю какое из них что значит... не работал раньше с ним
п.с. и еще кстати интересно как реализовать перетаскивание узлов? OnDrag\Drop?

Последний раз редактировалось Host-2013; 24.02.2013 в 21:11.
Host-2013 вне форума Ответить с цитированием
Старый 24.02.2013, 21:25   #13
Host-2013
Пользователь
 
Регистрация: 02.02.2013
Сообщений: 63
По умолчанию

а все, нашел: OnChange, но все равно остается вопрос как выделить во втором дереве узел выбранный в первом? (деревья абсолютно параллельны) пытаюсь TreeView1.Selected:= TreeView2.Selected; он мне ошибки выдает
Host-2013 вне форума Ответить с цитированием
Старый 24.02.2013, 21:39   #14
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Код:
procedure TForm1.TreeView1Change(Sender: TObject; Node: TTreeNode);
begin
  TreeView2.Selected:=TreeView2.Items[TreeView1.Selected.AbsoluteIndex];
end;
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 24.02.2013, 22:19   #15
Host-2013
Пользователь
 
Регистрация: 02.02.2013
Сообщений: 63
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Код:
procedure TForm1.TreeView1Change(Sender: TObject; Node: TTreeNode);
begin
  TreeView2.Selected:=TreeView2.Items[TreeView1.Selected.AbsoluteIndex];
end;
работает спасибо, а почему во втором дереве не выделяется при этом узел?
переприсвоение эдитов происходит, а выделения то нет а по хорошему лучше бы оно было...

п.с. и про перетаскивание узлов по прежнему интересует

Последний раз редактировалось Host-2013; 24.02.2013 в 22:22.
Host-2013 вне форума Ответить с цитированием
Старый 24.02.2013, 23:03   #16
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
почему во втором дереве не выделяется при этом узел?
HideSelection:=False;
Цитата:
перетаскивание узлов по прежнему интересует
А как тогда с параллельностью деревьев быть - рухнет

ADD

О-о-о мама мия, сколько я постов наплодил 5000 - очень кругло
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 24.02.2013 в 23:19.
Аватар вне форума Ответить с цитированием
Старый 24.02.2013, 23:29   #17
Host-2013
Пользователь
 
Регистрация: 02.02.2013
Сообщений: 63
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
HideSelection:=False;
помогло спасибо
Цитата:
Сообщение от Аватар Посмотреть сообщение
А как тогда с параллельностью деревьев быть - рухнет
почему рухнет? надо просто синхронно перетаскивать - перетаскиваешь и автоматом перетаскивается во втором дереве
Цитата:
Сообщение от Аватар Посмотреть сообщение
ADD
что?
Цитата:
Сообщение от Аватар Посмотреть сообщение
О-о-о мама мия, сколько я постов наплодил 5000 - очень кругло
поздрям!
Host-2013 вне форума Ответить с цитированием
Старый 26.02.2013, 15:41   #18
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

А смысл в двух таких?
Цитата:
(деревья абсолютно параллельны)
Данные можно хранить и во внутренних структурах. Tnode.Data к примеру. Доставая их оттуда по мере надобности.
Перетаскивать (для изменения иерархии) можно и внутри одного дерева.
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 27.02.2013, 14:38   #19
Host-2013
Пользователь
 
Регистрация: 02.02.2013
Сообщений: 63
По умолчанию

Цитата:
Сообщение от evg_m Посмотреть сообщение
А смысл в двух таких?


Данные можно хранить и во внутренних структурах. Tnode.Data к примеру. Доставая их оттуда по мере надобности.
Перетаскивать (для изменения иерархии) можно и внутри одного дерева.
а смысл в том что одно дерево это названия пунктов меню, а второе команды выполняемые при нажатии...

п.с. кстати АП !!! меня по прежнему интересует как сделать перетаскивание
Host-2013 вне форума Ответить с цитированием
Старый 27.02.2013, 15:26   #20
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
а смысл в том что одно дерево это названия пунктов меню, а второе команды выполняемые при нажатии...
а команды (именно команды а не меню связанные с этими командами) тоже имеют иерархию, чтобы пихать в дерево для показа.
Скорее это простой список (такой как ActionList) да и то он нужен если мы можем к одной команде (Action) привязать несколько разных меню(MenuItem) и хотим иметь возможность удалив команду тут же удалить все ее меню.

Menu <->TreeView
MenuItem <-> TItemNode
MenuItem.Action <-> TItemNode.Data

ActionList <-> ListBox
Action <-> TItemList (или как он там зовется)

Цитата:
меня по прежнему интересует как сделать перетаскивание
Код:
TreeView.Selected.Moveto(TreeView1.DropTarget, ???? );
в нужное время и в нужном месте.
5 минут просмотра F1 TreeView TTreeNode и пара экспериментов.

и еще раз прощаемся с синхронностью двух "одинаковых" деревьев.
Когда-нибудь наберется критическая масса таких прощаний (после очередной правки кода) и ... увидим два НЕодинаковых.
Если хотим всегда одинаковых то лучше чтобы первый знал про свой второй (второй про свой первый)
node1:=TreeView1.Add();
node2:=TReeView2.Add();
node1.Data:=node2; // первый знает про свой второй
node2.Data:=node1; // второй знает про свой первый
А еще лучше хранить ВСЕ данные в своем массиве а для TreeView оставить только отображение иерархии да чтоб еще знал какие данные ( node1.Data:=....) он отображает.
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 27.02.2013 в 15:38.
evg_m вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа для создания модулей/макетов для КМС LeoN Софт 0 02.12.2010 10:51
Программа для создания музыки Lemo Софт 7 04.06.2010 06:50
Программа для создания меню для сайта iukash Софт 3 06.06.2009 13:10
Программа для создания блоксхем BLooD Свободное общение 1 11.11.2007 18:17