Event на Drag&Drop Column для wxGrid Topic is solved

Это русская секция форума wxWidjets. В этой секции вы можете обсуждать любые вопросы, связанные с wxWidgets на вашем родном языке.
Post Reply
borr_1
Super wx Problem Solver
Super wx Problem Solver
Posts: 362
Joined: Wed Mar 07, 2007 8:10 am
Location: Russia, Shakhty

Event на Drag&Drop Column для wxGrid

Post by borr_1 » Fri Oct 24, 2008 8:57 am

У wxGrid стоит EnableDragColSize();
Как можно отследить, что пользователь изменил положение колонок в wxGrid'е? Никак не могу найти нужное событие Event.

tan
Moderator
Moderator
Posts: 1471
Joined: Tue Nov 14, 2006 7:58 am
Location: Saint-Petersburg, Russia

Post by tan » Fri Oct 24, 2008 10:17 am

EVT_GRID_COL_SIZE(func) The user resized a column by dragging it. Processes a wxEVT_GRID_COL_SIZE.
EVT_GRID_ROW_SIZE(func) The user resized a row by dragging it. Processes a wxEVT_GRID_ROW_SIZE.
EVT_GRID_CMD_COL_SIZE(id, func) The user resized a column by dragging it; variant taking a window identifier. Processes a wxEVT_GRID_COL_SIZE.
EVT_GRID_CMD_ROW_SIZE(id, func) The user resized a row by dragging it; variant taking a window identifier. Processes a wxEVT_GRID_ROW_SIZE.
OS: Windows XP Pro
Compiler: MSVC++ 7.1
wxWidgets: 2.8.10

borr_1
Super wx Problem Solver
Super wx Problem Solver
Posts: 362
Joined: Wed Mar 07, 2007 8:10 am
Location: Russia, Shakhty

Post by borr_1 » Fri Oct 24, 2008 11:12 am

Я пробовал - не помогло

Code: Select all

Connect(ID_GRID1, wxEVT_GRID_COL_SIZE, (wxObjectEventFunction)&ViewArendators::OnGridColMove);
...
void ViewArendators::OnGridColMove(wxGridSizeEvent& event)
Функция вызывается только в том случае если изменяешь ширину колонки а если ее перетаскиваешь, то ничего не происходит. Или я ее неправильно готовлю?

И потом как узнать каким номером была колонка до перетаскивания и каким стала после, если там только event.GetRowOrCol()?

tan
Moderator
Moderator
Posts: 1471
Joined: Tue Nov 14, 2006 7:58 am
Location: Saint-Petersburg, Russia

Post by tan » Fri Oct 24, 2008 11:53 am

Ну дык более понятно надо вопрос ставить :)
В письме ясно написано
borr_1 wrote: У wxGrid стоит EnableDragColSize();
т.е. речь вроде идет о сайзинге, для перетаскивания есть EnableDragColMove().

Короче, для этого есть аналоги:
EVT_GRID_COL_MOVE(func) и все остальные по аналогии, только они берут параметр wxGridEvent, из него можно получить номер колонки, которую перетащил (т.е. номер, который она имела до перетаскивания :)), как получить новый номер, сразу не скажу, наверное стоит попробовать по координатам мыши - GetPosition().
OS: Windows XP Pro
Compiler: MSVC++ 7.1
wxWidgets: 2.8.10

borr_1
Super wx Problem Solver
Super wx Problem Solver
Posts: 362
Joined: Wed Mar 07, 2007 8:10 am
Location: Russia, Shakhty

Post by borr_1 » Fri Oct 24, 2008 12:31 pm

Да, да конечно ColMove - это я описался. Попробовал, wxEVT_GRID_COL_MOVE действительно отлавливает событие перемещения колонки.

+ такая особенность как колонку не таскай у нее будет тот же номер (ColID) что у нее был при создании т.е. будит колонка стоять последней, но если она при создании была первой слева номер у нее будет 0 (GetCol возвращает), хоть стреляйся, хотя с другой стороны удобно.
Видимо надо перебирать все колонки и делать GetColPos

tan
Moderator
Moderator
Posts: 1471
Joined: Tue Nov 14, 2006 7:58 am
Location: Saint-Petersburg, Russia

Post by tan » Fri Oct 24, 2008 12:41 pm

borr_1 wrote:Да, да конечно ColMove - это я опИсался.
С кем не бывает :)

BTW, как я понимаю, в принципе, проблема решена. Тогды неплохо бы закрыть тему, приняв мой ответ. И, между прочим, есть еще несколько твоих тем, вроде отвеченных, но не закрытых. Правила форума следует блюсти :)
OS: Windows XP Pro
Compiler: MSVC++ 7.1
wxWidgets: 2.8.10

borr_1
Super wx Problem Solver
Super wx Problem Solver
Posts: 362
Joined: Wed Mar 07, 2007 8:10 am
Location: Russia, Shakhty

Post by borr_1 » Sat Oct 25, 2008 5:31 am

Все работает спасибо. Закрываю

tan
Moderator
Moderator
Posts: 1471
Joined: Tue Nov 14, 2006 7:58 am
Location: Saint-Petersburg, Russia

Post by tan » Sat Oct 25, 2008 6:04 am

borr_1 wrote:Все работает спасибо. Закрываю
Вообще-то я имел в виду принять мой ответ (собственно, как решающий проблему). Даю еще один шанс :)
OS: Windows XP Pro
Compiler: MSVC++ 7.1
wxWidgets: 2.8.10

borr_1
Super wx Problem Solver
Super wx Problem Solver
Posts: 362
Joined: Wed Mar 07, 2007 8:10 am
Location: Russia, Shakhty

Post by borr_1 » Sat Oct 25, 2008 6:42 am

Так навеяло...
Модератора может обидеть каждый, но не всяк успеет извиниться :D

Я там еще ошибся ты мне тут помог я не туда галочку поставил (accepted answer) а убрать не могу
http://forums.wxwidgets.org/viewtopic.php?t=20662
и тут
http://forums.wxwidgets.org/viewtopic.php?t=20694

Post Reply