Цвета текста, ячеек, столбцов и колонок
Code: |
procedure TFormHistory.ListHistoryDrawCell(Sender: TObject; Col, Row: Integer; Rect: TRect; State: TGridDrawState); var S: string; DrawRect: TRect; CurrentColor: TColor; begin // Определяем цвет строки в зависимости типа Imcoming if (Sender as TStrinGgrid).Cells[COLUMN_INCOMING , Row ] = '1' then CurrentColor:=clBlue else CurrentColor:=clMaroon;
if (Sender as TStrinGgrid).Row = Row then CurrentColor := clHighlightText;
(Sender as TStrinGgrid).Canvas.font.color := CurrentColor; S:= (Sender as TStrinGgrid).Cells[ Col, Row ]; if (Col = COLUMN_MESSAGE ) and (Row <> ROW_HEADER) then begin if Length(S) > 0 then begin DrawRect:=Rect; DrawText((Sender as TStrinGgrid).Canvas.Handle, Pchar(S), Length(S), DrawRect, dt_calcrect or dt_wordbreak or dt_left ); if (DrawRect.bottom - DrawRect.top) > (Sender as TStrinGgrid).RowHeights[Row] then (Sender as TStrinGgrid).RowHeights :=(DrawRect.bottom - DrawRect.top) else begin DrawRect.Right:=Rect.Right; (Sender as TStrinGgrid).Canvas.FillRect( DrawRect ); DrawText((Sender as TStrinGgrid).Canvas.Handle, Pchar(S), Length(S), DrawRect, dt_wordbreak or dt_left); end; end; end else if Row <> ROW_HEADER then (Sender as TStrinGgrid).Canvas.Textout(rect.left+3, rect.top+3 , S ); end;
|
- Подробности
- Родительская категория: StringGrid
- Категория: Цвета текста, ячеек, столбцов и колонок
...вы можете попробовать использовать StringGrid. У него имеется свойство Objects, через которое вы можете назначать объекты. Создайте объект, содержащий переменную типа TColor, и назначьте это Objects[col,row], что позволит иметь к нему доступ в любое время. Назначьте событие OnDrawCell StringGrid, позволяющее рисовать текст ячейки правильного цвета. Чтобы убедиться, что ячейка выбрана, воспользуйтесь свойством Selection, содержащим то, что выбрал пользователь. Все это должно выглядеть приблизительно так:
- Подробности
- Родительская категория: StringGrid
- Категория: Цвета текста, ячеек, столбцов и колонок
Автор: Neil J. Rubenking
...если я щелкаю на любой ячейке StringGrid2, последняя выбранная ячейка в StringGrid1 становится синей...
Создайте обработчик (если он отсутствует) события сетки OnDrawCell и включите в него следующий код:
- Подробности
- Родительская категория: StringGrid
- Категория: Цвета текста, ячеек, столбцов и колонок
Ниже представлен юнит, который позволяет поместить текст в String Grid с символами различного цвета:
- Подробности
- Родительская категория: StringGrid
- Категория: Цвета текста, ячеек, столбцов и колонок
Автор: Alex Schlecht
StringGrids / DBGrids с цветными ячейками смотрятся очень красиво, и Вы можете информировать пользователя о важных данных внутри Grid.
Совместимость: все версии Delphi
К сожалению, невозможно применить один и тот же метод к StringGrids и к DBGrids. Итак сперва рассмотрим как это сделать в StringGrid:
1. StringGrid
=============
Для раскрашивания будем использовать событие "OnDrawCell". Следующий код показывает, как сделать в Grid красный бэкраунд. Бэкграунд второй колонки будет зелёным.
- Подробности
- Родительская категория: StringGrid
- Категория: Цвета текста, ячеек, столбцов и колонок