SetBackgroundColour в wxListItem Topic is solved

Это русская секция форума wxWidjets. В этой секции вы можете обсуждать любые вопросы, связанные с wxWidgets на вашем родном языке.
Post Reply
Gera555
Knows some wx things
Knows some wx things
Posts: 42
Joined: Mon Aug 02, 2010 11:49 am
Location: Ukraine, Odessa

SetBackgroundColour в wxListItem

Post by Gera555 » Mon Aug 23, 2010 10:14 am

Добрый день.
Подскажите плз можно ли закрасить одну ячейку в wxListCtrl под wxLC_REPORT конечно.

Такой код почему-то не к чему не приводит:

Code: Select all

        wxListItem trust;
        trust.m_col = 1;
	trust.m_itemId = index;
	if(source_list->GetItem(trust))
		trust.SetBackgroundColour(*wxRED);
	source_list->SetItem(trust);
Зато когда убираю trust.m_col = 1; замечательно закрашивает всю строку. Когда пытаюсь сделать то же при заполнении таблицы - результат такой же, могу только всю строчку покрасить.

Возможно ли такое вообще в wxWidgets? Если возможно то как?

borr_1
Super wx Problem Solver
Super wx Problem Solver
Posts: 362
Joined: Wed Mar 07, 2007 8:10 am
Location: Russia, Shakhty

Post by borr_1 » Mon Aug 23, 2010 11:37 am

Code: Select all

//сначала
FView->InsertColumn(0,wxT("Колонка"),wxLIST_FORMAT_LEFT, x );
long temp = FView->InsertItem(0,wxT("Проба"));
FView->SetItemTextColour(temp,wxColour(255, 255, 255));
FView->SetItemBackgroundColour(temp,wxColour(255, 0, 0));
//потом
wxListItem item;
item.SetId(0);
item.SetTextColour(wxColour(0, 0, 0));
item.SetBackgroundColour(wxColour(255, 255, 255));
FView->SetItem(item);
WinXP SP3, wx-2.8.10, MinGW-4.4.1, gdb-7.1.2, eclipse

Gera555
Knows some wx things
Knows some wx things
Posts: 42
Joined: Mon Aug 02, 2010 11:49 am
Location: Ukraine, Odessa

Post by Gera555 » Mon Aug 23, 2010 1:06 pm

Так и у меня работает. А так чтобы только одна ячейка?

В примере borr_1 устанавливается только Id, а чтобы выбрать ячейку надо еще и SetColumn сделать. Или я не прав?

Мой текущий код, который пока не делает что надо:

Code: Select all

wxListItem trust;
		switch(it->second.get_trust_level())
		{
		case t_source_info::rosTrustLevelHigh:
			source_list->SetItem(index,1,_("High"));
			break;
		case t_source_info::rosTrustLevelMedium:
			source_list->SetItem(index,1,_("Medium"));
			break;
		case t_source_info::rosTrustLevelLow:
			source_list->SetItem(index,1,_("Low"));
			break;
		default:
			source_list->SetItem(index,1,_("Unknown"));
			break;
		}
		
		trust.m_col = 1;
		trust.m_itemId = index;
		if(source_list->GetItem(trust))
			trust.SetBackgroundColour(*wxRED);
		source_list->SetItem(trust);
На сколько я понимаю пример borr_1 - он будет работать для wxListBox или если только один столбец.
Если я не прав, то тогда не понял, что надо изменить?

borr_1
Super wx Problem Solver
Super wx Problem Solver
Posts: 362
Joined: Wed Mar 07, 2007 8:10 am
Location: Russia, Shakhty

Post by borr_1 » Mon Aug 23, 2010 1:23 pm

Извини не так прочел да ты прав это на всю строку код. При твоем раскладе нужно пользоваться wxVListBox но там все самому перерисовывать или не морочить себе голову и взять Grid
WinXP SP3, wx-2.8.10, MinGW-4.4.1, gdb-7.1.2, eclipse

Gera555
Knows some wx things
Knows some wx things
Posts: 42
Joined: Mon Aug 02, 2010 11:49 am
Location: Ukraine, Odessa

Post by Gera555 » Mon Aug 23, 2010 1:43 pm

Я не могу одно понять - это только с бекграундом не работает? Потому что в samples wxWidget применяется такой маневр, но только с добавлением иконки.

borr_1
Super wx Problem Solver
Super wx Problem Solver
Posts: 362
Joined: Wed Mar 07, 2007 8:10 am
Location: Russia, Shakhty

Post by borr_1 » Mon Aug 23, 2010 2:14 pm

У меня тоже как col > 0 все ничего не происходит
Ребята переписывали ListCtrl там поминимуму изменений как я понял
http://forums.wxwidgets.org/viewtopic.p ... wxlistitem

ListCtrl использую редко честно говоря удивлен.
WinXP SP3, wx-2.8.10, MinGW-4.4.1, gdb-7.1.2, eclipse

Post Reply