Сайзеры и их возможности Topic is solved

Это русская секция форума wxWidjets. В этой секции вы можете обсуждать любые вопросы, связанные с wxWidgets на вашем родном языке.
Post Reply
deniman
In need of some credit
In need of some credit
Posts: 9
Joined: Sat May 02, 2009 7:46 pm

Сайзеры и их возможности

Post by deniman » Sat Jul 18, 2009 11:01 pm

Не смог найти ответ на итересующий меня вопрос, поэтому спрашиваю здесь.
Возможно ли используя только одни сайзеры получить что-то проде control wrap'а?

Было:
Image

Стало:
Image

Kolya
Experienced Solver
Experienced Solver
Posts: 85
Joined: Mon Dec 11, 2006 11:35 am
Location: /dev/null

Re: Сайзеры и их возможности

Post by Kolya » Sat Jul 18, 2009 11:50 pm

Есть wxWrapSizer начиная с wxWidgets 2.9.0

Nikolay
Experienced Solver
Experienced Solver
Posts: 72
Joined: Wed Oct 10, 2007 4:27 am

Post by Nikolay » Mon Jul 20, 2009 10:12 am

О, супер, а он умеет wxStaticText заворачивать ?
Best regards, Nikolay
wxWidgets in russian
Small Notes Manager and Clipboard Manager with History written with wxWidgets

Kolya
Experienced Solver
Experienced Solver
Posts: 85
Joined: Mon Dec 11, 2006 11:35 am
Location: /dev/null

Post by Kolya » Mon Jul 20, 2009 10:11 pm

Nikolay wrote:О, супер, а он умеет wxStaticText заворачивать ?
wxStaticText сам заворачивает тест, только надо поставить пропорцию в сайзере или максимальный размер. А так wxWrapSizer не смотрит надо ли в wxStaticText что-либо заворачивать.
Также есть функция wxStaticText::Wrap

Nikolay
Experienced Solver
Experienced Solver
Posts: 72
Joined: Wed Oct 10, 2007 4:27 am

Post by Nikolay » Tue Jul 21, 2009 7:43 am

wxStaticText::Wrap это не совсем то..., хочется динамический метод.
wxStaticText сам заворачивает тест, только надо поставить пропорцию в сайзере
А про это хотелось бы подробнее, это недавно появилось или я что-то не так делал раньше? но мне такого эффекта достигнуть не удавалось.
Best regards, Nikolay
wxWidgets in russian
Small Notes Manager and Clipboard Manager with History written with wxWidgets

Kolya
Experienced Solver
Experienced Solver
Posts: 85
Joined: Mon Dec 11, 2006 11:35 am
Location: /dev/null

Post by Kolya » Tue Jul 21, 2009 2:53 pm

Nikolay wrote:но мне такого эффекта достигнуть не удавалось.
Вот заплатка где это показано. Ее надо применить к минимальному примеру.

Code: Select all

--- minimal.cpp.bak	2009-03-06 14:11:06.000000000 +0200
+++ minimal.cpp	2009-07-21 17:49:51.218750000 +0300
@@ -185,6 +185,12 @@
 
 void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event))
 {
+wxDialog *dlg = new wxDialog(this, wxID_ANY, wxString(_T("Test")), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER);
+dlg->SetSizer(new wxBoxSizer(wxVERTICAL));
+dlg->GetSizer()->Add(new wxStaticText(dlg, wxID_ANY, _T("test test test test test test test test test test test test test test test test test test test test test test test test test test test test test")), wxSizerFlags(1).Expand().Border());
+dlg->ShowModal();
+return ;
+
     wxMessageBox(wxString::Format(
                     _T("Welcome to %s!\n")
                     _T("\n")

deniman
In need of some credit
In need of some credit
Posts: 9
Joined: Sat May 02, 2009 7:46 pm

Re: Сайзеры и их возможности

Post by deniman » Wed Jul 22, 2009 1:03 am

Kolya wrote:Есть wxWrapSizer начиная с wxWidgets 2.9.0
Скачал с FTP wxWidgets-2.9.0-rc6 для MSW. Запустил семплы (с wxWrapSizer'ом там их два). Попробывал, порастягивал окошко туда сюда. Все свиду нормально. Изменил число эелентов, вот тут и увидел, как все "замечатльно". Впечатление такое, будто сайзер не доделал (возможно потому, что пока еще не финальная версия).

При первом появлении окна, некоторые контролы могут налазить друг на друга:
Image

При быстром ссужении, контролы не успевают перерисоваться. Также не всегда привильно срабатывает wrap:

Image Image

Kolya, за совет конечно спасибо. Но в нынешнем состоянии дел, wxWrapSizer мне не подходит. Сейчас пытаюсь сделать что-то свое, но столкнулся с проблеммой: при создании, сайзер не получает размеры, которые ему могут быть отведены владельцем (оно конечно понятно, ведь ситуации бывают разные). В результате не зная ширины, нет возможности узнать количество строк, а значит посчитать высоту сайзера. Если есть соображения на счет этого, буду рад всем советам.

Nikolay
Experienced Solver
Experienced Solver
Posts: 72
Joined: Wed Oct 10, 2007 4:27 am

Post by Nikolay » Fri Jul 24, 2009 11:22 am

Kolya wrote: Вот заплатка где это показано. Ее надо применить к минимальному примеру.

Спасибо, работает. Буду знать, интересно почему это у меня не получалось.
Best regards, Nikolay
wxWidgets in russian
Small Notes Manager and Clipboard Manager with History written with wxWidgets

deniman
In need of some credit
In need of some credit
Posts: 9
Joined: Sat May 02, 2009 7:46 pm

Re: Сайзеры и их возможности

Post by deniman » Mon Jul 27, 2009 8:29 pm

Похоже, что вопро решен. Всем спасибо, тема закрыта.

Post Reply