![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Цвет ячейки в StringGrid [D7, WinXP]
Горбатов В.Ю. © (2004-08-06 08:06:00)Сразу говорю, что перерыл кучу ссылок, пролистал множество страниц, но дельного решения пока нет.
Проблема: В StringGrid'е задаю календарь на месяц из определенной базы. Но реально выделить именно выходные и праздничные дни другим цветом пока никак. Т.е. нужно динамически изменять цвета в определенных ячейках при перемещении по месяцам.
В OnDrawCell получается задать цвета только статически.
Помогите, плиз, заранее спасибо!
olookin (2004-08-06 09:06:00) [1]Автор вероятно разумел под динамическим изменением прорисовку при перемещении по гриду? Тогда рисовать в StringGridOnTopLeftChange
TUser (2004-08-06 09:05:00) [2]
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.
Леприкон (2004-08-06 08:40:00) [3]По поводу выходных. Я так понимаю, это столбцы Index и Index+1.
Так что мешает в OnDrawCell проверять if (ACol=Index) or (ACol=Index+1) и менять цвет?
Алхимик (2004-08-06 08:39:00) [4]
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
Анализируешь ACol, ARow и Cells[ACol, ARow]
KSergey (2004-08-06 08:31:00) [5]Код OnDrawCell - в студию!
Думкин (2004-08-06 08:24:00) [6]А ты применяй не константы, а пременные, или никак?
olookin (2004-08-06 08:12:00) [7]А что значит "получается статически"?