Форум: "Компоненты";
Текущий архив: 2005.11.27;
Скачать: [xml.tar.bz2];
ВнизКолонки 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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.012 c