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

Вниз

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

 
Бывший студент ©   (2005-04-11 02:47) [0]

Создается компонент с предком TStringGrid. Необходимо задавать стиль данных (шрифт, размер шрифта, цвет, выравнивание) для каждой колонки.
Я думаю создать property типа TFont для каждой колонки, но не ясно как привязать количество property к ColCount. Буду рад услышать ваши соображения по этому поводу.


 
Юрий Зотов ©   (2005-04-11 10:19) [1]

Выравнивание - это уже не TFont. Могут понадобиться и другие свойста, которых в TFont тоже нет.

Я бы вживил в компонент коллекцию, а в элемент этой коллекции - все нужные свойства (включая TFont) и ссылку на колонку, которую этот элемент обслуживает. Синхронизировать добавление/удаление колонок и элементов этой коллекции - не проблема.


 
Бывший студент ©   (2005-04-11 19:31) [2]

Допустим, в одном из элементов коллекции устанавливается цвет, стиль шрифта сфокусированной ячейки. Делаю так:

type TMyGrid= class(TStringGrid)
.
protected
procedure DrawCell(ACol, ARow: Longint;
   ARect: TRect; AState: TGridDrawState); override;
end;
implementation
.
procedure TMyGrid.DrawCell(ACol, ARow: Longint;
   ARect: TRect; AState: TGridDrawState);
var Rect: TRect;
const clPaleGreen = TColor($CCFFCC);
     clPaleRed = TColor($CCCCFF);
begin
 //Если ячейка получает фокус, то нам надо закрасить её другими цветами
 if (gdFocused in AState) then
 begin
   Canvas.Brush.Color := clBlack;
   Canvas.Font.Color := clWhite;
   Canvas.Font.Style := [fsBold];
 end
 else //Если же ячейка теряет фокус, то закрашиваем её красным и зелёным
   if ACol = 2 then //Вторая колонка будет зелёной , другие - ячейки красными
     Canvas.Brush.color := clPaleGreen
   else
     canvas.brush.Color := clPaleRed;

 
 if (ACol > 0) and (ARow > 0) then
 begin
   Canvas.FillRect(Rect);
   Canvas.TextOut(1, 1, Cells[ACol, ARow]);
 end;
end;

В run-time текст из всех ячеек оказывается в Cells[0,0], цвета меняются только в нулевой колонке.


 
MBo ©   (2005-04-11 19:59) [3]

>Canvas.TextOut(1, 1, Cells[ACol, ARow]);

А параметр ARect на что даден?


 
Бывший студент ©   (2005-04-12 00:30) [4]

Параметр ARect в данном случае даёт всего лишь выравнивание текста.



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

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

Наверх




Память: 0.47 MB
Время: 0.033 c
1-1130837427
kyn66
2005-11-01 12:30
2005.11.27
Анимация виснет во время процесса.


2-1131380771
NORDmen
2005-11-07 19:26
2005.11.27
глюк с form.componets[ ] из dll


14-1130876502
LordOfRock
2005-11-01 23:21
2005.11.27
Winamp


14-1131350080
Seg
2005-11-07 10:54
2005.11.27
FastReport3


9-1121415743
NeedleWTF
2005-07-15 12:22
2005.11.27
Загрузка модели в GLscene