Как строки сделать выделенными
В моей задаче у блока строк меняется фон и цвет текста в зависимости от нажатия на ЧекЛистБокс при выполнении события
TColumnEh *Column, TFont *AFont, TColor &Background,
TGridDrawState State)
{
TDBGridEh * Eh_Oper = (TDBGridEh *)Sender;
for(int i = 0;i < RxCheckListBox1->Items->Count;i++)
{
if(RxCheckListBox1->Checked)
if(Eh_Oper->DataSource->DataSet->FieldByName("GostID")->AsString.Trim().SubString(1,2) == RxCheckListBox1->Items->Strings)
{
AFont->Color = clRed;
Background = TColor(0x00C6FFFF);
break;
}
}
}
И здесь строки не считаются выделенными (даже нет индикаторов). Мне нужно дальше работать с этими строками (например, скопировать из Грида в другую таблицу), но по какому признаку их обнаружить, не знаю. Пробовала создать условие по цвету фона и шрифта, не понимает программа.
Может в событии OnGetCellParams написать какой-то код, который будет выделять каждую строку в цикле? Подскажите, что делать?
У компонента DBGridEh есть событие DBGridEh2DrawColumnCell, с помощью которого можно поменять фон строк и цвет шрифта. При щелчке на строке (или ячейке) строка приобретает статус выделенной (меняется даже вид индикатора), и с нею можно потом работать по условию
В моей задаче у блока строк меняется фон и цвет текста в зависимости от нажатия на ЧекЛистБокс при выполнении события
И здесь строки не считаются выделенными (даже нет индикаторов). Мне нужно дальше работать с этими строками (например, скопировать из Грида в другую таблицу), но по какому признаку их обнаружить, не знаю. Пробовала создать условие по цвету фона и шрифта, не понимает программа.
Может в событии OnGetCellParams написать какой-то код, который будет выделять каждую строку в цикле? Подскажите, что делать?
Попробуй для этих строк в таблице установить закладку (Bookmark) и при копировании их обрабатывать.
Попробуй для этих строк в таблице установить закладку (Bookmark) и при копировании их обрабатывать.
Видимо, у меня здесь полный пробел в знаниях.
Совершенно не знаю, как у строк делается закладка. Просвятите, пожалуйста. И где можно почитать по теме?
Видимо, у меня здесь полный пробел в знаниях.
Совершенно не знаю, как у строк делается закладка. Просвятите, пожалуйста. И где можно почитать по теме?
Это пример из хелпа
{
TBookmark SavePlace; //одна закладка
Variant PrevValue;
SavePlace = Table1->GetBookmark(); //запоминаем текущее место в таблице (создаем закладку)
Table1->FindPrior();// уходим в другое место таблицы
PrevValue = Table1->Fields->Fields[0]->Value; // читаем значение поля
Table1->GotoBookmark(SavePlace); //возвращаемся к закладке
Table1->Fields->Fields[0]->Value = PrevValue; // и заменяем данные
Table1->FreeBookmark(SavePlace); //Убираем закладку
}
Я думаю вам нужно организовать массив закладок размерности равной размеру списка. Каждую строку checked запомнить в соответсвующую закладку списка. А при копировании брать нужные закладки из массива переходить на них и копировать соответсвующие строки таблицы в другую.