Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.06.30;
Скачать: CL | DM;

Вниз

TStringGrid   Найти похожие ветки 

 
RoadStar ©   (2003-06-17 13:39) [0]

Как в сабже сделать так, чтобы при выделении строки (обычно синий цвет фона и белый цвет фонта) цвет выделения был другим, а цвет фонта остался таким, каким он был до выделения (синий, красный и т.д.)
Заранее благодарен!


 
ggsoft ©   (2003-06-17 13:46) [1]

TStringGrid.OnDrawCell event.


 
Song ©   (2003-06-17 13:47) [2]

Цвет фонта - TStringGrid.Canvas.Font.Color
Цвет выделения - TStringGrid.Canvas.Brush.Color+TStringGrid.Canvas.FillRect()


 
RoadStar ©   (2003-06-17 14:07) [3]


> Song


Закрасить другим цветом получилось, а вот у фонта цвет не устанвливается!!!
Помоги, пожалйуста!!!


 
dataMaster ©   (2003-06-17 14:16) [4]

Поищи на этом сайте компонент VesColorStringGrid


 
RoadStar ©   (2003-06-17 14:18) [5]


> dataMaster


Спасибки за компонент, а тока хочется стандартным обойтись...
Может есть какие нибудь наработки или идеи?


 
dataMaster ©   (2003-06-17 14:39) [6]

Вот нашел в факах, но боюсь это несколько не то, но все же...


1. StringGrid
=============
Для раскрашивания будем использовать событие "OnDrawCell". Следующий код показывает, как сделать в Grid красный бэкраунд. Бэкграунд второй колонки будет зелёным.


procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);

Const //сдесь определяем Ваш цвет. Так же можно использовать
//цвета по умолчанию.
clPaleGreen = TColor($CCFFCC);
clPaleRed = TColor($CCCCFF);

begin

//Если ячейка получает фокус, то нам надо закрасить её другими цветами
if (gdFocused in State) then begin
StringGrid1.Canvas.Brush.Color := clBlack;
StringGrid1.Canvas.Font.Color := clWhite;
end
else //Если же ячейка теряет фокус, то закрашиваем её красным и зелёным

if ACol = 2 //Вторая колонка будет зелёной , другие - ячейки красными
then StringGrid1.Canvas.Brush.color := clPaleGreen
else StringGrid1.canvas.brush.Color := clPaleRed;

//Теперь закрасим ячейки, но только, если ячейка не Title- Row/Column
//Естевственно это завит от того, есть у Вас title-Row/Columns или нет.

If (ACol > 0) and (ARow>0) then
begin
//Закрашиваем бэкграунд
StringGrid1.canvas.fillRect(Rect);

//Закрашиваем текст (Text). Также здесь можно добавить выравнивание и т.д..
StringGrid1.canvas.TextOut(Rect.Left,Rect.Top,StringGrid1.Cells[ACol,ARow]);
end;
end;



Если Вы захотите чтобы цвет ячеек менялся в зависимости от значения в них, то можно заменить 3 линии (if Acol = 2 ......) на что-нибуть вроде этого

if StringGrid1.Cells[ACol,ARow] = "highlight it"
then StringGrid1.Canvas.Brush.color := clPalered
else StringGrid1.canvas.brush.Color := clwhite;


 
Song ©   (2003-06-17 15:21) [7]

2RoadStar © (17.06.03 14:07)
http://pascal.sources.ru/cgi-bin/forum/YaBB.cgi?board=delphi;action=display;num=1037272197



Страницы: 1 вся ветка

Текущий архив: 2003.06.30;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.021 c
7-97914
Женя
2003-04-21 11:05
2003.06.30
Звук с помощью системного динамика


11-97573
Gandalf
2002-10-11 23:12
2003.06.30
Кладову. Извините...


1-97670
KPY
2003-06-17 08:18
2003.06.30
Как два байта преобразовать в слово


1-97651
R
2003-06-20 06:42
2003.06.30
Создание свойств в компаненте


1-97741
konstantinov
2003-06-17 23:19
2003.06.30
Как перехватить изменение размеров компонента?