Форум: "Основная";
Текущий архив: 2003.06.30;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.008 c