CreateTextSizer, мелочь а приятно
November 21st, 2009 Begemot Posted in Использование
“О сколько нам открытий чудных, готовит ковыряния миг” почти (с)
В сорцах либы нашел такой код
topsizer->Add(CreateTextSizer(message), flagsBorder2);
Заинтересовался что такое CreateTextSizer(), в документации нету. В сорцах написанно
// splits text up at newlines and places the
// lines into a vertical wxBoxSizer
wxSizer *CreateTextSizer( const wxString &message );
Решил что можно быстро и компактно размещать текст. В результате после следующего кода
wxSizerFlags flagsBorder;
flagsBorder.Border(wxALL, 10);
topSizer->Add(CreateTextSizer(_T("First line \nSecond Line \n\nNext")), flagsBorder);
Сразу четыре сайзера с текстом, но ведь точно такой же визуальный эффект дает и
wxStaticText * itemStaticText = new wxStaticText;
itemStaticText->Create(this, wxID_STATIC, _("First line \nSecond Line \n\nNext"), wxDefaultPosition, wxDefaultSize, 0);
topSizer->Add(itemStaticText, 0, wxGROW | wxALL, 10);
те же четыре строчки на экране, только в 1 сайзере.
Зачем и когда нужен CreateTextSizer я так и не придумал, а у вас мысли есть?
November 22nd, 2009 at 2:52 pm
Может для того, чтобы потом можно было в цикле проходиться по всем сайзерам и для каждой строки менять свои параметры? Или настройки межстроковых отступов менять…
November 22nd, 2009 at 3:04 pm
Я пытался межстроковые отступы задавать, но чего-то у меня не получилось, разве что действительно уже после создания ходить и менять ихю
November 22nd, 2009 at 3:46 pm
В старом варианте у тебя 2 большие строчки создания сайзера, а в новом – только вызов функции с параметром – текст строки.
Да и скорее всего последний код будет более правильно работать на разных платформах, где необходимо wrap-ать текст (см. что делает эта функция и что вызывает: wxTextSizerWrapper)
November 22nd, 2009 at 3:47 pm
(ну и ещё она служит для вывода информационных сообщений – поэтому акселераторы “&” экранирует).
November 22nd, 2009 at 3:53 pm
Может быть, может быть. При случае попробую использовать