Цветной текст в контролах Topic is solved

Это русская секция форума wxWidjets. В этой секции вы можете обсуждать любые вопросы, связанные с wxWidgets на вашем родном языке.
Post Reply
Tapok
Earned a small fee
Earned a small fee
Posts: 22
Joined: Sun Aug 12, 2012 3:41 pm

Цветной текст в контролах

Post by Tapok » Fri Jan 18, 2013 5:19 pm

Задача: контрол похожий на wxTreeCtrl либо wxListBox с возможностью форматированого текста (разного цвета).
Пример:
wxTreeCtrl.png
wxTreeCtrl.png (2.15 KiB) Viewed 8422 times
wxListBox.png
wxListBox.png (1.91 KiB) Viewed 8422 times
Вопрос: можно "скрестить" уже существующие контролы (wxRichText и wxListBox) или прийдется дописывать wxRichText?
Интересуют готовые решения либо советы по поводу улучшения wxRichText (его альтернативы если есть) т.к. если верить этому http://docs.wxwidgets.org/trunk/classwx ... _graph.png то перед текстБоксом есть множество его родителей и, что то мне подсказывает, что финальный wxTextBox мне не нужен, а нужно "допиливать" одного из его родителей.

*мысли в слух* может не стоит с этим парится и написать с нуля контрол, используя контекст устройства?
win7x64, codeblocks 12.11, MinGW 5.1.4, wxWidgets 2.8.12

User avatar
T-Rex
Moderator
Moderator
Posts: 1185
Joined: Sat Oct 23, 2004 9:58 am
Location: Zaporizhzhya, Ukraine
Contact:

Re: Цветной текст в контролах

Post by T-Rex » Sat Jan 19, 2013 1:18 am

По листбоксу - можно wxSimpleHtmlListBox.
По три конролу - вряд ли. Там только цвет для итема целиком. Разве что нативным способом для каждой платформы.
Как-то делали кастомный три контрол где поверх каждого итема рисовался кастомный контрол. Это криво, конечно, но если сильно хочется, можно owner-drawn какой-то статик текст придумать и его поверх итемов показвать.

Tapok
Earned a small fee
Earned a small fee
Posts: 22
Joined: Sun Aug 12, 2012 3:41 pm

Re: Цветной текст в контролах

Post by Tapok » Sat Jan 19, 2013 9:06 am

Спасибо за подсказку. Решил использовать wxHtmlListBox т.к. написанно, что wxSimpleHtmlListBox медленный, а мне нужно отображать большие объемы данных.
Т.к. "This is still an abstract base class and you will need to derive your own class from it" попытался создать класс наследник от wxHtmlListBox, также сказано "you will only need to override a single wxHtmlListBox::OnGetItem function"

Сам класс:

Code: Select all

class myHtmlListBox: public wxHtmlListBox
{
    virtual wxString myHtmlListBox::OnGetItem(size_t n)const
    {
        return _T("lalala");
    }
};
Переменные в классе главной формы:

Code: Select all

myHtmlListBox* HtmlListBox1;
        static const long ID_HTMLLISTBOX1;
"Заполнение" переменных:

Code: Select all

const long AkeyFrame::ID_HTMLLISTBOX1 = wxNewId();
Создание контрола, строчка лежит в конструкторе главной формы.

Code: Select all

HtmlListBox1->Create(this, ID_HTMLLISTBOX1, wxDefaultPosition, wxDefaultSize, 0, _T("ID_HTMLLISTBOX1"));
Все компилируется, но программа падает в рантайме с ошибкой "Process terminated with status -1073741819 (0 minutes, 1 seconds)"

ЗЫ существена ли разница в скорости wxHtmlListBox и wxSimpleHtmlListBox?
win7x64, codeblocks 12.11, MinGW 5.1.4, wxWidgets 2.8.12

User avatar
T-Rex
Moderator
Moderator
Posts: 1185
Joined: Sat Oct 23, 2004 9:58 am
Location: Zaporizhzhya, Ukraine
Contact:

Re: Цветной текст в контролах

Post by T-Rex » Sat Jan 19, 2013 11:22 am

Существенна. Виртуальный режим у обычного быстрее ж. В примерах вроде есть, можно там посмотреть и разобраться почему валится

Post Reply