![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Колонки TStringGrid [D6, WinXP]
Бывший студент © (2005-04-11 02:47:00)Создается компонент с предком TStringGrid. Необходимо задавать стиль данных (шрифт, размер шрифта, цвет, выравнивание) для каждой колонки.
Я думаю создать property типа TFont для каждой колонки, но не ясно как привязать количество property к ColCount. Буду рад услышать ваши соображения по этому поводу.
Бывший студент (2005-04-12 00:30:00) [1]Параметр ARect в данном случае даёт всего лишь выравнивание текста.
MBo (2005-04-11 19:59:00) [2]>Canvas.TextOut( 1, 1,Cells[ACol, ARow]);
А параметр ARect на что даден?
Бывший студент (2005-04-11 19:31:00) [3]Допустим, в одном из элементов коллекции устанавливается цвет, стиль шрифта сфокусированной ячейки. Делаю так:
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], цвета меняются только в нулевой колонке.
Юрий Зотов (2005-04-11 10:19:00) [4]Выравнивание - это уже не TFont. Могут понадобиться и другие свойста, которых в TFont тоже нет.
Я бы вживил в компонент коллекцию, а в элемент этой коллекции - все нужные свойства (включая TFont) и ссылку на колонку, которую этот элемент обслуживает. Синхронизировать добавление/удаление колонок и элементов этой коллекции - не проблема.