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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Drag & Drop в одном TreeView 
:(
    Опции темы
Sergey Uglach
  Дата 13.2.2003, 00:34 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Помогите, пожалуйста! Как организовать D&D в ОДНОМ TreeView'е (перетащить node из одного в другой, то бишь получить указатели на перетаскиваемый узел и узел-приемник)? Как я ни пытался, все равно Sender=TreeView1 и Source=TreView1.
Огромное спасибо всем откликнувшимся.
Сергей Углач ([email protected])
  Вверх
Step
Дата 13.2.2003, 01:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5151
Регистрация: 26.9.2002
Где: дурдом.UA

Репутация: 5
Всего: 25



а у тебя между разными элементами получается или нет.


--------------------
- Дурак учится на своих ошибках, умный на чужих.
 - умные учатся у дураков
PM MAIL ICQ   Вверх
Guest_serg
Дата 13.2.2003, 01:31 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Доброго времени суток, Анатолий!
У компон., который тащишь, генерится событие OnStartDrag со всеми параметрами. У комп., над которыми тащишь, генерится событие OnDragOver, тоже со всеми параметрами. У комп. в который кидаешь, опять таки генерится соотв. событие, и тоже с параметрами. Так что ДОЛЖНО получиться. Я не проверял это на практике, но уверен, что заработает.

Если у тебя не получается, то мыльни вопросы на [email protected].


С уважением, Сергей.
  Вверх
Step
Дата 13.2.2003, 01:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5151
Регистрация: 26.9.2002
Где: дурдом.UA

Репутация: 5
Всего: 25



вопрос может заключаться в неправильной настройки.
А именно меня смущает Sender=TreeView1, но скажу сразу я програмирую под визуал и там бы это не прошло Sender это чу-чуть не то


--------------------
- Дурак учится на своих ошибках, умный на чужих.
 - умные учатся у дураков
PM MAIL ICQ   Вверх
Sergey Uglach
Дата 13.2.2003, 02:24 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Я пишу это безобразие в Builder'е.
Меня интересует как получить ссылку на объект TTreeNode, над которым я уронил то, что тащу. В параметрах обработчика указывается объект-"хозяин", то есть TTreeView. И тащится тоже TTreeView (вместо TTreeNode). Я подозреваю, что можно как-нибудь прикрутить к TDragObject ссылку на нужный TTreeNode при старте драга, но не нашел никаких сведений, как это сделать. Тем более непонятно, как узнать, над каким нодом этот объект был брошен. То есть как-то так - над чем поднял, над тем и уронил.


С уважением, Сергей.


  Вверх
Step
Дата 13.2.2003, 03:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5151
Регистрация: 26.9.2002
Где: дурдом.UA

Репутация: 5
Всего: 25



код выложи


--------------------
- Дурак учится на своих ошибках, умный на чужих.
 - умные учатся у дураков
PM MAIL ICQ   Вверх
Sergey Uglach
Дата 13.2.2003, 04:17 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


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
Дата 13.2.2003, 04:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5151
Регистрация: 26.9.2002
Где: дурдом.UA

Репутация: 5
Всего: 25



Цитата
Заработала зараза !!!
с чем и поздравляю, так я не понял где и что ты исправил, что оно у тебя заработало


--------------------
- Дурак учится на своих ошибках, умный на чужих.
 - умные учатся у дураков
PM MAIL ICQ   Вверх
Sergey Uglach
Дата 13.2.2003, 17:13 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Для определения нода, над которым тащишь и куда кидаешь, использовал GetNodeAt(X, Y). Хотя мне не нравится привязка к координатам (как то оно не так...).

С уважением, Сергей.
  Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.4295 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.