C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Цвет выделения в StringGrid
** Petr
Отправлено: 22.04.2006, 00:09


Не зарегистрирован







Здравствуйте.

Как можно изменить цвет выделения в StringGrid (хочется посветлее как-то, повеселее)
Valdemar
Отправлено: 24.04.2006, 09:44


Мастер участка

Группа: Участник
Сообщений: 433



См. OnDrawCell
** Petr
Отправлено: 30.04.2006, 11:33


Не зарегистрирован







Это понятно. Это вобщем-то так и сделано. Но при этом приходится брать на себя и выравнивание текста в ячейке и т.д. Я понимаю, что свойство — цвет текста — обязательно имеется в классе TStringGrid, этот цвет ведь выбран кем-то при написании класса. Вот я и думаю — должна же быть возможность этот цвет изменять.
Valdemar
Отправлено: 02.05.2006, 10:07


Мастер участка

Группа: Участник
Сообщений: 433



Посмотрите исходники метода DrawCell, там, если я не ошибаюсь, прописан конкретный цвет, а не берется какое-то свойство.
esclkm
Отправлено: 06.05.2006, 15:53


Ученик-кочегар

Группа: Участник
Сообщений: 11



В свое время я полностью перерисовал грид, а цвет изменяется ну очень легко, просто надо преририсовать ячейки выделенную,

в событии ondrawcell пишешь, нечто вроде этого

CODE

TStringGrid *Box= ((TStringGrid*)Sender);
TCanvas *ACanvas=Box->Canvas;
if (State.Contains(gdSelected))
{
ACanvas->Brush->Color=clBlue;
ACanvas->FillRect(Rect);
ACanvas->Brush->Style=bsClear;
ACanvas->Font->Color=clRed;
DrawText(ACanvas->Handle,Box->Cells[ACol][ARow].c_str(),Box->Cells[ACol][ARow].Length(),
&Rect, DT_CENTER|DT_VCENTER|DT_SINGLELINE|DT_END_ELLIPSIS);
//Выводит текст ровно по центру, если, что заканчивает его Э...Э
}
if (State.Contains(gdFocused))
{

// remove the focus rect (i.e., XOR it away)
ACanvas->DrawFocusRect(Rect);
ACanvas->DrawFocusRect(TempRect);
}
ACanvas->Brush->Style=bsSolid;


Ну и все вроде... А вообще канва — замечательная вещь

Отредактировано esclkm — 06/05/2006, 15:59
Doga
Отправлено: 06.05.2006, 16:03


Мастер участка

Группа: Участник
Сообщений: 575



Господа! Может, лучше воспользоваться компонентом TRGrid? Там всё это уже реализовано и ничего дополнительно писать не нужно.


P.S. Скажете что это реклама? Ну что я могу Вам ответить ... biggrin.gif biggrin.gif biggrin.gif
esclkm
Отправлено: 10.05.2006, 01:24


Ученик-кочегар

Группа: Участник
Сообщений: 11



Честно говоря не знаю, !!! я люблю только стандартное... и свои руки...

Вернуться в Вопросы программирования в C++Builder