Есть wxGrid. Каким образом можно в одну из ее ячеек добавить кнопку, как показано на картинке?
Спасибо.
Добавление кнопки в ячейку wxGrid Topic is solved
Спасибо!T-Rex wrote:wxPropertyGrid
Вот только не совсем понятно, как происходит добавление кнопки в ячейку.
То ли поверх каждой ячейки накладывает прозрачная панель с кнопкой, то ли как-то замещается Renderer и Editor, то ли еще как-то. Так как никогда не общался с такого рода технологиями, то код кажется, мягко говоря, размазанным и уловить суть не особо получается.
Может быть в двух словах кто-то сможет объяснить принцип?
То ли поверх каждой ячейки накладывает прозрачная панель с кнопкой, то ли как-то замещается Renderer и Editor, то ли еще как-то. Так как никогда не общался с такого рода технологиями, то код кажется, мягко говоря, размазанным и уловить суть не особо получается.
Может быть в двух словах кто-то сможет объяснить принцип?
- T-Rex
- Moderator
- Posts: 1249
- Joined: Sat Oct 23, 2004 9:58 am
- Location: Zaporizhzhya, Ukraine
- Contact:
Так эээ.. ну тут два варианта:
- Рендерить кнопку руками
- Размещать контрол/кнопку руками в виде дочернего контрола, обрабатывать изменения размеров ячейки и перемещать кнопку куда надо.
Тебе что именно реализовать надо, для wxGrid конпку в ячейке или устроит функционал wxPropertyGrid?
На http://wxwidgets.info я недавно две статьи постил по кастомизации wxGrid'а.
- Рендерить кнопку руками
- Размещать контрол/кнопку руками в виде дочернего контрола, обрабатывать изменения размеров ячейки и перемещать кнопку куда надо.
Тебе что именно реализовать надо, для wxGrid конпку в ячейке или устроит функционал wxPropertyGrid?
На http://wxwidgets.info я недавно две статьи постил по кастомизации wxGrid'а.
Спасибо за помощь.T-Rex wrote:Так эээ.. ну тут два варианта:
- Рендерить кнопку руками
- Размещать контрол/кнопку руками в виде дочернего контрола, обрабатывать изменения размеров ячейки и перемещать кнопку куда надо.
Тебе что именно реализовать надо, для wxGrid конпку в ячейке или устроит функционал wxPropertyGrid?
На http://wxwidgets.info я недавно две статьи постил по кастомизации wxGrid'а.
Задача такова, что нужно для wxGrid для произвольной ячейки уметь ее сделать ButtonType (то есть текст + кнопка справа) и чтобы при нажатии на кнопку вызывалась некая функция.
В идеале планируется расширить класс wxGrid, чтобы был метод что-то вроде setButtonTypeCell(row, column, btn_name, callback), где колбэк - указатель на функцию, вызываемую при нажатии кнопки.
Кнопку руками рендерить как я понимаю не получится, так как для нее требуется стандартный вид на любой ОС, на которую будет портирован проект. На данный момент это только для винды реализуется, но Windows only функции использовать по вышеупомянутой причине нельзя.
Соответственно, получается, что нужно именно дочерним элементом кнопку добавлять, что я пытаюсь делать, но почему-то при создании кнопки с parent = grid ее не видно, если добавляю новую панель, а на нее кнопку, то она появляется, но при манипуляциях с grid панель исчезает и появляется кусками не совсем понятным образом.
Функционал PropertyGrid не устроит, так как там слишком много лишнего для моей задачи и не хочется полагаться на код сторонних разработчиков(а).
Сейчас потихоньку осиливаю Cross-platform GUI Programming with wxWidgets, думаю, что проблема в том, что некоторых принципов базовых пока не знаю.
PS. Статьи читал, но полностью переварить не смог
[offtop]
Там пару косяков можно в оформлении пофиксить:
1. Последние скриншоты не видны (в оригинале все ок) в обоих статьях
2. В середине предпоследней статьи в листинг кода врезался авторский текст про Example.cpp
[/offtop]
OS: Windows Vista [6.0.6]
Compiler: MSVC++ 8.0
wxWidgets: 2.8.9
Compiler: MSVC++ 8.0
wxWidgets: 2.8.9