borr_1 wrote:раз пошло такое шамаство с бубном пробуй тогда и wxDynamicCast
Нее с wxDynamicCast тем более работать не будет, wxDynamicCast работает только с объектами производными от wxObject а все рендереры в wxWidgets не являются дочерними от wxObject....
Я уже сталкивался с этой проблемой в этом посте:
http://forums.wxwidgets.org/viewtopic.php?t=28288
Я тут погонял в минимальном приложении wxGridCellAutoWrapStringRenderer и пришел к выводу, что это глючит wxGridCellAutoWrapStringRenderer.
Расклад такой, сначала я сделал функцию в отдельном файле mystuff.cpp
Code: Select all
void CheckAutoWrap(wxGrid *grid)
{
wxGridCellAutoWrapStringRenderer* defWrapRenderer = dynamic_cast<wxGridCellAutoWrapStringRenderer*>(grid->GetDefaultRenderer());
//wxGridCellAutoWrapStringRenderer* defWrapRenderer = (wxGridCellAutoWrapStringRenderer*) grid->GetDefaultRenderer();
if (defWrapRenderer)
wxMessageBox( wxT("Автоперенос текста работает"), wxT("Автоперенос текста работает"), wxOK | wxICON_INFORMATION );
else
wxMessageBox( wxT("ШО ЗА ХРЕНЬ!! НИЧЕГО НЕ работает"), wxT("НИЧЕГО НЕ РАБОТАЕТ"), wxOK | wxICON_INFORMATION );
}
вызываю функцию в в обрабочтике кнопки:
Code: Select all
void MainFrame::OnButnClickOK( wxCommandEvent& event )
{
CheckAutoWrap(m_grid1);
}
Разумеется ничего не работает... затем я такую же функцию определи в mainframe.cpp но ток название CheckAutoWrap2(m_grid1) тоже ничего не работает.....
И наконец, просто вызываю код в обработчике другой кнопки:
Code: Select all
void MainFrame::OnBtnClickLoad( wxCommandEvent& event )
{
wxGridCellAutoWrapStringRenderer* defWrapRenderer = dynamic_cast<wxGridCellAutoWrapStringRenderer*>(m_grid1->GetDefaultRenderer());
//wxGridCellAutoWrapStringRenderer* defWrapRenderer = (wxGridCellAutoWrapStringRenderer*) grid->GetDefaultRenderer();
if (defWrapRenderer)
wxMessageBox( wxT("Автоперенос текста работает"), wxT("Автоперенос текста работает"), wxOK | wxICON_INFORMATION );
else
wxMessageBox( wxT("ШО ЗА ХРЕНЬ!! НИЧЕГО НЕ работает"), wxT("НИЧЕГО НЕ РАБОТАЕТ"), wxOK | wxICON_INFORMATION );
//event.Skip();
}
И тоже ничего не работает, таким образом, получается, что wxGridCellAutoWrapStringRenderer вообще некастится никаким образом...... хотя тип полиморфный, сверху него аж два родителя wxGridCellStringRenderer и wxGridCellRenderer, че делать не знаю...
нужно каким-то образом узнать, установлен ли в гриде перенос по словам или нет......
Зашел в тупик.