Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.039 c
2-1131275441
zaN0za
2005-11-06 14:10
2005.11.27
Integer->PChar->Integer. как?


14-1131008444
pavel_guzhanov
2005-11-03 12:00
2005.11.27
посоветуйте бесплатный хостинг


2-1131466080
scorp123
2005-11-08 19:08
2005.11.27
Проблема с индексом


1-1130915780
Zhekson
2005-11-02 10:16
2005.11.27
Как обработать непосредственно нажатие на крестик(закрытие формы)


14-1131439663
Vanya95
2005-11-08 11:47
2005.11.27
Быстрый перенос настроек одной уч.записи в другую в Windows XP




   Наверх