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 »

У wxGrid стоит EnableDragColSize();
Как можно отследить, что пользователь изменил положение колонок в wxGrid'е? Никак не могу найти нужное событие Event.
tan
wxWorld Domination!
wxWorld Domination!
Posts: 1471
Joined: Tue Nov 14, 2006 7:58 am
Location: Saint-Petersburg, Russia

Post by tan »

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 »

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

Code: Select all

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

И потом как узнать каким номером была колонка до перетаскивания и каким стала после, если там только event.GetRowOrCol()?
tan
wxWorld Domination!
wxWorld Domination!
Posts: 1471
Joined: Tue Nov 14, 2006 7:58 am
Location: Saint-Petersburg, Russia

Post by tan »

Ну дык более понятно надо вопрос ставить :)
В письме ясно написано
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 »

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

+ такая особенность как колонку не таскай у нее будет тот же номер (ColID) что у нее был при создании т.е. будит колонка стоять последней, но если она при создании была первой слева номер у нее будет 0 (GetCol возвращает), хоть стреляйся, хотя с другой стороны удобно.
Видимо надо перебирать все колонки и делать GetColPos
tan
wxWorld Domination!
wxWorld Domination!
Posts: 1471
Joined: Tue Nov 14, 2006 7:58 am
Location: Saint-Petersburg, Russia

Post by tan »

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 »

Все работает спасибо. Закрываю
tan
wxWorld Domination!
wxWorld Domination!
Posts: 1471
Joined: Tue Nov 14, 2006 7:58 am
Location: Saint-Petersburg, Russia

Post by tan »

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 »

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

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