Настройка Grid Topic is solved

Это русская секция форума wxWidjets. В этой секции вы можете обсуждать любые вопросы, связанные с wxWidgets на вашем родном языке.
Post Reply
midisa
Earned some good credits
Earned some good credits
Posts: 113
Joined: Tue Jun 22, 2010 4:15 pm
Contact:

Настройка Grid

Post by midisa » Tue Aug 03, 2010 6:59 am

Как установить количество полей (строк) в гриде?

Я хочу создать функцию наполнения грида данными. изначально установить количество строк равным нулю и наполнять его функцией m_grid->AppendRows(1,true);

и какое событие использовать которое вызывается только один раз при открытии окна? мне нужно инициализировать грид и другие элементы управления.

Mojo
Super wx Problem Solver
Super wx Problem Solver
Posts: 401
Joined: Wed Sep 21, 2005 8:17 am
Location: Rostov-on-Don, Southern Russia

Re: Настройка Grid

Post by Mojo » Tue Aug 03, 2010 11:44 am

midisa wrote:Как установить количество полей (строк) в гриде?

Я хочу создать функцию наполнения грида данными. изначально установить количество строк равным нулю и наполнять его функцией m_grid->AppendRows(1,true);

и какое событие использовать которое вызывается только один раз при открытии окна? мне нужно инициализировать грид и другие элементы управления.
http://docs.wxwidgets.org/2.8.11/wx_wxgrid.html
Win XP HE SP3, Vista
Xubuntu 12.04 LTS
wxWidgets-2.9.5
wxWidgets-3.0.0

Mojo
Super wx Problem Solver
Super wx Problem Solver
Posts: 401
Joined: Wed Sep 21, 2005 8:17 am
Location: Rostov-on-Don, Southern Russia

Post by Mojo » Tue Aug 03, 2010 11:49 am

создаем пустую решетку m_grid1->CreateGrid( 0, 0 );
или полную с 5-ю рядами и 5-ю колонками m_grid1->CreateGrid( 5, 5 );

Но если создали пустую, то потом в коде можно динамически добавить ряды или колонки: AppendRows(5) или AppendCols(5)
Win XP HE SP3, Vista
Xubuntu 12.04 LTS
wxWidgets-2.9.5
wxWidgets-3.0.0

Mojo
Super wx Problem Solver
Super wx Problem Solver
Posts: 401
Joined: Wed Sep 21, 2005 8:17 am
Location: Rostov-on-Don, Southern Russia

Re: Настройка Grid

Post by Mojo » Tue Aug 03, 2010 11:52 am

midisa wrote:
и какое событие использовать которое вызывается только один раз при открытии окна? мне нужно инициализировать грид и другие элементы управления.
В конструкторе производного класса от wxFrame

Самый лучший способ это помотреть каталог samples (в одном каталоге с wxWidgets) там примеры приложений и там все расписано подробно.
Last edited by Mojo on Tue Aug 03, 2010 12:21 pm, edited 1 time in total.
Win XP HE SP3, Vista
Xubuntu 12.04 LTS
wxWidgets-2.9.5
wxWidgets-3.0.0

Mojo
Super wx Problem Solver
Super wx Problem Solver
Posts: 401
Joined: Wed Sep 21, 2005 8:17 am
Location: Rostov-on-Don, Southern Russia

Re: Настройка Grid

Post by Mojo » Tue Aug 03, 2010 11:56 am

midisa wrote:...... его функцией m_grid->AppendRows(1,true);
......
true можно не устанавливать, оно уже установлено по умолчанию.

т.е. можно просто m_grid->AppendRows(1);
Win XP HE SP3, Vista
Xubuntu 12.04 LTS
wxWidgets-2.9.5
wxWidgets-3.0.0

midisa
Earned some good credits
Earned some good credits
Posts: 113
Joined: Tue Jun 22, 2010 4:15 pm
Contact:

Re: Настройка Grid

Post by midisa » Wed Aug 04, 2010 6:10 am

как вы собираетесь удалять записи из грида? Например.
Вы открыли один рекордсет, там 10 строк и 10 полей. тут же открываете другой рекордсет там 5 строк и 5 полей.
Вы каждый раз создаете новый грид?

Правильно было бы так:
1. Инициализация (все установили по нулям).
2. Наполнили 10 строк 10 полей.
3. Инициализация (все установили по нулям).
4. Наполнили 5 строк 5 полей.

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

ИТОГ: Как программно установить количество строк и полей в гриде?

midisa
Earned some good credits
Earned some good credits
Posts: 113
Joined: Tue Jun 22, 2010 4:15 pm
Contact:

Post by midisa » Wed Aug 04, 2010 6:29 am

Не знаю. Правильно сделал или не правильно.
В общем буду делать так:

m_grid->DeleteRows(0,m_grid->GetRows(),true);

Mojo
Super wx Problem Solver
Super wx Problem Solver
Posts: 401
Joined: Wed Sep 21, 2005 8:17 am
Location: Rostov-on-Don, Southern Russia

Post by Mojo » Wed Aug 04, 2010 9:53 am

midisa wrote:Не знаю. Правильно сделал или не правильно.
В общем буду делать так:

m_grid->DeleteRows(0,m_grid->GetRows(),true);
Правильно, с колонками все так же....

После удаления и вставки новых рядов и колонок, для пущей надежности можно обновить решетку m_grid->ForceRefresh();
Win XP HE SP3, Vista
Xubuntu 12.04 LTS
wxWidgets-2.9.5
wxWidgets-3.0.0

midisa
Earned some good credits
Earned some good credits
Posts: 113
Joined: Tue Jun 22, 2010 4:15 pm
Contact:

Post by midisa » Mon Aug 09, 2010 8:24 am

Как сделать подсветку текущей выбранной строки?
Например я выделил другой элемент управления, и мне стало не видно какая строка выбрана в гриде.

В винде был виден курсор выбранной строки. Как здесь это сделать?

midisa
Earned some good credits
Earned some good credits
Posts: 113
Joined: Tue Jun 22, 2010 4:15 pm
Contact:

Post by midisa » Tue Aug 17, 2010 6:07 am

Если курсор переходит на другой элемент управления, то не вижно какая строка выбрана в гриде. Как сделать подсветку выбранной строки? Или может есть возможность отображать указатель текущей строки?

Post Reply