Page 1 of 1

SetBackgroundColour в wxListItem

Posted: Mon Aug 23, 2010 10:14 am
by Gera555
Добрый день.
Подскажите плз можно ли закрасить одну ячейку в 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? Если возможно то как?

Posted: Mon Aug 23, 2010 11:37 am
by borr_1

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);

Posted: Mon Aug 23, 2010 1:06 pm
by Gera555
Так и у меня работает. А так чтобы только одна ячейка?

В примере 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 или если только один столбец.
Если я не прав, то тогда не понял, что надо изменить?

Posted: Mon Aug 23, 2010 1:23 pm
by borr_1
Извини не так прочел да ты прав это на всю строку код. При твоем раскладе нужно пользоваться wxVListBox но там все самому перерисовывать или не морочить себе голову и взять Grid

Posted: Mon Aug 23, 2010 1:43 pm
by Gera555
Я не могу одно понять - это только с бекграундом не работает? Потому что в samples wxWidget применяется такой маневр, но только с добавлением иконки.

Posted: Mon Aug 23, 2010 2:14 pm
by borr_1
У меня тоже как col > 0 все ничего не происходит
Ребята переписывали ListCtrl там поминимуму изменений как я понял
http://forums.wxwidgets.org/viewtopic.p ... wxlistitem

ListCtrl использую редко честно говоря удивлен.