![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Sergey Uglach |
|
|||
|
Unregistered |
Помогите, пожалуйста! Как организовать D&D в ОДНОМ TreeView'е (перетащить node из одного в другой, то бишь получить указатели на перетаскиваемый узел и узел-приемник)? Как я ни пытался, все равно Sender=TreeView1 и Source=TreView1.
Огромное спасибо всем откликнувшимся. Сергей Углач ([email protected]) |
|||
|
||||
| Step |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5151 Регистрация: 26.9.2002 Где: дурдом.UA Репутация: 5 Всего: 25 |
а у тебя между разными элементами получается или нет.
-------------------- - Дурак учится на своих ошибках, умный на чужих. - умные учатся у дураков |
|||
|
||||
| Guest_serg |
|
|||
|
Unregistered |
Доброго времени суток, Анатолий!
У компон., который тащишь, генерится событие OnStartDrag со всеми параметрами. У комп., над которыми тащишь, генерится событие OnDragOver, тоже со всеми параметрами. У комп. в который кидаешь, опять таки генерится соотв. событие, и тоже с параметрами. Так что ДОЛЖНО получиться. Я не проверял это на практике, но уверен, что заработает. Если у тебя не получается, то мыльни вопросы на [email protected]. С уважением, Сергей. |
|||
|
||||
| Step |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5151 Регистрация: 26.9.2002 Где: дурдом.UA Репутация: 5 Всего: 25 |
вопрос может заключаться в неправильной настройки.
А именно меня смущает Sender=TreeView1, но скажу сразу я програмирую под визуал и там бы это не прошло Sender это чу-чуть не то -------------------- - Дурак учится на своих ошибках, умный на чужих. - умные учатся у дураков |
|||
|
||||
| Sergey Uglach |
|
|||
|
Unregistered |
Я пишу это безобразие в Builder'е.
Меня интересует как получить ссылку на объект TTreeNode, над которым я уронил то, что тащу. В параметрах обработчика указывается объект-"хозяин", то есть TTreeView. И тащится тоже TTreeView (вместо TTreeNode). Я подозреваю, что можно как-нибудь прикрутить к TDragObject ссылку на нужный TTreeNode при старте драга, но не нашел никаких сведений, как это сделать. Тем более непонятно, как узнать, над каким нодом этот объект был брошен. То есть как-то так - над чем поднял, над тем и уронил. С уважением, Сергей. |
|||
|
||||
| Step |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5151 Регистрация: 26.9.2002 Где: дурдом.UA Репутация: 5 Всего: 25 |
код выложи
-------------------- - Дурак учится на своих ошибках, умный на чужих. - умные учатся у дураков |
|||
|
||||
| Sergey Uglach |
|
|||
|
Unregistered |
Заработала зараза !!!
Вот укороченный код. Я в конфе новичок, не знаю, можно ли кидать столько, так что простите если что. TTreeView *TreeView1; //пресловутое дерево void __fastcall TForm1::TreeView1DragDrop(TObject *Sender, TObject *Source, int X, int Y) { AnsiString CN3 = (((TTreeView*)Sender)->GetNodeAt(X, Y))->Text; // куда кидаешь (его подпись) AnsiString CN4 = ((TTreeView*)Sender)->Selected->Text; // что кидаешь // твой обработчик драги------------ } void __fastcall TForm1::TreeView1DragOver(TObject *Sender, TObject *Source, int X, int Y, TDragState State, bool &Accept) {Accept = (Sender->ClassNameIs("TTreeView")) && (((TTreeView*)Sender)->Name = "TreeView1"); // ^проверка на возможность кидания (рекомендую задействовать X и Y по предыд. подобию) } void __fastcall TForm1::TreeView1StartDrag(TObject *Sender, TDragObject *&DragObject) { DragObject = new (TDragObject); } Буду очень признателен за замечания и дополнения. С уважением, Сергей. |
|||
|
||||
| Step |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5151 Регистрация: 26.9.2002 Где: дурдом.UA Репутация: 5 Всего: 25 |
-------------------- - Дурак учится на своих ошибках, умный на чужих. - умные учатся у дураков |
|||
|
||||
| Sergey Uglach |
|
|||
|
Unregistered |
Для определения нода, над которым тащишь и куда кидаешь, использовал GetNodeAt(X, Y). Хотя мне не нравится привязка к координатам (как то оно не так...).
С уважением, Сергей. |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |