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 я так и не придумал, а у вас мысли есть?

Related:

5 Responses to “CreateTextSizer, мелочь а приятно”

  1. Может для того, чтобы потом можно было в цикле проходиться по всем сайзерам и для каждой строки менять свои параметры? Или настройки межстроковых отступов менять…

  2. Я пытался межстроковые отступы задавать, но чего-то у меня не получилось, разве что действительно уже после создания ходить и менять ихю

  3. В старом варианте у тебя 2 большие строчки создания сайзера, а в новом – только вызов функции с параметром – текст строки.
    Да и скорее всего последний код будет более правильно работать на разных платформах, где необходимо wrap-ать текст (см. что делает эта функция и что вызывает: wxTextSizerWrapper)

  4. (ну и ещё она служит для вывода информационных сообщений – поэтому акселераторы “&” экранирует).

  5. Может быть, может быть. При случае попробую использовать