Текущий архив: 2004.08.22;
Скачать: CL | DM;
Вниз
Цвет ячейки в StringGrid Найти похожие ветки
← →
Горбатов В.Ю. (2004-08-06 08:06) [0]Сразу говорю, что перерыл кучу ссылок, пролистал множество страниц, но дельного решения пока нет.
Проблема: В StringGrid"е задаю календарь на месяц из определенной базы. Но реально выделить именно выходные и праздничные дни другим цветом пока никак. Т.е. нужно динамически изменять цвета в определенных ячейках при перемещении по месяцам.
В OnDrawCell получается задать цвета только статически.
Помогите, плиз, заранее спасибо!
← →
olookin © (2004-08-06 08:12) [1]А что значит "получается статически"?
← →
Думкин © (2004-08-06 08:24) [2]А ты применяй не константы, а пременные, или никак?
← →
KSergey © (2004-08-06 08:31) [3]Код OnDrawCell - в студию!
← →
Алхимик © (2004-08-06 08:39) [4]
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
Анализируешь ACol, ARow и Cells[ACol, ARow]
← →
Леприкон © (2004-08-06 08:40) [5]По поводу выходных. Я так понимаю, это столбцы Index и Index+1.
Так что мешает в OnDrawCell проверять if (ACol=Index) or (ACol=Index+1) и менять цвет?
← →
TUser © (2004-08-06 09:05) [6]
unit uMyStringGrid;
interface
uses
SysUtils, Classes, Controls, Grids, Graphics, types, windows;
type
TOnCanFill = procedure (Sender:TObject; ACol, ARow:longint; var Fill:boolean) of object;
TMyStringGrid = class(TStringGrid)
private
FFillColor:TColor;
FOnCanFill:TOnCanFill;
protected
procedure DrawCell(ACol, ARow: Longint; ARect: TRect;
AState: TGridDrawState); override;
published
property FillColor:TColor read FFillColor write FFillColor;
property OnCanFill:TOnCanFill read FOnCanFill write FOnCanFill;
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents("Aksianov", [TMyStringGrid]);
end;
procedure TMyStringGrid.DrawCell(ACol, ARow: Longint; ARect: TRect;
AState: TGridDrawState);
var CanFill:boolean;
begin
CanFill:=false;
if assigned (FOnCanFill) then
FOnCanFill(Self,ACol,ARow,CanFill);
if CanFill then
with Self.Canvas do
Brush.Color:=FFillColor;
inherited;
if CanFill then
Brush.Color:=clWhite;
end;
end.
← →
olookin © (2004-08-06 09:06) [7]Автор вероятно разумел под динамическим изменением прорисовку при перемещении по гриду? Тогда рисовать в StringGridOnTopLeftChange
Страницы: 1 вся ветка
Текущий архив: 2004.08.22;
Скачать: CL | DM;
Память: 0.46 MB
Время: 0.022 c